2009-07-22 9 views
9

URLを指定すると、ウェブサイトのページで使用される自然言語を自動的に判断する方法を探しています。 PythonでURLを指定してウェブサイトのページの自然言語を自動的に決定

、関数のよう:言語指定子を返し

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グラムモデルを使用して実行されます。 hereは、Java用の最先端の言語識別子です。 Pythonに変換するための助けが必要な場合は、尋ねてください。それが役に立てば幸い。

1

nltk(ページのテキストを扱うことに慣れなければならない場合、つまりヘッダーとURL自体が目的に合わせて言語を十分に判断できない場合など)。私はNLTKが直接「どの言語をこのテキストに置いているか教えてください」という機能を提供しているとは思わないが(NLTKは大きく、継続的に成長しているので実際にはそうかもしれないが)、可能な限りさまざまな各言語の規則に従って、どの言語が最も合理的な解析、言葉遣い、&cを提供しているかをチェックします。

0

URLだけで動作する一般的な方法はありません。 top-level domainを確認して、URLの部分(2つのスラッシュの間の "en"や "es"など)を示すURLの部分を探し、未知のものはすべて英語であると仮定しますが、完璧なソリューションです。

私が知る限り、ページで使用される自然言語を特定する唯一の一般的な方法は、ページのテキストを取得し、各言語の特定の共通語を確認することです。たとえば、「a」、「an」、「the」がページに複数回表示される場合は、英語のテキストが含まれている可能性があります。 "el"と "la"はスペイン語を示唆するかもしれない。等々。

3

言語を示しますURL自体については何もありません。

コンテンツに基づいて言語を識別するために、natural language toolkitを使用することもできますが、NLPの一部を動作させることができてもかなり遅くなります。また、信頼できない場合もあります。ほとんどのユーザーエージェントは、各リクエストごとに

のようなものを渡します。多くの大規模なWebサイトでは、そのヘッダーに基づいて異なるコンテンツが配信されることに注意してください。小さなサイトは、言語ヘッダに注意を払わないため、より信頼性が高くなります。

GeoIPを使用して、言語のプロキシとしてサーバーの場所(つまり、サーバーがある国)を使用することもできます。明らかに完璧ではありませんが、TLDを使用するよりもはるかに優れています。

+0

... http://www.mnogosearch.org/guesser/用のPythonラッパーを作成する場合は困難であろうか。世界には複数の言語が共存する場所がたくさんあります。また、ウェブサイトに複数の言語が含まれている可能性もあります。 –

+0

私は、TLDよりも優れていると言いました。 – tghw

3

ngramベースの検出を試してみるとよいでしょう。

TextCat DEMO(LGPL)はかなりうまくいくようです(ほぼ70の言語を認識します)。同じコーパスを使用しているThomas Manginhereによって提供されるpythonポートがあります。

編集:TextCat competitors pageも興味深いリンクを提供します。

EDIT2:私は地理位置が全く役に立たない

関連する問題