Pythonの機械学習(ディープラーニング)を活用した自然言語処理・自然言語認識ライブラリ”fastText”を使用し、言語や外国語が一体何語なのかを自動認識します。
fastTextというツールを使用して、テキストの言語が日本語なのか中国語なのか英語なのかフランス語なのか、何語なのかを判定します。
- fastText/language-identification.md at master · facebookresearch/fastText
- facebookresearch/fastText: Library for fast text representation and classification.
- Language detection · Issue #878 · facebookresearch/fastText

こんな感じにできます。 “hola”はスペイン語なんですが、英語になってるところが気になりますね。
英語圏の人々にとっては、スペイン語も英語も同じようなものなのかもしれません。

pythonのためのインストール
git clone https://github.com/facebookresearch/fastText.git
cd fastText
pip install . # sudo pip install .
一応他のインストール方法
wget https://github.com/facebookresearch/fastText/archive/v0.9.1.zip
unzip v0.9.1.zip
cd fastText-0.9.1
make
./fasttext
データセットのダウンロード
wget https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
Pythonスクリプト
# coding:utf-8
import fasttext
import json
# model = fasttext.load_model("/home/yuis/pg/python/fastText/lid.176.bin")
model = fasttext.load_model("/mnt/c/pg/python/fasttext/lid.176.bin")
def predict_language(text, model, k=1):
label, prob = model.predict(text, k)
return list(zip([l.replace("__label__", "") for l in label], prob))
print( json.dumps(predict_language(u'{{text}}', model, k=2)) )
サンプル
print( json.dumps(predict_language(u'こんにちは', model, k=2)) )
print( json.dumps(predict_language(u'hello', model, k=2)) )
print( json.dumps(predict_language(u'Zürich', model, k=2)) )
Bash関数 (ご自由にお使いください)
predict_language(){
: <<<'
e.g. predict_language "hello"
e.g. predict_language "こんにちは"
'
export TEXT="${1}"
cat << 'EOT' | mo > "$PGDIR/python/fasttext/predict_language.py"
# coding:utf-8
import fasttext
import json
# model = fasttext.load_model("/home/yuis/pg/python/fastText/lid.176.bin")
model = fasttext.load_model("/mnt/c/pg/python/fasttext/lid.176.bin")
def predict_language(text, model, k=1):
label, prob = model.predict(text, k)
return list(zip([l.replace("__label__", "") for l in label], prob))
print( json.dumps(predict_language(u'{{TEXT}}', model, k=2)) )
EOT
# python "$PGDIR/python/fasttext/predict_language.py" | parsejson "[0][0]"
python "$PGDIR/python/fasttext/predict_language.py"
}
: ショートハンド
predict_language "hello"
predict_language "こんにちは"
predict_language "你好"
predict_language "hola"
predict_language "Zürich"
: jsonパース
predict_language "hello" | parsejson "[0][0]"
predict_language "こんにちは" | parsejson "[0][0]"
: 使用例
if [[ "$( predict_language "hello" | parsejson "[0][0]" )" == "en" ]]; then echo "この言語は英語です。" ; fi
if [[ "$( predict_language "hello" | parsejson "[0][0]" )" == "ja" ]]; then echo "この言語は日本語です。" ; fi