テキストの短い抜粋、いくつかの文が英語かどうかを検出する簡単な方法を探しています。この問題は、任意の言語を検出しようとするよりもはるかに簡単に思えます。これを行うことができるソフトウェアはありますか?私はPythonで書いていて、Pythonライブラリを好むでしょうが、何か他のものでもいいでしょう. Google を試してみましたが、TOS では自動クエリが許可されていないことに気付きました。
5 に答える
Trigramを使って英語を検出する方法を読んだ
テキストを調べて、単語で最も使用されているトライグラムを検出してみてください。最もよく使われる単語が最もよく使われる英単語と一致する場合、テキストは英語で書かれている可能性があります
この ruby プロジェクトを調べてみてください。
編集: OP は Google の TOS に反するテキストを一括処理しているため、この場合は機能しません。
Google 翻訳言語検出 APIを使用します。ドキュメントの Python の例:
url = ('https://ajax.googleapis.com/ajax/services/language/detect?' +
'v=1.0&q=Hola,%20mi%20amigo!&key=INSERT-YOUR-KEY&userip=INSERT-USER-IP')
request = urllib2.Request(url, None, {'Referer': /* Enter the URL of your site here */})
response = urllib2.urlopen(request)
results = simplejson.load(response)
if results['responseData']['language'] == 'en':
print 'English detected'
Google Translate API v2では自動クエリが可能ですが、 GoogleAPIコンソールで自由に取得できるAPIキーを使用する必要があります。
テキストが英語であるかどうかを検出するには、Pythondetect_language_v2()
の質問に対する私の答えから関数(そのAPIを使用する)を使用できます-ユニコード文字列言語コードを検出できますか?:
if all(lang == 'en' for lang in detect_language_v2(['some text', 'more text'])):
# all text fragments are in English
Google のものほどではありませんが、事前にトレーニングされた独自の ngram モデルを備えた Apache Nutch LanguageIdentifier を使用して、良い結果が得られました。いくつかの言語の実世界のデータの大規模な (50GB pdf、ほとんどがテキスト) コーパスで非常に良い結果が得られました。
これは Java ですが、Python で再実装したい場合は、そこから ngram プロファイルを読み直すことができると確信しています。