教師なし単語分割の最前線。ベイズ meets 言語モデル

今日は daiti-m さんの教師なし単語分割話と id:nokuno さんの Social IME 話を聞きに行くため、仕事を午前中で終えて一路本郷へ。第190回自然言語処理研究会(通称 NL 研、えぬえるけんと発音する)。六本木から大江戸線麻布十番南北線に乗り換えて東大前で降りたのだが、ちょっと失敗して10分以上 Social IME の話を聞き逃してしまう。残念。

というわけで最初の発表については nokuno さん自身による発表スライドおよびshimpei-m くんのコメントを見てくれたほうがいいと思うが、個人的に思うのは(直接も言ったけど)研究発表とするならポイントを絞ったほうがいいんじゃないかなと。

  1. 研究の背景と目的
  2. 従来手法の問題点を指摘
  3. それらを解決できる手法を提案(3つ)

までは非常にいいのだが、そこから先がそのうちの1つしか説明・評価していないので、ちょっと述べている問題とずれている印象を受けてしまう(せっかくいろいろやっているのに、もったいない)。書き方次第で見栄えが全然違ったりするので、査読のコメントなど戻ってきたら参考にしてください〜

テクニカルな問題としては MeCabGoogle 日本語 N グラムに読みを付与して(最尤推定で)かな漢字モデルとして使っているところで、こうすると「にほんじん」が変換できない問題(MeCab だと「日本人」は「にっぽんじん」と常に解析されてしまうので)や、あと数字の変換にもめっぽう弱いという問題があるのだが、一応(曖昧性のある部分だけでいいので)読みを付与したコーパスがあれば、よいかな漢字モデルができることは分かっているので、そのあたりは ChaIME も森さんや id:tkng さんに助けてもらいつつ進めていく、という感じかな。

休み時間に科哲出身で現在長崎大学にいらっしゃる正田さんに(リアルでは)初めてお会いしたり。こんなところでつながっているとは……。

そして本題の daiti-m さんによる教師なし単語分割の話。論文はdait-m さんの日記ページにあるのだが、差し替えられると思ったら差し替えられなかったとのことで、情報処理学会の bookpark にログインしてみてみたら、本当に1ページしかなかった(笑) でもこの日記で daiti-m さんが書かれているように「同じ理由で, 来年度の山下賞の選考にはそもそもこれは入らないようです」というのはちょっと規則を変えた方がいいんじゃないかというくらいエポックメイキングな研究だと思う。

純化して言うと、文字 N グラムをある確率モデルに従って生成して単語を得る。そこで得られた単語 N グラムをさらにある確率モデルに従って生成し、文を得る。こういう生成的言語モデルである。文って単語の連続でできているよね、単語って文字の連続でできているよね、という階層構造をモデル化したものである、とも言える(もちろんさらに進めて漢字ってかなから変換できるよね、とか、かなは音素から書き起こせるよね、とか行けるんだと思うが、今回は日本語の文字は全部等確率で発生すると仮定)。これまで生成的言語モデルといえば隠れマルコフモデル(HMM)を使うのが一般的だったが、ちょうどそれをベイズ的に置き換えるような理論である(その置き換えるための道具立てが、ギブズサンプリングとか MCMC とか、いろいろとすごいのだが、それは別の話)。

先行研究でも似たようなことをする話があるそうだが、それとの違いは特に計算効率で、言わば単語分割を候補の全探索して求めていた。文字ごとにその文字の直後で切れるか切れないかの2値の判断をする必要があるので、これの計算量は O(2^n) で、n は単語数ではなく文字数なので、1文が数単語程度でたかだか数千文のコーパスならなんとか回せても、1文が平均20単語あって4万文ありますよ、なんていう場合は全然計算不能機械翻訳音声認識ではこういう場合ビームサーチを使って枝刈りしながら確率の高い枝を残しつつ前に進むのだが、形態素解析でよくあるのは Viterbi サーチなど動的計画法を用いて効率的に文長に比例する計算量で探索する方法であり、実際この研究では Forward filtering-Backward sampling という確率的な手法でそれを実現している、というところがミソ。一応計算量的には単語 2グラムの場合 O(NL^2)、ただし N は文字列長で L は単語の可能な最大長、というところだそうだ。

日本語の場合は京大コーパスにはすでにかなり人手が入ってそれなりに正しそうな(文法理論の影響はあるが)切れ目がコーパスについているのでそれを再現することはできなかったようだが、言語モデルとしての性能は提案手法のほうが優れている(パープレキシティ的な意味で)そうだし、中国語はルールベースの現在最高性能とされている手法を10ポイント以上上回っていて、これは強烈である。

