【Python】日本語や外国語などの言語判定をする方法

  • Pythonで文字列の言語判定をするには?
  • 文字列中に何語が含まれているかを解析するには?

本記事ではこのような疑問を解決します。


今回はPythonによる日本語や外国語などの言語判定をする方法を解説していきます。

ちなみに、筆者がPythonによる言語判定を行なったきっかけは海外からの迷惑メールを弾きたいと思ったことです。

メール中の文字列を言語解析して特定の言語だけを受け付けられるようにしました。

言語判定の利用用途は様々ですが、本記事の内容をそれぞれの目的に応用してみてください。

言語判定に使用するライブラリ

今回使用するライブラリは以下の通りです。

・PYCLD2
→対応Pythonバージョン2.7, 3.4, 3.5, 3.6, 3.7

・PYCLD3
→対応Pythonバージョン3.6, 3.7, 3.8, 3.9

上記2つの中から対応するPythonバージョンを考慮して使用するライブラリを選んでください。

ちなみに、コードの書き方が少し異なるだけでどちらも同じような出力結果を出してくれます。

PYCLD2を使用する場合

ライブラリをインストールする

まずは必要なライブラリをインストールします。

下記のコマンドを実行しましょう。

$ pip install pycld2

コードを記述する

それでは処理を記述していきます。

コード例は以下の通りです。

import pycld2

isReliable, textBytesFound, details = pycld2.detect(
    "This is a pen. これはペンです。"
)

print(details)
# =>(('Japanese', 'ja', 57, 3956.0), ('ENGLISH', 'en', 37, 1462.0), ('Unknown', 'un', 0, 0.0))

さらに、文字列に日本語が含まれているかどうかの判定をしてみましょう。

import pycld2

isReliable, textBytesFound, details = pycld2.detect(
    "This is a pen. これはペンです。"
)

language_list = []
for l in details:
    language_list.append(l[1])
print(language_list)
# =>['ja', 'en', 'un']

if 'ja' in language_list:
    print('含まれる')
else:
    print('含まれない')
# =>含まれる

PYCLD3を使用する場合

ライブラリをインストールする

まずは必要なライブラリをインストールします。

下記のコマンドを実行しましょう。

$ pip install pycld3

コードを記述する

それでは処理を記述していきます。

コード例は以下の通りです。

import cld3

cld3_languages = cld3.get_frequent_languages(
        "This is a pen. これはペンです。",
        num_langs=3,
        )

print(cld3_languages)
# =>[LanguagePrediction(language='ja', probability=1.0, is_reliable=True, proportion=0.6052631735801697), LanguagePrediction(language='en', probability=0.9999408721923828, is_reliable=True, proportion=0.3947368562221527)]

さらに、文字列に日本語が含まれているかどうかの判定をしてみましょう。

import cld3

cld3_languages = cld3.get_frequent_languages(
        "This is a pen. これはペンです。",
        num_langs=3,
        )

language_list = []
for l in cld3_languages:
    language_list.append(l[0])
print(language_list)
# =>['ja', 'en']

if 'ja' in language_list:
    print('含まれる')
else:
    print('含まれない')
# =>含まれる

まとめ

以上がPythonによる日本語や外国語などの言語判定をする方法になります。

数行のコードで処理を記述できるため、簡単に実装できました。

ぜひ本記事の内容を活用してPythonによる言語判定を試してみてください。

なお、今回扱ったライブラリの公式ドキュメントはこちらになります。

・PYCLD2公式ドキュメント
・PYCLD3公式ドキュメント