Python中的语言检测

尽管我们作为人类知道一些语言,但当我们处理混合语言的数据集时,这是不足够的,因为我们必须识别文本或文件中使用的语言才能继续进行。因此,在这种情况下,适应语言检测方法可以帮助我们。

为了检测语言,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('你好世界!'))

输出:

Python中的语言检测

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))

输出:

Python中的语言检测

textblob

textblob 是另一个API,使用谷歌翻译的语言检测器来执行文本数据。它在 (自然语言工具包)和 模块的帮助下发挥得很好,这些模块被认为是Python中的巨头。NLTK pattern

这个简单的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 库已经被废弃,上述代码显示的是一个错误,而不是一个准确的输出。因此,不建议使用这种方法;相反,我们可以使用谷歌翻译API。

在这里了解更多关于TextBlob

除了上述API和库,我们还有googletransFastTextSpacypolyglotpycldchardetguess language ,以及更多。根据使用情况,我们也可以使用它们。

其中,polyglotFastText 是最好的长文本库,具有很高的准确性。另外,polyglotpycld 可以检测文本中的多种语言。

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

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

除了使用库或API,我们还可以通过使用语言模型或交叉集来检测语言。

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

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

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

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

下面的方法我们可以检测语言,就是使用交叉集。在这里,我们用每种语言中最频繁的词来准备N 集,并将文本与每个集相交。

然后,检测到的语言是有更多交叉点的集合。

结论

总的来说,Python检测语言的系统方法使用库和API。但是它们由于准确性、语言覆盖率、速度和内存消耗而有所不同。

我们可以选择合适的库,并根据使用情况建立模型。

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