極大部分文字列を使った twitter 言語判定(中谷 NLP2012)

来たる 3/13〜16 に広島で行われる言語処理学会年次大会(NLP2012)にて発表する「極大部分文字列を使った twitter 言語判定」の論文を公開。

中谷 秀洋, 極大部分文字列を使った twitter 言語判定, 言語処理学会第18年次大会, 2012
http://ivoca.31tools.com/misc/nlp2012_nakatani.pdf

【注】
言語処理学会の公開規定が「大会での発表後」であったため、一旦公開を取り下げていましたが、発表終了したので再公開しました。

【/注】



第8回 TokyoNLP で発表した「∞-gram を使った短文言語判定」と基本線は同じ。ただしその発表の時にお約束していたとおり、17言語の判定精度で 99.1% を達成している。99% 越えは作り始める前からの目標だったので素直に嬉しい。
twitter の言語判定を研究されている方達*1が、もちろん独立に作成された6言語のデータセットでも 99% 以上の精度で判定でき(詳細は論文を参照)、一定の客観性が得られたことも嬉しい。


ちなみに、きれいな訓練データさえ増やせば精度はまだ上がる手応えはある。できれば 99% 後半を狙いたいところ。なあに発表まであと1ヶ月半……さすがに無理か(元になるデータがその期間では十分集まらない)。


実用への課題は、論文の最後にも書いたとおり、メモリに載っけるにはモデルがちょっとでかめなこと(99.1% を出したモデルだと 160MBくらい)。
いやまあそれ単独ならたいしたことないけど、検索とか何とか他のメインアプリケーションが動いている環境で、そのサブ機能でしかない言語判定が占めるにはでかすぎるかな(いくら必要不可欠な機能とは言え)。もう少し精度とリソースを天秤に掛けられるようにしたい。


コードは MIT ライセンスで公開している。ただし、極大部分文字列の抽出モジュールは某社内ライブラリの公開準備待ち。

学習済みのモデルも同リポジトリで公開しているが、まだちょっと古くて小さい奴になってしまっている。最新のモデルはもうちょっと小さくできないかなあと少し試行錯誤しているところ。もうしばらくしたら公開できると思う。
データセットは、TokyoNLP #8 以降に作成したものは twitter の ID 付きで作っているので、「ID と言語ラベル」という組で公開が可能になっているのではあるが、そのようなデータをどういったライセンスで公開するのがいいのかちょっと悩んでいることもあり、公開には至っていない。
なお、ID付きで作ったデータは主にマイナーめの言語(チェコ語デンマーク語、フィンランド語、ノルウェー語、ポーランド語、ルーマニア語など)である。英語とかフランス語とかもそのうちきっと作るんだろうけれど、現時点ではモチベーションの高いもの(それを作ることで判定精度が上がる)優先ってことで、もっぱらマイナー言語のデータばかり作っている。喜ぶ人少なそう(笑)。


論文に書ききれなかった小ネタはいっぱいいっぱいあるんだけど、一つだけ。
この ldig(Language Detection with Infinity-Gram) はノルウェー語、デンマーク語に次いでオランダ語が苦手。オランダ語には is とか goes とか、英語と同じ、あるいは英語の綴りだとしてもおかしくない頻出語がままあるので結構難しい、と最近まで思っていた。
が、先に出てきた twitter の言語判定を研究されている Tromp さんらが作成された6言語のデータセットに対しては、なんとオランダ語の精度が一番良い。実は Tromp さんらはオランダの大学(Eindhoven University of Technology)の方達、つまりきっとオランダ人。なので、オランダ語のデータが「一番きれい」なのだろう。
ということは裏返せば、ldig がオランダ語を苦手としているのはデータが汚いからということでもある。うーん頑張り甲斐がある……。


最後に、論文のチェックをしてくれたサイボウズ・ラボの同僚と id:nokuno さんに多謝。

*1:[Tromp+ Benelearn2011] Graph-Based N-gram Language Identification on Short Texts