2009-07-22 48 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