隣のデスク覗く言語さん

unityとかc#とかの勉強・発見ログです.参考まで.

LDA(Latent Dirichlet Allocation)について調べたので自分なりにまとめる

はじめに

普段はUnityのことばかりですが,分析系にも高い関心があるので,備忘録がてら記事にしてみました.
 
トピックモデル分析の内,LDAについてまとめていこうと思います.
自分の意見や使ってみた印象も混じっているので悪しからず.引用元は明記しているはず…です.
LDAは文書集合から,主たる話題を半自動的に推定することができるテキストマイニング手法です.

内容

文献調査

大元の文献はこちらです.
David M. Blei, Andrew Y. Ng, Michael I. Jordan, "Latent Dirichlet Allocation,"Journal of Machine Learning Research 3, (2003), pp.993-1022,
 
Blei’03のアブストラクトの訳
私たちはテキストコーパースのような離散的データの収集のための生成確率モデルである,潜在ディリクレ配分法「LDA」について述べます.
LDAは3層の階層型ベイジアンモデルであり,各収集ノードは基礎となる話題(トピック)の集合の有限混合分布としてモデル化されています.
各トピックは,トピック確率の基礎となる集合全体において,無限混合分布としてモデル化されます.
テキストモデルの文脈としては,トピック割合は文書の明白な表現を提供します.
私たちは,経験的ベイズパラメタ推定のための変分ベイズ法と,EMアルゴリズムに基づく効率的な近似推論手法を提案する.
ユニグラムモデルと確率的LSIモデルを組み合わせた手法とを文書のモデル化,テキスト分類,協調フィルタリングで比較した結果を報告する.
3層の階層型ベイジアンモデル,というのが,よくLDAで検索した時に出てくるグラフィカルモデルを指します.
 
もっと具体的に応用し,科学系論文の文書を対象にLDAを利用した文献です.
Griffiths TL, Steyvers M., “Finding scientific topics”,Proc Natl Acad Sci U S A. vol.101, (2004), pp.5228-5235
 
Griffiths’04のアブストラクトの訳
文書の内容を判断する最初のステップは,文書アドレスのトピックを決定することである.
私たちはBleiらによって導入された文書生成モデルについて述べる.
各文書は,トピックに関する分布を選択し,この分布に従って選択されたトピックから,文書内の各単語を選択することで生成される.
私たちは,推論のためのマルコフ連鎖モンテカルロアルゴリズムモデルを提案する.
このアルゴリズムを使用して,PNASのアブストラクトを分析し,ベイジアンモデル選択を使用しトピック数を確定します.
抽出されたトピックは,論文の著者が提供する区分指定と一致しており,データ内の構造を追った時系列を調べることによって「流行りの言葉」を特定し,その意味を表現するために,私たちはアブストラクトのタグ付けを行った結果を示す.
(「文書アドレスのトピックではなく」,「文書のトピックの所在」,とでも訳したほうがわかりいい?)
訳は参考程度にしてください…ひどく自信がないです…
 
この文献は観点が大変素晴らしく「いつどんなものが流行ったのだろうか」ということを機械的かつ定量的に示すことができます.さらに,学習した結果から,未知の文書のトピックを推定することもできます
LDA自体がLSIと呼ばれる分析の派生というかリスペクトしたモデルです.LSIは次元圧縮を行い,トピックと似た次元を抽出することができます.簡単に言うと,よく似た意味で使われる単語をグルーピングしてくれます.
一方,LDAは確率的にトピックを割振ります.この仕組みは,例えば,未知の文書などにおいて得られた,「直接的に観測されていない単語の組み合わせを含む文書」についても,トピックを予測することができる仕組みになっています.
 

何ができるの?

  • 大量の文書集合からトピック(話題)を半自動的に,推定することができる
  • 話題を推定することで個々の文書でどんな話がされているのかを半自動的に分類することができる
 

