テクノロジー

トピックモデル (LDA)のハイパーパラメータをコーパスから点推定する(コード実装編)

理論編に続いて今回は実際にコード実装を行い、公開データでLDAを実行してみました。

コード実装

実装は統計数理研究所 持橋大地 准教授が作成されたコード(Python)を木村健氏 (https://github.com/kimrin) が修正したものを拡張する形で実装を行います。
具体的には、alpha を実数型から alpha_arr:np.ndarray[ftype_t,ndim=1] と配列型に置き換えて、事後分布の計算処理を、

から

に書き換えます。

さらにイタレーションの最後に以下の alpha の更新処理 update_hyper_params(NW, ND, alpha_arr, beta) を挿入します。

実験

実験するデータとして日本語版wikipediaの記事から作成されたコーパス ja.Text8を使用し、
パラメータ推定しない場合との比較を行います。条件は以下のとおり。

  • 使用データ: jaText8(日本語版wikipediaの一部)
  • トピック数:1000
  • iteration:1000
  • 計算環境:aws ec2 m5.2xlarge
  • 統計数理研究所 持橋大地准教授のライブラリを拡張
    http://www.ism.ac.jp/~daichi/index-j.html
  • パラメータ更新は250iterationごとに実施
  • パラメータ更新有無でPerplexityを比較

Perplexityの比較

青色・オレンジ色がそれぞれパラメータ更新処理無し・有りの結果を表します。

パラメータ更新のタイミングでPerplexityが段階的に減少していることがわかります。

alphaの推定結果

青色・オレンジ色がそれぞれパラメータ更新処理無し・有りの結果表します。

推定した $\alpha$ が非対称になっていることがわかります。

 

トピック分析の結果

次の文章のトピック分析をしてみます。

 

パラメータ推定なし

各トピックの単語内容を次に示します。

topic35 topic47 topic226 topic473 topic551 topic636 topic831
村(3565) 鳥取(455) 岡山(790) ジョン(752) 組合(565) 地域(1411) 行政(721)
むら(492) 米子(141) 倉敷(147) アメリカ(386) 農業(446) 南部(627) 局(579)
かつて(224) 因幡(85) 津山(75) マイケル(326) 協同(262) 北部(624) 機関(545)
あたる(196) 美(83) お(61) アメリカ合衆国(218) 業(207) 位置(538) 設置(541)
旧(174) とっ(69) ま(55) ポール(216) 産業(129) 東(531) 事務(464)
存在(156) 伯耆(63) 備前(51) ニューヨーク(179) 農(118) 北(522) 地方(436)
域(86) とり(58) 旧(51) ジャクソン(150) 連合(97) 南(483) 職員(312)
合併(84) 山陰(58) 内(50) ロバート(144) 水産(96) 西(474) 省(297)
当時(72) 山名(57) 吉備(45) スミス(143) 農場(91) 西部(464) 組織(261)
未(70) 大山(50) かや(43) と共に(126) 農林(74) 地方(409) 制度(237)

 

岡山県の地方自治体のトピックが抽出できていることがわかります。

 

文書のトピック分布を次に示します。

主だったトピックの他に小さい確率のトピックが多く存在しています。

 

パラメータ推定あり

各トピックの単語内容を次に示す。

topic163 topic237 topic610 topic643 topic825 topic869
村(3253) 東(1538) 旧(728) 協会(989) 村(1016) 鳥取(430)
むら(445) 西(1406) 移転(632) 法人(929) 旧(516) 島根(195)
かつて(207) 北(1259) 改称(413) 団体(873) 明治(438) 松江(132)
あたる(190) 地域(1183) 設置(412) 活動(536) 合併(388) 米子(131)
存在(168) 南(1050) 現(375) 設立(528) 昭和(339) 出雲(103)
旧(154) 位置(1025) 地(352) 財団(440) 地区(337) エヴァレット(102)
域(100) 南部(783) 廃止(339) 文化(384) 大字(315) 山陰(64)
当時(76) 北部(705) 合併(299) センター(380) 域(247) 岡山(54)
合併(73) 地(626) 名称(293) 会員(325) 郷(240) 石見(45)
所在(70) km(539) 伴い(277) 目的(316) 江戸(234) 智頭(38)
未(56) 中央(493) 統合(263) 運営(270) 編入(207) とり(38)

 

パラメータ更新なしの場合と同様に、岡山県の地方自治体のトピックが抽出できています。

文書のトピック分布を次に示します。

 

 

パラメータ推定なしに比べ 、小さい確率のトピックの数が絞られている傾向が見て取れます。

1つの文書にトピックが数多く存在することは考えにくいので、パラメータ推定した場合の方がより良い結果が得られたと考えることができます。

 

まとめ

LDAにパラメータ推定を行う処理を取り入れることでPerplexityが下がるだけでなく、
トピックの分布も絞られることがわかりました。

いかがでしたでしょうか、D2Cビジネスエンジニアリング部データソリューション担当では、その他にも実データを使用して最新の論文のPoCやKaggle コンペ参加なども行っております。今後WAQTechでもそれらの模様も投稿されると思いますので、ご興味持っていただき定期的にチェックしていただけたら幸いです。


関連タグ