用Python检测英文文本

7 投票
2 回答
8181 浏览
提问于 2025-04-17 18:12

我知道这个问题已经被问过很多次了,但我还是没能用“现有”的解决方案解决它。希望能得到一些新的想法或者概念,来检测我的句子是否是英文的。现有的解决方案有:

  • 语言检测器(是用Ruby写的,不是Python :/)
  • 谷歌翻译API v2(不再免费,得每月支付20美元,而我这个项目是为了学术目的。免费额度:每天0个字符)
  • Python的语言识别(找不到源代码,下面有链接。自动语言识别
  • Enchant(这个不支持Python 2.7吗?我对Python还很陌生,有什么指南吗?我觉得这可能是我需要的)
  • NLTK中的Wordnet(我不知道为什么“wordnet.synsets”缺失,只有“wordnet.Synset”可用。解决方案中的示例代码对我也不管用 T_T,可能又是版本问题?)
  • 把英文单词存到列表中,然后比较单词是否存在(嗯,这种方法不太好,因为句子来自Twitter,你也知道的 :P)

有效的解决方案

经过一系列尝试,以下是有效的解决方案(替代上面的列表)

  • 维基词典API(使用Urllib2和simplejson来解析。然后检查键是否为-1,表示单词不存在。否则就是英文。当然,使用在Twitter上时,需要先处理单词,去掉特殊字符,比如@、#、?!。关于如何找到键,可以参考这里。Simplejson和随机键值
  • Dogukan Tufekci的回答(已选中)(缺点:如果句子短于20个字符,就必须安装PyEnchant,否则会返回UNKNOWN。而且PyEnchant不支持Python 2.7,意味着无法安装,短于20个字符的句子也无法使用)

参考资料

2 个回答

1

你可以考虑使用隐马尔可夫模型来识别语言,每种语言都有自己独特的特点。

8

你可以试试我在guess_language这个库,它是我通过Miguel Grinberg的Flask超级教程找到的。这个库看起来支持Python 2和3,所以应该没问题。

撰写回答