質疑応答にもあったが、これの階層ベイズをさらに一段上げて句を作ってみる(試してみてはいるそうだ)とか、人間がどのように「句」を認識しているのかが分かるとすごいなぁ。あと、森さんも質問していたが、やっぱりこういう単語分割ってのは応用で評価するのが正当なんじゃないかと思う。固有表現認識で、形態素解析の単位が必ずしも固有表現の単位と一致しないので、両方同時推定するべきだという話とか、もしくは文字単位で固有表現認識したほうがよくなるという話とか、いろいろありうるが(全部分文字列を使えばいいじゃない、という O 野原くんの提案もそれに対する一つの有力な解)、機械翻訳に最適な単語分割(しかもこれはどの言語からどの言語に翻訳するかで違った単位になるはず)とか、固有表現認識に最適な単語分割とか、「単語」という概念は割と「固い」概念だと思われがちだが、意外とアプリケーションごとの作り込みが必要なんじゃないかな。(実際ここが正しいことを前提にされて作られるアプリケーションが多いので、間違えると大ダメージだし)

最後のセッションの発表は文書の(頻度の高い)単語だけから PageRank を推定するという話で、リンク解析から弾き出されるスコアが文書の単語だけからも独立に出せるんだったら、なんか co-training みたいな話(の回帰分析版)でおもしろいんじゃないかな、と思って聞いていたのだが、現在の PageRank は当然リンクの情報だけではなく、文書の単語情報も使っているので、そもそも独立ではないから多少相関はあって当たり前、という話だった……。とはいえ、デスクトップ検索(もしくは小規模なエンタープライズ検索)は全文検索型の検索エンジンが多く、しかもあまり重要度やクエリに対する関連度を考慮したランキングが出されるわけではない(一応 tf.idf くらいで重み付けはしているだろうけど……)のを個人的には問題に思っていて、PageRank に揃えるのがいいかという問題は置いておいて、なんらかの重要度順に並べた結果がデスクトップ検索で返ってくるだけでも有用そうな研究である。

こちらは質疑応答最後にコメントを言った人がちょっと自分の会社の宣伝入ったりしていてげんなり……。あとでみんなで話したところ、そもそも現状の検索エンジンについての認識が間違っているということで意見が一致。エンタープライズ検索・デスクトップ検索が Web 検索とは多少違っているというのはその通りだと思うし、意味的・統語的な処理などもっと自然言語処理的な技術が活かせる可能性があるのはエンタープライズ検索だというのにも同意するが、そんなに Google は馬鹿じゃないし、Powerset が成功しているわけでもない。

研究会後は第2回東大・東工大合同勉強会があり、自分も参加したかったのだが、アナウンスがそもそも今週の頭だったし、すでに先約があったので(研究会のあとさらに勉強会だと平日は疲れるし……)、そちらを優先。(あと、NLP 若手の会メーリングリストに流す + 若手の会ホームページに掲載するだけでは、あまり色んな人の目に触れないような……逆に人が集まりすぎると困るので制限しているのかもしれないけど)

というわけで京大森さん、O 野原くん、id:tkng さん、id:nokuno さんの5人で食事へ。就職の話から自然言語処理の話から女性声優の話からお○ぱ○の話まで、さまざまなトピックが……。結局11時近くまで話していたのだが、考えてみると5時間近く。tkng ブランチの ChaIME の動作デモを見せてもらい、かなり進化していてびびる(制約付き解析 = 単語の切り直しができたり、Anthy のふりをすることができたり、言語モデルGoogle 日本語 N グラム以外にも入れ替えられたり)。あと個人辞書・学習機能がつけば常用可能なレベルに達している気がする。やる気になったー

あと1週間程度しか東京にいないのだが、身体に気をつけてがんばろう。(ご心配をおかけしましたが、今日くらいからマスクも不要になり、朝起きても鼻血も出ず、回復したようです)

(追記) daiti-m さんのページで発表スライドが公開されたようです。合わせてご覧ください。あと、そちらで補足してくださった内容を引用しておきます(daiti-m さんありがとうございます)。

小町君のブログから来ている人が沢山いるようなので, もし「日本語の文字が全部等確率」というのが気になった人がいたら, そうではないので安心して下さい, ということだけ書いておきます。
正確には文字の生起確率=文字1-gramのさらに事前分布が均一になっているという意味で, どんな漢字や数字が出やすいか(文字1-gram), どんな文字の組み合わせが出やすいか(文字2-gram, 3-gram, 4-gram, …)はすべてモデル化されています。