JustTechTalk#2で形態素解析の話を聞いてきた

ちょっと前の話になるが、形態素解析のあれやこれや@ジャストシステム で、ジャストシステムの形態素解析器JMATの学習の方法についての話を聞いてきた。2000年台後半の話だそうなので、今は変わってるところもあるかも。

JMATは機械学習ベースの形態素解析器で、モデルにはCRFを採用している。素性は単語生成コスト、連接コストの2種類。連接コストは品詞バイグラム+語彙化。学習はL-BFGS。口頭での補足などで、今ならオンライン学習にトライしていたかもとか、学習させるために64GBのサーバを買ったとかというあたりから、時期的には2000年代の後半のかなり早い時期であると推測できる。

最初、300万文のコーパス(プログラムの自動的な解析結果を人手で修正したもの)で学習した。旧エンジンと比べて精度は高いのだが、実際に結果を見てみると簡単なところでミスする事例が増えたりした。直し方もわからない。そこで色々とやり方を変えた。

まず、高品質なコーパスを1万文ぐらい用意した。機能語をまんべんなくカバーするような文を、基準を厳しく管理しながら複数人でアノテーションしたもの。この1万文を使って学習させると、それだけで旧エンジンを上回る性能が出た。300万文のコーパスだと、旧エンジンを上回るのに10万文ぐらいは必要だったので、コーパスの品質が性能に与える影響の大きさがわかる。

次に、300万文のコーパスを使って能動学習を行い、旧エンジンの挙動を模倣する。この能動学習はエセ能動学習らしいが、具体的にどういう手法なのかはよくわからず。たぶんそこに踏み込むと話が長くなってしまうのだろう。最後に、部分アノテーションしたコーパスから学習させる。

最終的には3万7000文ぐらいのデータ量が学習に使われた。(300万文じゃないのは、能動学習だから。)ここまでやっても間違える事例は出るが、それは別途ルールで対応する。人手での性能評価は、一時期は専門の人が5〜6人がかりで行っていたらしい。

アルゴリズムを色々工夫するよりも辞書を鍛えた方が手っ取り早いという話はNLPの学会とかに行くとよく出てくる話ではあるが、そういったことは勿論やった上で、リグレッションが起きないように学習にも色々工夫するという、企業らしい、品質に対する丁寧さが見える発表だった。

後半はいろんな言語で形態素解析を実装してみた人たちのパネルディスカッションみたいな感じだったが、出演者4人で時間が1時間弱しかなかったので、あんまり深いところまでは踏み込めず、これはちょっと消化不良な印象をうけた。もっと時間があれば、各言語での実装にどういうところに苦労したかとか、FSTとDouble Arrayの比較とか、もうちょっと具体的な話に踏み込めたと思う。まぁ、そこまで具体的に踏み込んだ話をどこまでの人が聞きたいのかはちょっと謎ではあるが、個人的には聞きたかった。

以下は余談。ジャストシステムのオフィスには初めてうかがったが、ちょっと引くぐらいきれいなオフィスだった。形態素解析というNLPど真ん中のトピックだった割に、参加者にはいつもNLPの学会で見かける人がほとんどいなかった(顔を知ってる人が2人しかいなかった)のがちょっと気になった。単にコミュニティが断絶してるのか、それともこういう「作ってみた」系の話には興味が無いということなのか。個人的には、現実のデータで出てくる問題にどうやって取り組むのかという話はとても興味深いと思うのだが……。

このエントリーをはてなブックマークに追加

Latest articles