「英語版WikipediaでLDA」に続いて、日本語版で試してみる。
日本語の場合は形態素が必要になる。そうすると、ぐぐってみると、jawikicorpus.pyというのを用意して、コーパスを利用することになる。
でも、ぐぐってみると、古かったり、動くのかよくわからないものがいろいろと転がっている感が…。あとは、形態素解析もmecabだったりとか…。
今回、この話の流れの一番始めにElasticsearchに突っ込んでいたりとかで、Elasticsearchの形態素機能を利用できるのでそれを利用することにしたい。でも、ElasticsearchのAnalyzeAPIは名詞などの品詞情報を取得することができない。というわけで、elasticsearch-extended-analyzeをElasticsearchに入れる必要がある。
$ cd $ES_HOME $ bin/plugin -i info.johtani/elasticsearch-extended-analyze/1.4.1
上記のプラグインを入れたら、Elasticsearchを再起動する。あと、WikipediaをElasticsearchに取り込むにあるようにja_analyzerが設定されたインデックスを用意しておく必要がある。
そして、今回利用するjawikicorpus.pyはここに置いておくので、取得して適当に変えてください。変える必要があるのはElasticsearch Infoのコメントを置いたあたりかも。このファイルでは名詞だけに絞っているので、そこを編集したりとかもありかも。
という感じで、ここまで準備ができれば、英語版と同様に実行すればよい。まずは、wikipediaの日本語ファイルをダウンロードする。
$ wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
次にコーパスを作る。
$ python jawikicorpus.py jawiki-latest-pages-articles.xml.bz2 wiki_ja_output
トピックモデルを作成する。
$ python wiki_lda.py --wordids wiki_ja_output_wordids.txt.bz2 --tfidf wiki_ja_output_tfidf.mm --output wiki_lda_ja.pkl
という感じでできあがり。
model.print_topics(100)とかすると、形態素解析を実行する前にwikipedia記法を取り除いて文書にした方がコーパス的には良いかなというような気も…。