私は、英語かどうかに関係なく、何千ものウェブサイトをチェックできるボットを書いています。
各ウェブサイトの最初のページをクロールするために Scrapy (python 2.7 フレームワーク) を使用しています。
ウェブサイトの言語を確認する最良の方法を教えてください。
任意の助けをいただければ幸いです。
私は、英語かどうかに関係なく、何千ものウェブサイトをチェックできるボットを書いています。
各ウェブサイトの最初のページをクロールするために Scrapy (python 2.7 フレームワーク) を使用しています。
ウェブサイトの言語を確認する最良の方法を教えてください。
任意の助けをいただければ幸いです。
Python を使用しているため、NLTK を試すことができます。より正確には、NLTK.detect を確認できます
詳細と正確なコード スニペットはこちら: NLTK と言語検出
応答ヘッダーを使用して、次のことを確認できます。
Python を使用している場合は、Marco Lui と Tim Baldwin によって作成されたスタンドアロンのLangIDモジュールを強くお勧めします。モデルは事前にトレーニングされており、文字検出は非常に正確です。XML/HTML ドキュメントも処理できます。
サイトが多言語の場合、"Accept-Language:en-US,en;q=0.8" ヘッダーを送信すると、応答が英語であることが期待できます。そうでない場合は、「response.headers」辞書を調べて、言語に関する情報が見つかるかどうかを確認できます。
それでもうまくいかない場合は、何らかの方法で IP を国にマッピングしてから、言語にマッピングしてみてください。最後のリソースとして、言語を検出してみてください (これがどれほど正確かはわかりません)。
http://detectlanguage.comで言語検出 API を使用できます 。これは、GET または POST を介してテキスト文字列を受け取り、JSON 出力とスコアを提供します。無料サービスと有料サービスがあります。
調べてくださいNatural Language Toolkit
:
NLTK : http://nltk.org/
あなたが調べたいのはcorpus
、によって設定されたデフォルトの語彙を抽出するために使用することですNLTK
:
nltk.corpus.words.words()
次に、 を使用してテキストを上記と比較しますdifflib
。
参考:http ://docs.python.org/library/difflib.html
これらのツールを使用して、テキストと NLTK によって定義された英単語との間に必要な違いを測定するためのスケールを作成できます。
HTML Webサイトで英語以外の文字が使用されている場合は、メタタグのWebページのソースコードに記載されています。これは、ブラウザがページをレンダリングする方法を知るのに役立ちます。
これは、英語のページとアラビア語のページの両方があるアラビア語のWebサイトhttp://www.tanmia.aeの例です。
アラビア語ページのメタタグは次のとおりです。metahttp-equiv="X-UA-Compatible" content = "IE = edge
同じページですが、英語はmeta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" /
英語の場合はボットにメタタグを調べさせ、それ以外の場合は無視しますか?
Web ページの内容を信用したくないが、自分で確認したい場合は、統計アルゴリズムを使用して言語を検出できます。Trigram ベースのアルゴリズムは堅牢で、ほとんどが別の言語で書かれているが英語が少し含まれているページでもうまく機能するはずです (「the、and、またはwithという単語がページにあるかどうかを確認する」などのヒューリスティックをだますのに十分です) Google "ngram 言語分類」と、それがどのように行われたかについての多くの参考文献を見つけることができます.
英語用に独自のトライグラム テーブルをコンパイルするのは簡単ですが、Natural Language Toolkitにはいくつかの一般的な言語用のセットが付属しています。彼らはにいNLTK_DATA/corpora/langid
ます。nltk ライブラリ自体がなくても trigram データを使用できますが、nltk.util.trigrams
モジュールを調べることもできます。