2012-07-16 135 views
4

我正在写一个Bot,可以检查成千上万的网站,无论他们是英文或不是。python网站语言检测

我使用Scrapy(蟒蛇2.7框架)爬行每个网站的第一页,

可以有人建议我这是检查网站语言的最佳途径,

任何帮助,将不胜感激。

回答

1

查找到Natural Language Toolkit

NLTKhttp://nltk.org/

你想看看什么into正在使用corpus来提取由NLTK设置的默认词汇表:

nltk.corpus.words.words()

然后,使用difflib比较您的文本与上面的内容。

参考http://docs.python.org/library/difflib.html

使用这些工具,你可以创建一个规模来衡量你的文字和NLTK定义的英文单词之间所需的区别。

+0

在高效的资源爬行器这是我将添加到我的管道底部某处tbh – 2012-07-16 15:33:59

+0

更新:NLTK现在提供[语言识别模块](http://www.nltk.org/api/nltk.classify.html#module-nltk .classify.textcat) – avip 2016-03-15 06:03:39

2

您可以使用响应标题,以了解:

Wikipedia

+0

每个网站都有内容语言属性吗?我没有太多的网站曝光? – 2012-07-16 15:22:29

+1

可能是http协议的一部分,它是在没有其他依赖的情况下满足您的需求的最简单方法。如果它不适合您的需求,可以随时扩展到其他措施。您可能需要一个回退管道,例如 – 2012-07-16 15:32:29

+0

可以请您帮助我更多关于您的“您可能需要回退管道”这些词。 – 2012-07-16 15:40:01

4

既然你使用Python,你可以尝试NLTK。更准确地说,你可以检查NLTK.detect

的更多信息和准确的代码片段是在这里:NLTK and language detection

2

如果这些网站是多语言,您可以发送“Accept-Language:en-US,en; q = 0.8”标题,并希望该回复为英文。如果他们不是,你可以检查“response.headers”字典,看看你是否可以找到有关该语言的任何信息。

如果仍然不吉利,您可以尝试将IP映射到国家,然后以某种方式映射到语言。作为最后一个资源,尝试检测语言(我不知道这是多么准确)。

0

如果一个html网站使用非英文字符,它会在元标记的网页源代码中提及。这有助于浏览器知道如何呈现页面。

这里是关闭一个阿拉伯语网站http://www.tanmia.ae同时具有英文页面和阿拉伯语网页的例子

在阿拉伯语页面meta标签是: 元HTTP的当量=“X-UA兼容” CONTENT =” IE =边缘

相同的页面但英文是 meta http-equiv =“Content-Type”content =“text/html;字符集= UTF-8“/

也许有机器人看看元标记,如果它的英语,然后进行其他忽略?

0

如果你不想相信什么网页告诉你,但要检查自己,你可以使用语言检测统计算法。基于三元模型的算法是稳健的,并应与大多在另一种语言,但有一点英文的网页运行良好(以蒙混像启发式“检查的话的,并且,在页面上)谷歌“ngram语言分类”,你会发现很多关于它是如何完成的参考资料。

很容易编译你自己的英语三字词表,但Natural Language Toolkit带有一套用于几种常见语言的集合。 NLTK_DATA/corpora/langid。您可以在不使用nltk库本身的情况下使用trigram数据,但您可能还需要查看nltk.util.trigrams模块。

2

如果您使用的是Python,我强烈推荐Marco Lui和Tim Baldwin编写的独立模块LangID。 该模型是预先训练过的,而且角色检测的准确性很高。它也可以处理XML/HTML文档。

1

您可以使用语言检测API http://detectlanguage.com 它通过GET或POST接受文本字符串并提供带有分数的JSON输出。 有免费和高级服务。