lingua-language-detectorとは?
lingua-language-detectorは、テキストがどの言語で書かれているかを判定してくれるライブラリです。これは、テキストデータセットに対して、特徴量エンジニアリングやLBプロービングなどに有効です。自身の経験をお話すると、『Kaggle Konwinski Prize』において、英語以外のテキストデータが含まれていないかを確認するためのLBプロービングとして本ライブラリを利用しました。
英語や日本語だけでなく、全75の言語がサポートされています。高速に動作することが特長です。
詳細なパフォーマンスレポートについては、下記の公式サイトからご確認ください。
使い方
自身が利用したコードから、使いやすいコードスニペットとして一部抜き出します。
インストール(pipを使う場合)
pip install lingua-language-detector
まずはセットアップとして、detectorインスタンスを呼び出します。使い勝手としては、sklearnに近いです。
from lingua import Language, LanguageDetectorBuilder
detector = LanguageDetectorBuilder.from_all_languages().build()
続いて、compute_language_confidence_valuesメソッドを使うことで、入力テキストがどの言語であるかの確率リストを、確率が高い順に出力できます。
2つの入出力例を紹介します。出力は一部省略しています。
detector.compute_language_confidence_values("You're on a roll! Jump back in, or start something new.")
[ConfidenceValue(language=Language.ENGLISH, value=0.4601090916370432),
ConfidenceValue(language=Language.TAGALOG, value=0.07103449732432127),
ConfidenceValue(language=Language.GERMAN, value=0.040517879689028924),
ConfidenceValue(language=Language.DUTCH, value=0.033416266561097516),
ConfidenceValue(language=Language.WELSH, value=0.027913321074768516),
ConfidenceValue(language=Language.BOKMAL, value=0.021523966888508297),
ConfidenceValue(language=Language.SWEDISH, value=0.020894338868959646),
:
detector.compute_language_confidence_values("lingua-language-detectorは、テキストがどの言語で書かれているかを判定してくれるライブラリです。これは、テキストデータセットに対して、特徴量エンジニアリングやLBプロービングなどに有効です。")
[ConfidenceValue(language=Language.JAPANESE, value=1),
ConfidenceValue(language=Language.AFRIKAANS, value=0),
ConfidenceValue(language=Language.ALBANIAN, value=0),
ConfidenceValue(language=Language.ARABIC, value=0),
ConfidenceValue(language=Language.ARMENIAN, value=0),
ConfidenceValue(language=Language.AZERBAIJANI, value=0),
ConfidenceValue(language=Language.BASQUE, value=0),
:
最後に、与えられたテキストが英語かどうかを判定する関数を作成します。
def is_english_text(text: str) -> bool:
"""
与えられたテキストが英語かどうかを判定する。
- detector.compute_language_confidence_values(text) を用いて各言語の信頼度を取得する。
- 英語 (Language.ENGLISH) の信頼度が最も高い場合に True を返す。
- 他の言語の方が高い場合は False を返す。
Args:
text (str): 判定するテキスト
Returns:
bool: 英語の信頼度が最も高い場合 True、それ以外 False
"""
results = detector.compute_language_confidence_values(text)
# 言語ごとの信頼度を辞書に格納
confidence_dict = {result.language: result.value for result in results}
# 英語の信頼度
english_confidence = confidence_dict.get(Language.ENGLISH, 0.0)
# 最も信頼度の高い言語を取得
highest_confidence = max(confidence_dict.values(), default=0.0)
# 英語の信頼度が最も高い場合は True
return english_confidence == highest_confidence
is_english_text("You're on a roll! Jump back in, or start something new.")
True
is_english_text("テキスト")
False
本記事は以上です。ぜひ、lingua-language-detectorで言語判定を試してみてください!
関連記事