polyglotによる言語検出の精度を見てみる


awesome-pythonリストを確認していると、自然言語処理のカテゴリーの中にpolyglotというライブラリがあり、ドキュメントを確認してみると、言語検出ができるとのことなので精度を試して見ます。

環境の用意

はじめはmac上で環境構築を行なっていたのですが、iucがうまく入らなかったため、dockerに切り替えました。
docker hubで検索をかけると良さそうなのがあったのでこれを使用します。

urbulent/polyglot-baseイメージの使用・コンテナの起動

urbulent/polyglot-baseイメージを使用して以下コマンドでdokcerを立ち上げ、コンテナに入ります。

docker pull turbulent/polyglot-base    
docker run --rm -it turbulent/polyglot-base /bin/ash

日本語モデルの用意

正しく検出を行うために、日本語のモデルをインストールします。ここからの作業はdokcer内で行います。

インストールはコマンドラインから行えるためリファレンスを参考に以下のコマンドでインストールを行います。

polyglot download LANG:ja

検出を行う

少し雑ですがツイッターから取得したテキストを元に判定を行います

echo "【速報でーす!】「進撃の巨人 Season3」7月から総合テレビで放送する予定です。▼くわしくはこちら(NHKアニメワールド)" | polyglot detect
echo "ハイアット リージェンシー 東京より、いちご尽くしの「いちごのアフタヌーンティー」が登場 -https://www.fashion-press.net/news/36750 " | polyglot detect
echo "【震度・震源速報 2018年1月24日】 24日19時51分頃、青森県東方沖を震源とする地震がありました。震源の深さは約30km、地震の規模はM6.2と推定されています。この地震による津波の心配はありません。" | polyglot detect
echo "HKT48のアルバム「092」。 パッと「買ってね!」と言える価格ではないので躊躇してたんですが(正直者)秋元さんからDVD特典に「いい!」とコメントが来たそうなので今更ですが。。素敵なアルバムです。学生さん、お年玉でぜひ!" | polyglot detect
echo "IN 熱海❤️10代の頃からお世話になっている方に昨日は旅館を用意していただいて、今日はその方の別荘にお母さんと泊まらせいただきます😌✨ステキな別荘で綺麗すぎるオーシャンビュー。私だけでなくていつもお母さんも気遣ってくださるんです‥😭本当に感謝しかない。私の第2のお父さん💕" | polyglot detect

少しわかりづらいですが、japaneseとして認識されています。
また、日本語と中国語が判別できているかも確認します。

echo “日本”   | polyglot detect
echo 你好 日本  | polyglot detect

日本だけだと'WARNING base.py: 93 Detector is not able to detect the language reliably.'としてワーニングとちゃんと返しています。你好 日本では正しくChineseとして処理されています。

まとめ

ちょっとしたデータで試しただけですが、日本語として正しく検出できており、また検出言語に自信がないものはワーニングを返すということがわかりました。このライブラリを使用することにより、web上のデータをクローリングした際に、日本語のものだけに絞り込めたらいいなと思います。