JavaScriptで形態素解析してみた

本文を読む前にこのページを開いておこう!(※大量のダウンロードが始まります。太い回線で試してみてください)
http://shogo82148.github.com/igo-javascript/


JavaScript形態素解析を行うプログラムとしては、TinySegmentater(作者の工藤さんはMeCabの作者でもあるすごい方です)が有名ですね。TinySegmentaterは非常にコンパクトな設計で、わずか25kB程度の容量しかないも関わらず、95%の精度で分かち書きを行えるとのことです。コンパクトで便利なので、他の言語にも多数移植されています。

しかし、辞書を持っていないため、品詞や読みを推定することは出来ません。HTML5の登場によってJavaScriptでできることがかなり増えてきたし、JavaScriptの実行速度もかなり速くなったし、ネットワーク環境もよくなって動画みたな大容量コンテンツも扱えるようになったし、そろそろJavaScriptでも辞書を使った形態素解析ができるんじゃないか。この前Igoのソースを読んでそんなことを考えたのでやってみました。

ソースはgithubにigo-javascriptとしてあげておきました。


igo-pythonのソースを参考にして書いてみました。サーバにigo-pythonと辞書ファイルを上げておけば簡単に使えるはずです。CGIとかPHPとかRuby on Railsとかよくわからないものをサーバにインストール必要は全くありません。静的ファイルをアップロードできる環境であればそれだけでOKです。セキュリティの関係で残念ながらローカルでは使えません。

クライアントは Chrome 17 と FireFox で動作を確認しました。IE・・・?そんなブラウザは知りません。


辞書ファイルにはigoで生成したものをそのまま使います。・・・はい、そのまま。
igoの辞書ファイルは全部で40MB程度あって、使う時にはこれをすべてダウンロードしなければなりません。
・・・いくらネットワーク環境が良くなったとはいえそのままは大きすぎた・・・。試す時は気長に待ちましょう。

一回ダウンロードしてしまえば、解析自体はかなり高速です(実測したわけではありませんが)。次回以降のアクセスもキャッシュが効くから高速になるはず。



辞書のサイズは大幅に削らないと。何か良い圧縮方法は無いものか・・・。



igo-javascriptを試してみたいかた向けに、github pages(githubを使ってwebページ)を使ってお手持ちのブラウザで試せるようにしてみました。

http://shogo82148.github.com/igo-javascript/

一番最初に示したリンクと同じものですね。一行目を見てリンク先を開いて置けば、この文章を読み終わったころには、ダウンロードが終わっている・・・と信じたい。