2009-07-22 57 views
9

我正在寻找一种方法来自动确定网站页面使用的自然语言,因为它的URL。根据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 Natural Language Detection API工作得很好(如果不是我见过的最好的)。但是,它是Javascript和他们的TOS禁止自动使用它。

回答

8

这通常通过使用字符n-gram模型来完成。您可以找到here Java的最新语言标识符。如果你需要一些帮助将它转换为Python,请问。希望能帮助到你。

1

nltk可能会有帮助(如果你必须要处理页面的文本,即如果标题和url本身不能确定你的目的语言足够好);我不认为NLTK直接提供了一个“告诉我这个文本使用哪种语言”的功能(虽然NLTK很大并且不断增长,所以它实际上可能有),但是你可以尝试根据各种可能的方式解析给定的文本自然语言并根据每种语言的规则检查哪些语言给出了最明智的语法分析,wordset,& c。

0

没有一种通用的方法可以单独使用URL。您可以检查top-level domain以获得一些想法,并查找可能指示某种语言(例如两个斜线之间的“en”或“es”)的URL部分,并假设任何未知的内容都是英文的,但它不是'一个完美的解决方案。

据我所知,确定页面使用的自然语言的唯一通用方法是抓取页面的文本并检查每种语言中的某些常见单词。例如,如果页面中出现多次“a”,“an”和“the”,则可能包含英文文本; “el”和“la”可能会提示西班牙语;等等。

3

没有任何关于URL本身将指示语言。

一种选择是使用natural language toolkit来尝试根据内容识别语言,但即使您可以使NLP部分工作,它也会非常缓慢。此外,它可能不可靠。请记住,大多数用户代理通过类似

Accept-Language: en-US 

与每个请求,并且许多大型网站将根据该标头提供不同的内容。较小的网站会更可靠,因为他们不会注意语言标题。

您还可以使用GeoIP作为语言的代理服务器位置(即服务器所在的国家/地区)。这显然不完美,但比使用顶级域名要好得多。

+0

地理位置是完全无用的。世界上有很多地方有多种语言共存。网站也可能有多种语言版本 – 2009-07-22 19:25:43