単語リストのトピックモデル解析

 ポスター著者ごとの単語リストを作成したのですが、これからどのように似た研究分野をクラスタリングすればいいのかを考えていました。
 すると、牧場名産品である「PCRH(プーアル茶)」で利用されている、LDA(Latent Dirichlet Allocation)という、トピックモデルがあるというお話をいただきました。

 LDAの詳しいアルゴリズムはわかりませんが、ある同じ文章中に出現する単語は、おなじトピックを表していると考えられるという前提により、単語リストを与えると各単語をT個のトピックに振り分けてくれる、という感じのものだそうです。
 詳しくは、かつての牧場民で大先輩の@y_benjo氏が作成されたスライド
http://www.slideshare.net/ybenjo/patent-analysislda-and-spotfire
をご覧ください。

 そして今回、y_benjo様の遺産、GitHubのLDA実装(https://github.com/ybenjo/LDA)をそのまま使わせていただくことにしました!!
 さっそく上記ページよりダウンロードしてきて、牧場のマシンにg++ 4.8をインストールしてもらってコンパイルしました。

 その後、「Author-Topic Model」で使えるように、私の単語リストを改変するRubyスクリプトを作成しました。
 各筆者ごとにスコアつき単語リストがあるので、スコアが2以上の単語を筆者のポスター名の後ろに、"\t"をはさみながら追記していくだけのプログラムです。

 これで作成した単語リストを「author_topic」に渡し、αを0.1、トピック数を5、イテレーションを100、出力制限を100語にして実行してみました。
 渡した単語リストは、約4000人のポスター筆者について、各30単語ぐらいのものでしたが、計算は2分程度で終わり、結果を見ることができました。
 5つのトピックに分かれるように指定しましたが、単語を見たところ、だいたい「発現解析」「がん治療」「シグナル伝達」「DNA配列解析」「メディカル研究」といったような分野の単語が集まっているようでした。なかなかいい感じに分かれています。

 次回は、使用している単語リストについて、ポスターの英語アブストラクトの単語に重きを置くように修正して、トピック解析を続けてみようと思っています。