ベイズ階層言語モデルによる教師なし形態素解析

素人なりに、なんかこれは凄いぞと思ったので、
NTTのけいはんなの研究所のパンフレットにあった「無限マルコフでの教師なし形態素解析」をぐぐったら


ttp://d.hatena.ne.jp/mamoruk/20090325/p1

こちらで紹介されていて、
論文はこちらにあった

http://chasen.org/~daiti-m/paper/nl190segment.pdf


ざっと見た感じの私の理解では
たとえば


京都大学でデモがあった」
という例文を形態素解析したい場合、人力で作っているコーパスを利用して分割しているのが現状
歴史があるので高性能だけど、古語とか外国語は適用できない
この論文は、完全に0から計算機能力だけでコーパス作成まで持っていく研究らしい
生駒日記の人が「エポックメイキング」と書かれていたので凄い研究の模様。


文章sを単語に分割した場合に、正確に分割すれば、単語間の確率が最小になる
というのが大元の定義らしい

W = argmax p(w|s)

たとえば、「京都|大学」とわけるならいいけど、「京都大|学」と分けると、
全体では、確率が悪くなるって処に着目するのだろう。


しかし、まともに計算出来ないぐらい膨大なグラフになるので
(すべて1文字単位の分割で初めて、文字の結合が単語となり、単語の結合が文となる)
どうやってそれを求めるかの理論的な話が続く。


MCMCとあるので、どうやらマルコフ連鎖モンテカルロで求めていくらしい。
コンピュータ囲碁のように、単語分割の境界を乱数シミュレーションして、
グラフの末端からルートに向かってまとめて上げていくイメージなのかもしれない。

4.1 Blocked Gibbs Sampler
これに代わり, 本研究では文ごとの単語分割w を,
動的計画法により効率的にサンプリングする. w す
なわちz をまとめてサンプリングするため, これは
ブロック化ギブスサンプラ[15] と呼ばれるものとな
り, 図5 に示したアルゴリズムとなる.
最初は単語が未知のため, 文字列s 全体が一つの
「単語」となりそのまま文字モデルに渡されるが, 2
回目以降は古い単語分割によるデータを言語モデル
から削除した後, s の新しい単語分割w(s) をp(w|s)
からサンプルし, 言語モデルを更新する. この操作を
すべての文についてランダムな順番で繰り返し行い,
1: for j = 1 … J do
2:   for s in randperm (s1, … , sD) do
3:     if j>1 then
4:       Remove customers of w(s) from Θ
5:     end if
6:     Draw w(s) according to p(w|s, Θ)
7:     Add customers of w(s) to Θ
8:   end for
9:   Sample hyperparameters of Θ
10: end for


中国語向けコーパスに関しては、既に手動のものを性能で追い抜いているらしい
宇宙人の言葉を分析するなんて用途にはこういう手法じゃないとできないと思う