8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

lingua-language-detectorで手軽に言語判定しよう!

Last updated at Posted at 2025-12-09

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で言語判定を試してみてください!

関連記事

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?