我正在寻找一种方法来自动确定网站页面使用的自然语言,并给出其URL。
在Python中,函数如:
def LanguageUsed (url):
#stuff
返回语言说明符(例如英语为'en',日语为'jp'等)
结果摘要: 我有一个使用code from the PyPi for oice.langdet在Python中工作的合理解决方案。 它在区分英语和非英语方面做得不错,这是我目前所需要的。请注意,您必须使用Python urllib获取html。另外,oice.langdet是GPL许可证。
有关使用Python中的Trigrams的更一般解决方案,请参阅此Python Cookbook Recipe from ActiveState。
Google自然语言检测API运行良好(如果不是我见过的最好的话)。但是,它是Javascript和他们的TOS禁止自动使用它。
答案 0 :(得分:8)
这通常通过使用字符n-gram模型来完成。您可以找到here最先进的Java语言标识符。如果您需要一些帮助将其转换为Python,请询问。希望它有所帮助。
答案 1 :(得分:6)
你最好的选择是使用Google's natural language detection api。它返回页面语言的iso代码,带有概率索引。
答案 2 :(得分:3)
网址本身没有任何表示语言的内容。
一种选择是使用natural language toolkit尝试根据内容识别语言,但即使你可以让NLP部分工作,它也会很慢。此外,它可能不可靠。请记住,大多数用户代理都会传递类似
的内容Accept-Language: en-US
每个请求,许多大型网站将根据该标头提供不同的内容。较小的网站将更可靠,因为他们不会注意语言标题。
您还可以使用服务器位置(即服务器所在的国家/地区)作为使用GeoIP的语言代理。这显然不是完美的,但它比使用TLD要好得多。
答案 3 :(得分:3)
您可能想尝试基于ngram的检测。
TextCat DEMO(LGPL)似乎工作得很好(识别近70种语言)。 Thomas Mangin here使用相同的语料库提供了一个python端口。
编辑:TextCat competitors page也提供了一些有趣的链接。
Edit2:我想知道为http://www.mnogosearch.org/guesser/制作一个python包装器是不是很难......
答案 4 :(得分:1)
nltk可能有所帮助(如果你必须开始处理页面的文本,即标题和网址本身并不能很好地确定语言);我不认为NLTK直接提供“告诉我这个文本在哪种语言中”功能(虽然NLTK很大并且不断增长,所以它实际上可能有它),但你可以尝试根据各种可能解析给定的文本自然语言,并根据每种语言的规则检查哪些语言提供最明智的解析,字集和& c。
答案 5 :(得分:0)
没有一种通用方法只适用于URL。您可以检查top-level domain以获得一些想法,并查找可能表示某种语言的URL部分(如两个斜杠之间的“en”或“es”),并假设任何未知的内容都是英文,但这不是一个完美的解决方案。
据我所知,确定页面使用的自然语言的唯一一般方法是获取页面的文本并检查每种语言中的某些常用词。例如,如果“a”,“an”和“the”在页面中出现多次,则可能包含英文文本; “el”和“la”可能暗示西班牙语;等等。
答案 6 :(得分:0)
在Python中,langdetect包(found here)可以做到这一点。 它基于Google的自动语言检测功能,默认情况下支持55种语言。
通过使用
安装pip install langdetect
然后例如运行
from langdetect import detect
detect("War doesn't show who's right, just who's left.")
detect("Ein, zwei, drei, vier")
分别返回“ en”和“ de”。