Mallet Infer-topics
Malletを用いたトピック推論
Mallet TopicModeling - krrrr.comの続き
上記で作成した,tutorial.mallet,tutorial.inferencerを用いて,新しい文書のトピックを推論する
1からの順序を述べると
- mallet形式の教師データ作成
- トピックモデル構築
- tutorial.malletを用いて新しい文書をmallet形式に変換する
- tutorial.inferencerを用いて推論を行う.
1,2,については先の記事を参照
3, tutorial.malletを用いて新しい文書をmallet形式にする
ここでは先の教師で用いたうちの一つのファイル,yard.txtについての推論を行う
bin/mallet import-file --input sample-data/web/en/yard.txt --output yard.mallet --keep-sequence --remove-stopwords --use-pipe-from tutorial.mallet
重要なのは--use-pipe-fromオプション
複数ファイル推論を行うには以前に行ったように,ディレクトリを指定してmallet形式のファイルを作成する
bin/mallet import-dir --input sample-data/web/en --output en.mallet --keep-sequence --remove-stopwords --use-pipe-from tutorial.mallet
この時は,推論時にきちんと各ファイルに対する推論の結果が得られる.
4, tutorial.inferencerを用いて推論を行う
上記で作成したyard.malletを推論させる
bin/mallet infer-topics --inferencer tutorial.inferencer --input yard.mallet --output-doc-topics infer_yard
これにより,infere_yardにトピックの確率が列挙される
先に作成したtutorial_compositionと比較する事で,ほぼ同じトピック生成確率となっていることが確認出来る.
infer-topicsについて
ヘルプを見ると,推論についてのこまかな調整が行える事が分かる.
- オプションをファイルから読み込む
--config FILE
- 指定した閾値以下の確率となっているトピックについて表示しない
--doc-topics-threshold DECIMAL
- 指定した数のトピックのみ表示させる.負数は∞として扱われる.
--doc-topics-max INTEGER
- 推論時のGibbs Samplingを行う回数を指定(default: 100)
--num-iterations INTEGER
- 保存されたサンプル内におけるイテレーション数(default: 10)
--sample-interval INTEGER
- 初期サンプルを取得する前のイテレーション数(default: 10)
--burn-in INTEGER
- Gibbs Samplingにおけるランダムシード
--random-seed INTEGER
Option項目読んで,推論にGibbs Samplingを用いている事が分かる
LDAにおけるGibbs Samplingは次の資料が参考になる
LDA (Latent Dirichlet Allocation)の更新式の導出