だから〜…それができると何ができるの?

  • 自動分類自体に価値がある.例えば,流行り廃りや,ブームの系統を見出すことができる.ビッグデータ解析にも使える.
  • よく似た話題の文書をレコメンドすることができる.例えば,前に見た文書が野球のニュースだったら,次のおすすめも野球の記事にできたりする.
  • 同じ要領で,よく似た趣味やよく似た文書を閲覧する人をおすすめすることができる.
 

LDAの利点は?

  • 比較的推定精度が良いらしい
  • 一つの文書にいくつも話題があるかもしれない,ということを確率分布として表してくれるので,あらゆる可能性を否定しない
  • 引用文献が非常に多く,今や各種言語でライブラリが豊富
  • 最近は理論としては下火で,応用として多分野に渡っている印象
  • テキストデータ以外にも使おうと思えば使える.物の配置とか人の動きとか画像の特徴量を分析すれば,同じようなニュアンスを持った配置や動き・画像を半自動分類できる
 

LDAの欠点は?

  • データがたくさん必要
  • 美しい文書でないと上手く行かない(という印象.まあどんなテキストマイニングもそうかもしれませんが).ネットスラングが多かったり,日本語として文書が崩れていると,ノイズなのか意味を持つ文字列なのか判断が難しい.
 
分析しやすい←国や政府の文献>企業が出す正規の文書>ニュース記事>>ブログ記事>=メール文書>自由記述アンケート>Twitter>=2ちゃん(現5ちゃん)→分析しにくい
 
※あくまで私の印象
  • 国や政府の文書:日本語がしっかりしている.最近ポッと出てきた単語やネットスラングは使わない傾向が強いので分析しやすい
  • 企業が出す正規の文書:日本語がしっかりしている.ただし,製品名やカタカナ語が多いと分析が面倒になりやすい
  • ニュース記事:日本語が比較的しっかりしている.固有名詞,()つき文書や,上記と同じくカタカナ語が多いと分析が面倒.
  • ブログ記事:たまに日本語が崩壊している.本ブログもこれに該当する.固有名詞でも()つけでも,英語ローマ字混じりもなんのその,伝われば良い文書なので,基本的には分析するには事前のノイズ除去が必要
  • メール文書:ブログ記事と同じく.あとは,定型文が多いので過学習するし,プライバシー的にも配慮に困る
  • 自由記述アンケート:意外と人はきれいな日本語を書くことはしない.というのが私のこれまでの印象.ノイズ除去必須
  • Twitter:言わずもがなですが,文書としては実に実に玉石混交.ニュースであったり,政府の通知であったり,小馬鹿にしたような文書まで色々あるのが分析上は厄介
  • 2ちゃん(現5ちゃん)ネットスラングの元凶とも言える新しい言葉を生成する.「www」とかですら分析上は厄介ですし,「www」も意味を持つ単語と位置づければそうとも言えるので,解釈が大変難しい
 
ただし,ある程度フォーカスが定まっていればTwitter文書なんかでも分析しやすい.例えば,特定の検索キーワードの検索結果や,ある「Twitterまとめ」みたいな文書
 

LDAの評価基準

LDAの評価基準には諸説あるため,最終的な解釈が重要となる(客観性を担保するのが難しい)
Perplexityという評価基準もあるが,最終的には人が解釈できないと意味がないとする解釈もあるようです.
 
確かにライブラリなど駆使して使ってみた感じでは,Perplexityが絶対というのはよろくなさそう.表現のゆらぎやノイズが完璧に考慮できていないと良い結果にはならないと思います.

LDAどんなもんじゃい

word2vecが流行った影響で現在は下火感強いですが,私的には大変利用価値のある手法だと思っています.要はケース・バイ・ケースです.
 

まとめ

  • LDAは大量の文書の半自動的にトピック(話題)を推定し,分類することができる手法
  • 流行り廃りを把握したり,おすすめをレコメンドすることに利用することができる.
  • 汎用性が高く,やろうと思えばテキスト以外にも用いることができる.

 

今後

近々LDA使った分析についてアップしたいです