2012-07-16 133 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輸出。 有免費和高級服務。