"トピックモデルによる統計的潜在意味解析"を読んでLDA(Latent Dirichlet Allocation)を実装しました
"トピックモデルによる統計的潜在意味解析"という有益な書物が発売されたので読んでみました。
それなりに高度な話題を簡潔に解説した素晴らしい本で、これを読んだことでよくわかっていなかったCollapsed Gibbs Sampling版のLDAを実装することができました。
トピックモデルに興味がある人は何がなんでも買ったほうがよさそう。
https://github.com/echizentm/LDA
LDAがどういうものかわかっていればp.40〜p.57あたりを読むだけでいけそうです。前にLDAを作ったときは元論文に書いてある変分ベイズを使ったやり方をしていたのですが、多分Collapsed Gibbs Sampling版のほうが簡潔にかけるし直感的にもわかりやすいので良い気がします。
githubにおいてあるサンプルを実行すると以下のような感じになります。
apple(果物、企業)やorange(果物、色)のような複数の意味のある単語が含まれていますが、うまい具合に3つのトピックが抽出されます。
$$ perl sample.pl 3 < documents.json topic[0] google 0.333333333333333 microsoft 0.169204737732657 amazon 0.169204737732657 apple 0.155668358714044 orange 0.0541455160744501 topic[1] orange 0.293274531422271 apple 0.230429988974642 peach 0.11135611907387 grape 0.110253583241455 pineapple 0.110253583241455 topic[2] red 0.201236263736264 blue 0.200549450549451 green 0.193681318681319 yellow 0.0686813186813187 magenta 0.0686813186813187