decadence

個人のメモ帳

Mallet Infer-topics

Malletを用いたトピック推論

Mallet TopicModeling - krrrr.comの続き
上記で作成した,tutorial.mallet,tutorial.inferencerを用いて,新しい文書のトピックを推論する

1からの順序を述べると

  1. mallet形式の教師データ作成
  2. トピックモデル構築
  3. tutorial.malletを用いて新しい文書をmallet形式に変換する
  4. 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
--sample-interval INTEGER
--burn-in INTEGER
  • Gibbs Samplingにおけるランダムシード
--random-seed INTEGER

Option項目読んで,推論にGibbs Samplingを用いている事が分かる
LDAにおけるGibbs Samplingは次の資料が参考になる
LDA (Latent Dirichlet Allocation)の更新式の導出