OnlineLDAの改良版のStreamLDAを使ってみた

ちょっと動かそうとしてイテレーション回数を200にしたら意外と時間がかかったのでその間に記事を書く。

OnlineLDAの元ソース、論文
David M. Blei
www.cs.princeton.edu/~blei/papers/HoffmanBleiBach2010b.pdf

StreamLDA
jessykate/streamLDA - GitHub

元々のLDAはバッチ学習を行っていて、OnlineLDAは名前通りオンライン学習をする。
ただし、オリジナルのOnlineLDAは最初に読み込む単語を決め打ちするので単語数を増やせないという仕様(オンラインの意味ねぇ)。
StreamLDAは単語数が増えていっても対応するように拡張されて、加えて分かりやすいサンプルまで付属されている。

そういうわけで、その分かりやすいサンプルを実行してみるまでのメモを載せておきます。

#準備
#必要なパッケージをインストール
#pip使うと時間かかります
sudo apt-get install -y python-numpy python-scipy python-matplotlib python-nltk

#インタラクティブシェルを開く
python
>>> import nltk
>>> #コーパスをダウンロード
>>> nltk.download()
#インタラクティブシェルを閉じる

#ソースを取ってくる
git clone https://github.com/jessykate/streamLDA.git
#準備終

#とりあえず試してみる
cd streamLDA
python tests.py
#パープレキシティが表示される(下図)

#実際のデータで試してみる(二つ目の引数はイテレーション回数。多すぎると時間かかるよ)
#dataフォルダの書庫(20_news.tar.gz)は事前に解凍しておく
./stream_corpus.py 20news 50

streamldatest01.png
・・・この図はあまり参考にならないかも。元論文で雰囲気を感じ取ってください。


posted by 右京 | Python
blog comments powered by Disqus
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。