MALLETでLDAやってみた
前回、gensimでLDAをやろうとしましたが、メモリエラーをはいたので、
MALLETでLDAをやってみました。
備忘録に。
基本的には公式のチュートリアルを読めばできる。
今回は、20_Newsgroupsのmisc.forsaleの文章を入力として使用。
以下からダウンロード可能。
Home Page for 20 Newsgroups Data Set
まずは、MALLETをダウンロード。
次に、上で用意した文章をMALLET形式に変換。
bin/mallet import-dir --input /data/topic-input --output topic
-input.mallet --keep-sequence --remove-stopwords
最後にMALLET形式に直した文章でトピックモデルを構築。
bin/mallet train-topics --input topic-input.mallet --num-topics 100 --output-state topic-state.gz
簡単。
ちなみに、ModelOutputの形式には色々とある。
--output-doc-topics [FILENAME]
を指定した場合の出力は、文書トピック行列。
以下の形で出力される。
Path/misc.forsale/70337 17 0.20703125 84 0.05859375 22 0.05078125 90 0.03515625 77 0.02734375 63 0.02734375 57 0.02734375 29 0.02734375 95 0.01953125 68 0.01953125 62 0.01953125 .......
おそらく、misc.forsaleの70337文書は、17番目のトピックを0.207含んで...のような形。
しかし、トピック単語行列の出力はデフォルトでは生成できない?
LDAって結局は文書単語行列とトピック数を入力として、
文書トピック行列とトピック単語行列を出力するって認識だったのだけど
違うのだろうか。
もう少し頑張る。