Watson Language Translator がバシキール語を識別できるか試す

##バシキール語にも対応しているだって？
ところで、[前回の記事](https://qiita.com/strysd/items/592ad17f6108994affae)で使用した Watson Language Translator は、[サポート対象言語についてのドキュメント](https://console.bluemix.net/docs/services/language-translator/index.html#supported-languages) によると 62 種類の言語を識別できるそうです。
サポート対象の言語を見てみると、かなりマイナーな言語も含まれることがわかります。先頭から見ていくと、Afrikaans(アフリカーンス語), Albanian(アルバニア語), Arabic(アラビア語), Armenian(アルメニア語), Azerbaijani(アゼルバイジャン語), ときて Bashkir(バシキール語)。えっバシキール語？

ちなみに、これはロシア連邦のバシコルトスタン共和国を中心に居住するバシキール人によって話される言葉で、話者数約140万人なんだそうです。(Wikipedia より) バシキール語は、同じくサポート対象のカザフ語やキルギス語とともにチュルク語族キプチャク語群に属し、トルコ語やアゼルバイジャン語が属するオグズ語群、チュバシ語が属するオグール語群とは遠い親戚にあたります。
今回は、思いっきり自分の趣味に走って、Watson Language Translator が、どの程度バシキール語を識別できるか試してみました。


##用意したフロー
今回は、言語識別機能を試すのが目的です。Bot にする必要はないので、特定のタグをつけて発言したつぶやきを拾います。そのタグは、言語識別の邪魔になるので、chg ノードで null へ置換しています。
![detect_flow.png](https://qiita-image-store.s3.amazonaws.com/0/27855/229133eb-f21f-5bd2-2c23-14ee7f97a953.png)

msg.mylangs に言語コードと信頼度を100倍した値のリストを返すようにしてみます。ただし、信頼度の小数第3位を四捨五入して 0.09 以下なら捨てることにします。

```JavaScript:mylangs
var mylangs = '';
var myconf  = 0;
for (var i in msg.languages) {
    myconf = Math.round(msg.languages[i].confidence * 100);
    if (myconf > 9) {
        if (mylangs !== '') {
            mylangs += ', ';
        }
        mylangs += msg.languages[i].language + ':' + myconf;
    } else {
        break;
    }
}
msg.mylangs = mylangs;
return msg;
```

##用意したテキスト
[バシキール語で書かれた Wikipedia](https://ba.wikipedia.org/wiki/) があるので、ここからテキストを拾ってみます。ほかの言語で書かれた Wikipedia と見比べると、[Һайланған мәҡәлә](https://ba.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D2%BA%D0%B0%D0%B9%D0%BB%D0%B0%D0%BD%D2%93%D0%B0%D0%BD_%D0%BC%D3%99%D2%A1%D3%99%D0%BB%D3%99%D0%BB%D3%99%D1%80) がたぶん「秀逸な記事」のことのようです。記事の中には、昔の偉い人の記事らしいものもあるのですが、口琴の[Ҡумыҙ](https://ba.wikipedia.org/wiki/%D2%A0%D1%83%D0%BC%D1%8B%D2%99)についての記事が私には比較的わかりやすかったので、この記事からテキストを拾ってみます。

バシキール語と識別できるでしょうか？
![3.png](https://qiita-image-store.s3.amazonaws.com/0/27855/a28d46c9-7486-b0f4-08d0-32e5a5711957.png)

見事バシキール語（言語コードは ba ）と識別できました！ちなみに msg.languages 配列を見ると、次の候補はカザフ語で信頼度は 1.66298e-10 、その次がキルギス語で2.64273e-12 なので、明確に区別できているようです。
![4.png](https://qiita-image-store.s3.amazonaws.com/0/27855/0bb55a08-f4be-747d-66a0-cecd7b1b795f.png)

ちなみに、このテキストは、クミズという名前の金属製の口琴楽器（カザフやキルギスなどではコムズ、日本のアイヌでは竹製のムックリ）の特徴を説明した文章でした。

余談ですが、上記のテキストを translate.google.co.jp ではカザフ語と識別し、translate.yandex.ru (ロシアの検索サービスの翻訳機能)では正しくバシキール語と判別しました。ロシアの中の少数民族の文化で調べものしたいときには、バシキール語のほかにもタタール語とかウドムルト語とか Google 翻訳では未対応でも、translate.yandex.ru で英語やロシア語へ翻訳できる場合があります。

##もう一つ用意したテキスト
でも、これだとそもそも伝統的な楽器についての説明記事だから、比較的外来語の影響を受けていなくて識別しやすいだけでは？という疑問があります。
そこで意図的に「重力」という科学用語についての記事を選んでみます。「重力」にあたる言葉は、ロシア語の用語がそのまま使われているようです。 [Гравитация](https://ba.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D0%B0%D1%86%D0%B8%D1%8F)

さて識別できるでしょうか？ちなみに Twitter は、ロシア語と判定して「ロシア語から翻訳」というリンクを表示しているけど、これ絶対ロシア語じゃないから！
![5.png](https://qiita-image-store.s3.amazonaws.com/0/27855/821ec60a-feaf-7605-6f23-282906a153de.png)

これは、ガリレオ・ガリレイが物体の重さには無関係に落下速度が決まることを発見したことを伝えている文章なのですが、これも正しくバシキール語と判定されました。候補２位のキルギス語、３位のカザフ語としての信頼度は 5.99589e-7 以下なので、ほぼ間違いなくバシキール語として考えてよさそうです。 

![6.png](https://qiita-image-store.s3.amazonaws.com/0/27855/ca441fbd-219c-f627-1d14-785d9c0e59d5.png)

##実はなんでもかんでもバシキール語と判定しているのでは？
意地悪ですねぇ。はいはいわかりました確認してみましょう。

昨年は、カザフスタンのアスタナで万博がありましたが、これは、その時現地でお手伝いをしていた人によると、その時大流行していたカザフ語の歌だそうです。
[Erke Esmakhan - Qaida](http://lyricstranslate.com/en/qayda-%D2%9B%D0%B0%D0%B9%D0%B4%D0%B0-where.html) (曲名の日本語訳(あなたは)どこ？)

この歌の歌詞の最初の一節を試してみます。ほら、カザフ語（言語コード kk ）と識別されました。
![7.png](https://qiita-image-store.s3.amazonaws.com/0/27855/11240217-bcfb-dcd2-ea18-810cf797b2e4.png)

##むすび
- Watson Language Translator は、日本ではほとんどだれも知らないような（失礼！）意外なマイナー言語も識別できる。
- 日本での実用を考えると、東南アジアの言語にもっとたくさん対応してほしい気がする
- 識別ももちろんだけれど、翻訳もね

以上このようなマニア記事を最後まで読んでいただきありがとうございました。