どこでも見れるメモ帳

とあるSEの備忘録。何かあれば気軽にコメントください〜

2. LDAによるトピック解析

はじめに

連載記事 はてブ記事を用いた興味分析 の2つ目の記事です.
ここでは,はてブに登録したWebページ全てに対して,LDA*1によるトピック解析を行い,
はてブに登録している内容のトピック(話題,興味の対象)を分析します.
実装の前提として,データの準備(はてブからブログ記事取得・形態素解析)が完了していることを想定しています.

トピック解析とは?

トピック解析とは,入力データのトピック(話題,分野など,大ざっぱな「意味」)を推定することです.データの抽象化とも言えると思います.クラスタリング*2におけるクラスの推定,次元圧縮*3における基底の推定などと非常に似ています.
本記事におけるトピック解析とは,入力のはてブ記事群におけるジャンル推定を意味します.

トピック解析の詳細は,次のページ(PDF)が分かりやすく,オススメです.

LDAとは?

LDAとは,トピック解析手法の一つで,最も有名な手法です.
潜在意味インデキシング(LSI*6を確率化したpLSIを完全にベイズ化した手法です.
1つの文書が複数のトピックから確率的に構成されることを仮定した言語モデルの一手法です.

グラフィカルモデルでは,下図のとおりです.
各種変数/定数に意味を赤字にて補足しました.

計算で求めたい文字は,上図のハイパーパラメータα(トピックの分布)*7とβ(トピックごとの単語の分布)*8であり,
他の文字は観測定数もしくは計算過程で用いるだけの変数です.
文字が多く,何が既知で,何が未知なのか混乱しがちですので,注意が必要です.

LDAの詳細は,次のページ/文献がわかりやすく,オススメです.

私も以下記事にまとめてみました.
ni66ling.hatenadiary.jp

LDAによるトピック解析とその結果

ここでは,持橋さんのlda, a Latent Dirichlet Allocation package.*10を用いてはてブ記事群をLDAにかけます.*11
実装の詳細はGitHubを参照ください.
結果,下図のようなワードクラウドを出力します.

このワードクラウドの見方は次のとおりです.

自分自身,何に興味があるのか,一目瞭然になりますね.面白い...
次回はHDP-LDA*12によるトピック数自動決定可能なトピック解析について書きます.

*1:Latent Dirichlet Allocation

*2:k-meansクラスタリングや混合ガウス分布による確率的クラスタリングなど

*3:主成分分析や独立成分分析,スパースコーディングなど

*4:トピックモデルの日本語の文献では,持橋大地さんの資料が非常に分かりやすいです.

*5:トピックモデルの提唱者B.M.Bleiさんの資料です.

*6:異なる表現だと,潜在意味解析(LSA),主成分分析(PCA),特異値分解(SVD),KL展開など.それぞれ詳細には異なりますが,結果的にやることは同じです.

*7:トピック数Kだけのベクトル

*8:トピックごとに単語数Nだけのベクトル

*9:ただし,ここではLDAの説明はないです.混合ガウス分布(GMM)のベイズ化について詳細な説明があり,これのアナロジーとしてLDAを捉えると理解しやすいです.

*10:変分ベイズによる実装です.

*11:ただし,はてブ記事数は2008年〜2014年までで4600程度です.

*12:Hierarchical Dirichlet Process-Latent Dirichlet Allocation:階層ディリクレ過程 潜在ディリクレ配分法