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('你好世界!'))
输出:
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))
输出:
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和库,我们还有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。但是它们由于准确性、语言覆盖率、速度和内存消耗而有所不同。
我们可以选择合适的库,并根据使用情况建立模型。
当模型只依赖于一种语言时,其他语言可以被认为是噪音。语言检测是数据清理的一个步骤;因此,我们可以通过检测语言获得无噪音的数据。