Pythonを使用してテキストの言語を識別する


テキスト言語識別は、与えられた1片のテキストの言語を予測するプロセスです.Chromeがコンテンツが英語でないことを検出するとき、ウェブページを翻訳するためにポップアップを示すとき、あなたはそれに遭遇したかもしれません.舞台裏で、Chromeはウェブページで使われるテキストの言語を予測するためにモデルを使用しています.

NLPのためのデータセットで働くとき、コーパスは混合言語集合を含むかもしれません.ここでは、言語の識別は、いくつかの言語をフィルタリングするか、コーパスを単一の言語に翻訳し、その後、あなたの川下のタスクに使用することができます.
ここでは、FastText言語検出ライブラリの動作メカニズムと使い方を説明します.

FacebookのFasttextライブラリ



Fasttext Wordの埋め込みとテキスト分類のためのPythonのオープンソースライブラリです.それは研究よりむしろ生産ユースケースのために造られて、したがって、パフォーマンスとサイズに最適化されます.それはWord2Vec 使用などのアイデアを持つモデルsubword information and model compression .
言語同定の目的のために,事前訓練されたfasttext言語同定モデルを用いることができる.モデルは、から得られたデータセットで訓練されたWikipedia , Tatoeba , and SETimes . 基本的なアイデアは、(テキスト、言語)ペアのトレーニングデータを準備し、それに分類器を訓練することです.

以下のベンチマークは、これらの事前に訓練された言語検出モデルがlangid.py , もう一つの人気のあるPython言語検出ライブラリ.FastTextより良い精度と推論時間も非常に高速です.これは、フランス語、ドイツ語、英語、スペイン語、中国語を含む言語の様々なサポートしています.

FastTextを用いた言語検出

  • インストールFasttext ライブラリを使用して.
  • pip install fasttext
    

  • 事前に訓練されたモデルの2つのバージョンがあります.メモリとスペース要件に合うモデルを選択します

  • lid.176.bin : より速く、より正確に

  • lid.176.ftz : 917 KBのファイルサイズで、モデルの圧縮されたバージョン
  • FastTextからいくつかの場所に事前訓練モデルをダウンロードします.後でこの場所をコードで指定する必要があります.この例では、/tmpディレクトリにダウンロードします.
  • wget -O /tmp/lid.176.bin https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
    
  • 今、我々はFastTextをインポートし、我々が以前にダウンロードした訓練済みのパスからモデルをロードします.
  • import fasttext
    
    PRETRAINED_MODEL_PATH = '/tmp/lid.176.bin'
    model = fasttext.load_model(PRETRAINED_MODEL_PATH)
    
  • フランス語で例文を取りましょう.FastTextを使用して言語を検出するには、文のリストを予測関数に渡します.文章はUTF - 8形式でなければなりません.

  • sentences = ['je mange de la nourriture']
    predictions = model.predict(sentences)
    print(predictions)
    
    # ([['__label__fr']], array([[0.96568173]]))
    
  • モデルは戻って2つのタプルを返します.そのうちの1つは言語ラベルの配列で、もう一つはそれぞれの文に対する自信です.ヒアfrISO 639 フランス語コード.そのモデルはフランス語がフランス語であるという自信がある.
  • FastTextは170の言語の中で最も起こりうるもののISOコードを返します.ページを参照できますISO 639 コードは、各シンボルの言語を見つけること.
  • af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs bxr ca cbk ce ceb ckb co cs cv cy da de diq dsb dty dv el eml en eo es et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh
    
  • プログラムの言語記号を言語名に戻すにはpycountry パッケージ.PIPを使用してパッケージをインストールします.
  • pip install pycountry
    
  • 今、シンボルをPiccountryに渡して、言語名を取り戻します.
  • from pycountry import languages
    
    lang_name = languages.get(alpha_2='fr').name
    print(lang_name)
    # french
    

    結論


    したがって、Pythonでの言語検出のためにどのようにfasttextを使用することができるかを見ました.これは、自然言語処理プロジェクトにおける非英語的応答をフィルタリングして対処するのに非常に役に立ちます.

    接続


    あなたがこのブログ記事を楽しんだならば、私が毎週新しいブログ記事を共有するところで、私と連絡をとってください.