NAIST で twitter 言語判定について発表してきました

5/14 に NAIST(奈良先端科学技術大学院大学) にて「∞-gramを使った短文言語判定」について発表してきました。素晴らしい機会をいただいてありがとうございました。
その時の資料を公開します。
内容は TokyoNLP #8 や言語処理学会2012@広島市大で発表したものをちょっと丁寧に+αした感じ。



NAIST 小町さんから M1 向けのセミナーで発表してみませんかとお話をいただいて、「ぜひやります」と二つ返事でお引き受けしたものの、本当に中谷でいいんだろうかーとあとから心配になったのはないしょw
小町さんからは、機械学習自然言語処理を実応用で使っているエンジニアの立場、というところを学生さんに聞いてもらいたいというところと、言語好き押しで、という指針をいただいていた。つまりいつもどおりでいーんだな、と理解していつもどおりのノリで発表したら、学生さんに書いていただいた感想票に「いつもの普通のセミナーと違って笑いもあってよかった」とか書かれてあった。やばい。
反省点としては、用意していった資料では機械学習まわりの説明がほぼゼロに近くて、演壇に立った瞬間に、まずい、聴衆層を読み違えてた、と気づいたものの後の祭り。んーでも機械学習の話に時間を取られると、ルーマニア語の話とかトルコ語の話とかベトナム語の話とかペルシャ語の話とかが削られてしまっただろうから、いいということにしよう。


なお資料は英語だが、発表は日本語で行った。
この資料の英語はきっとあちこち間違っている。これはひどいというのがあればご指摘いただけると嬉しい。
そんな有様でも英語で資料を作ったのは、NAIST には海外からの留学生や研究者の方もいらっしゃるだろうから、ということもあるけど、もう一つ、どんなにつたなくても英語で発信すれば多くの人に見てもらえるから。
例えば、language-detection の資料の英語版はこれまでに8500回以上閲覧されている。その資料を使った発表など一度もしたことがなく、ただ公開しているだけなのに。


あとはセミナーに参加して下さった学生さんからいただいた感想票から、質問的な項目について簡単にフォロー。

判定の精度はどういうふうに求められたか

用意したテストデータに対して、precision = [正解数] / [その言語と判定した件数], recall = [正解数] / [その言語のラベルを持つ件数]。

方言の違いも抽出できる?

データが非常に多くあればできる可能性はあるが、難易度は高いと思う。
ノルウェー語とデンマーク語は、綴り的には方言みたいな……などと言うと各方面で怒られそうなのでやめておこう。

短いデータに対応することで向上する精度が1.6%程度であったことが意外だった

80% 程度のものを 1.6% 向上するのと、97.4% から 99.0% に向上するのとでは全く意味が違うので。

略語には流行り廃りがあるので、定期的に学習データの更新をする必要があるかもしれない

同意。ただ、テキストの内容に従ってジャンル分けを行う問題などに比べれば、言語判定のモデルの寿命はずっと長いだろうと推測。

その都度ラベル付けをしなおさなくて良い方法、自動化の方法は考えられるだろうか

完全自動化は無理にしても、例えば Active Learning 的な手法と組み合わせたりして、楽ができるようになれば嬉しい。

keh ک の文字コードもペルシア語とアラビア語で異なります

ありがとうございます。
セミナーでは時間がなくて細かい説明は飛ばしたが、アラビア文字圏で CP-1256 というアラビア文字の文字セットが先に普及し(日本語でいう Shift JIS 的な位置づけ)、それにペルシャ語の Farsi yeh (U+06cc) がマッピングされていなかったため、Arabic yeh (U+064a) で代用する運用が広まり、現在もそれらの混用が続いてしまっているというのがポイント。
keheh についてはそのような混用が起きているのか把握してなかった。ただ、アラビア語ではペルシャ語由来の単語でたまに使われている程度の使用頻度なのかなあ(間違ってたらごめんなさい)、だからそれを正規化しなくても精度に目に見える影響はなかったのかな、と今のところ推測。

言語のデータ量が増えることにより似通った言語が増加し、判断が難しくならないのか

現在サポートしている言語の中では、ノルウェー語とデンマーク語は綴り上は非常に似通っているため、これらの間での誤判定は非常に多い。
サポートしていない言語にも、オランダ語とアフリカーンス、インドネシア語とマレー語、クロアチア語セルビア語(および、その他旧ユーゴスラビア系の言語のラテン文字表記)はそれぞれ非常によく似ているので判定が難しい。
また言語として本来は似ていないものの、フィリピノ語やスワヒリ語には英語の語彙は大量に流入しているので(特に twitter などのくだけた表現が頻出するメディア上では顕著すぎるくらい)、これらの判定は難しい。

データベースを作るときに個々の知識量が影響する?

めっちゃする。
今回作成した twitter コーパスでも、ノルウェー語とデンマーク語のデータはおそらくかなりの割合で間違いが含まれているはず。これの間違いを減らすだけで、それらの言語の判定精度が 1% は上昇するだろう。
また、カタルーニャ語コーパスを用意し始めるまで、それまでスペイン語やフランス語として作っていたコーパスに大量にカタルーニャ語が混じっていたことに全然気づかなかった。