确定文本是否为英语?

2024-06-06 22:58:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我同时使用NltkScikit Learn来做一些文本处理。但是,在我的文档列表中,我有一些不是英文的文档。例如,以下情况可能是正确的:

[ "this is some text written in English", 
  "this is some more text written in English", 
  "Ce n'est pas en anglais" ] 

为了便于分析,我希望在预处理过程中删除所有非英语句子。但是,有什么好办法可以做到这一点吗?我一直在谷歌搜索,但找不到任何具体的东西,让我识别字符串是否是英语。这是不是在NltkScikit learn中没有提供的功能?编辑我见过像thisthis这样的问题,但都是针对单个单词的。。。不是“文件”。我需要把一个句子中的每个单词都循环一遍,以检查整个句子是否是英语的吗?

我正在使用Python,所以使用Python的库会更好,但是如果需要的话,我可以切换语言,只是认为Python是最好的。


Tags: textin文档列表englishissomescikit
3条回答

你可能对我的论文感兴趣。我还对一些工具进行了基准测试。

TL;博士:

  • CLD-2相当不错,速度非常快
  • lang-detect稍好一点,但慢得多
  • langid很好,但是CLD-2和lang检测更好
  • NLTK的Textcat既没有效率也没有效率。

您可以安装^{}并对语言进行分类:

$ lidtk cld2 predict --text "this is some text written in English"
eng
$ lidtk cld2 predict --text "this is some more text written in English"
eng
$ lidtk cld2 predict --text "Ce n'est pas en anglais"                  
fra

使用魔法库

import enchant

dictionary = enchant.Dict("en_US") #also available are en_GB, fr_FR, etc

dictionary.check("Hello") # prints True
dictionary.check("Helo") #prints False

这个例子直接取自他们的website

有一个叫做langdetect的库。它是从谷歌的语言检测移植而来的,可在这里获得:

https://pypi.python.org/pypi/langdetect

它支持55种现成的语言。

相关问题 更多 >