Pythonを使用してテキストの言語を識別する
6650 ワード
テキスト言語識別は、与えられた1片のテキストの言語を予測するプロセスです.Chromeがコンテンツが英語でないことを検出するとき、ウェブページを翻訳するためにポップアップを示すとき、あなたはそれに遭遇したかもしれません.舞台裏で、Chromeはウェブページで使われるテキストの言語を予測するためにモデルを使用しています.
NLPのためのデータセットで働くとき、コーパスは混合言語集合を含むかもしれません.ここでは、言語の識別は、いくつかの言語をフィルタリングするか、コーパスを単一の言語に翻訳し、その後、あなたの川下のタスクに使用することができます.
ここでは、FastText言語検出ライブラリの動作メカニズムと使い方を説明します.
Fasttext Wordの埋め込みとテキスト分類のためのPythonのオープンソースライブラリです.それは研究よりむしろ生産ユースケースのために造られて、したがって、パフォーマンスとサイズに最適化されます.それはWord2Vec 使用などのアイデアを持つモデルsubword information and model compression .
言語同定の目的のために,事前訓練されたfasttext言語同定モデルを用いることができる.モデルは、から得られたデータセットで訓練されたWikipedia , Tatoeba , and SETimes . 基本的なアイデアは、(テキスト、言語)ペアのトレーニングデータを準備し、それに分類器を訓練することです.
以下のベンチマークは、これらの事前に訓練された言語検出モデルがlangid.py , もう一つの人気のあるPython言語検出ライブラリ.FastTextより良い精度と推論時間も非常に高速です.これは、フランス語、ドイツ語、英語、スペイン語、中国語を含む言語の様々なサポートしています.
インストール
事前に訓練されたモデルの2つのバージョンがあります.メモリとスペース要件に合うモデルを選択します
lid.176.bin : より速く、より正確に
lid.176.ftz : 917 KBのファイルサイズで、モデルの圧縮されたバージョン FastTextからいくつかの場所に事前訓練モデルをダウンロードします.後でこの場所をコードで指定する必要があります.この例では、/tmpディレクトリにダウンロードします.
今、我々はFastTextをインポートし、我々が以前にダウンロードした訓練済みのパスからモデルをロードします.
フランス語で例文を取りましょう.FastTextを使用して言語を検出するには、文のリストを予測関数に渡します.文章はUTF - 8形式でなければなりません.
モデルは戻って2つのタプルを返します.そのうちの1つは言語ラベルの配列で、もう一つはそれぞれの文に対する自信です.ヒア FastTextは170の言語の中で最も起こりうるもののISOコードを返します.ページを参照できますISO 639 コードは、各シンボルの言語を見つけること.
プログラムの言語記号を言語名に戻すにはpycountry パッケージ.PIPを使用してパッケージをインストールします.
今、シンボルをPiccountryに渡して、言語名を取り戻します.
したがって、Pythonでの言語検出のためにどのようにfasttextを使用することができるかを見ました.これは、自然言語処理プロジェクトにおける非英語的応答をフィルタリングして対処するのに非常に役に立ちます.
あなたがこのブログ記事を楽しんだならば、私が毎週新しいブログ記事を共有するところで、私と連絡をとってください.
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のファイルサイズで、モデルの圧縮されたバージョン
wget -O /tmp/lid.176.bin https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
import fasttext
PRETRAINED_MODEL_PATH = '/tmp/lid.176.bin'
model = fasttext.load_model(PRETRAINED_MODEL_PATH)
sentences = ['je mange de la nourriture']
predictions = model.predict(sentences)
print(predictions)
# ([['__label__fr']], array([[0.96568173]]))
fr
は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
pip install pycountry
from pycountry import languages
lang_name = languages.get(alpha_2='fr').name
print(lang_name)
# french
結論
したがって、Pythonでの言語検出のためにどのようにfasttextを使用することができるかを見ました.これは、自然言語処理プロジェクトにおける非英語的応答をフィルタリングして対処するのに非常に役に立ちます.
接続
あなたがこのブログ記事を楽しんだならば、私が毎週新しいブログ記事を共有するところで、私と連絡をとってください.
Reference
この問題について(Pythonを使用してテキストの言語を識別する), 我々は、より多くの情報をここで見つけました https://dev.to/amitness/identify-the-language-of-text-using-python-5onテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol