迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的语言检测

作者:迹忆客 最近更新:2023/06/20 浏览次数:

尽管我们作为人类知道几种语言,但当我们处理混合语言的数据集时,这还不够,因为我们必须识别文本或文档中使用的语言才能继续该过程。 因此,在这种情况下,适应语言检测方法会有所帮助。

为了检测语言,Python 有不同的语言检测库。 我们可以选择最适合我们的,因为用于语言检测的 Python 库可以识别表达式中的字符和内容中的常用词。

我们可以使用自然语言处理或机器学习来构建模型来检测语言和 Python 库。 例如,当 Chrome 检测到网页内容不是英文时,它会弹出一个带有翻译按钮的框。

这种情况背后的想法是 Chrome 正在使用一个模型来预测网页上使用的文本语言。


在 Python 中使用库和 API 进行语言检测

我们在 Python 中使用的第一种检测语言的方法是库或 API。 让我们看看我们可以在 Python 中用于语言检测的最常用的库。

langdetect

langdetect 也是谷歌的语言检测库,需要像以前的模块一样安装,因为它没有随标准实用程序模块一起提供。

此 API 在文本处理和语言学方面很有用,支持 55 种语言。

Python 版本应为 2.7 或 3.4+ 才能使用此 API。 我们可以安装 langdetect API,如下所示。

$ pip install langdetect

导入 detect 模块后,我们可以使用 langdetect API 来检测语言。 之后,代码打印给定句子的检测到的语言。

这里我们提供了三个句子作为例子,它分别显示他们的语言为英语(en)、意大利语(pt)和中文(ko)。

代码:

from langdetect import detect

print(detect('Hello World!'))
print(detect('Ciao mondoe!'))
print(detect('你好世界!'))

输出:

langdetect

langid

langid 是另一个用于检测具有最小依赖性的语言名称的 API。 它也是一个独立的语言识别工具,可以检测 97 种语言。

要安装,我们必须在终端中键入以下命令。

$ pip install langid

使用下面的方法,我们可以使用 langid 库检测语言。 与在 TextBlob 中一样,在循环时,它会看到三个句子的语言,并打印出每个句子的受尊重语言,如英语 (it)、意大利语 (gl) 和中文 (zh)。

代码:

import langid

T = ['Hello World!', 'Ciao mondoe!', '你好世界!' ]

for i in T:
    print(langid.classify(i))

输出:

langid

textblob

extblob 是另一个使用谷歌翻译的语言检测器来处理文本数据的 API。 它在 NLTK(自然语言工具包)和模式模块(被认为是 Python 中的巨人)的帮助下运行良好。

这个简单的 API 执行情感分析、名词短语提取、词性标记、分类等,而不是检测语言。

要使用此 API,Python 版本应高于或等于 2.7 或 3.5,并且需要互联网连接。

我们必须使用 pip 命令安装包。

$ pip install textblob

之后,我们可以通过导入模块 TextBlob 来检测语言。 在这里,我们将三个不同语言的句子分配给名为“T”的数组。

在循环 for 循环时,它会检测三个句子的措辞并将它们打印出来。

代码:

from textblob import TextBlob

T = ['Hello World!', 'Bonjour le monde!', '你好世界!' ]

for i in T:
    lang = TextBlob(i)
    print(lang.detect_language())

由于 textblob 库已被弃用,上面的代码显示错误而不是准确的输出。 所以,不推荐使用这种方法; 取而代之的是,我们可以使用 Google Translate API。

除了上述 API 和库,我们还有 googletrans、FastText、Spacy、polyglot、pycld、chardet、guess language 等等。 根据用例,我们也可以使用它们。

其中,polyglot 和 FastText 是高精度长文本的最佳库。 此外,polyglot 和 pycld 可以检测文本中的多种语言。

googletrans 是一个免费的 Python 库,它允许我们发出无限制的请求。 它可以自动检测语言并且快速可靠。

FastText 是一个文本分类器,可以识别 176 种语言并提供更快、更准确的输出。 Facebook 使用的语言检测库是 FastText。

除了使用库或 API 之外,我们还可以使用语言模型或相交集来检测语言。


在 Python 中使用语言模型进行语言检测

在这里,模型给出了一个单词序列的概率,我们可以为每种得分最高的语言使用 N 个语言模型。

这些语言模型使我们能够检测文本的语言,即使它包含多种语言。


在 Python 中使用相交集进行语言检测

下面我们可以检测语言的方法是使用相交集。 在这里,我们准备了 N 个集合,其中包含每种语言中最常见的单词,并将文本与每个集合相交。

那么检测到的语言就是有更多交集的集合。


总结

总体而言,Python 检测语言的系统方法使用库和 API。 但它们在准确性、语言覆盖范围、速度和内存消耗方面有所不同。

我们可以根据用例选择合适的库并构建模型。

当模型只依赖于一种语言时,其他语言可以被认为是噪音。 语言检测是数据清洗的一个步骤; 因此,我们可以通过检测语言来获得无噪声数据。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便