Rによる文書モデルの可視化
~ディリクレ分布、混合ディリクレ分布、LDA



                          #tokyoR
                         @nokuno
自己紹介                           2




 Twitter: @nokuno
 はてな:id:nokuno
 自然言語処理勉強会を主催(第2回は9/25開催)
 PRML/R/Python/Hadoopな...
今日の話題             3




 文書モデルとは
 Wikipediaの可視化
 生成モデルの可視化
  ディリクレ分布
  混合ディリクレ分布
  LDA
文書モデルとは                         4




 文書の生成確率をモデル化
 単語の多項分布を利用するのが一般的
 文書を、その文書が含む単語の割合で表す


     Documents   bag-of-w...
単語の多項分布                                                    5




 ある文書で単語w_kがN単語中m_k回使われる確率

                            ...
パラメータ空間                  6




 多項分布のパラメータμ_kは以下を満たす


  0  k  1

 
  k
      k   1

3変数の場合、この条件を満たすパラメータは
図の三角形上の1...
Wikipediaからの文書unigramの出力               7




Wikipediaのダンプデータから、記事ごとのunigram確率を出力


 本文抽出                   前処理

  形態素解析  ...
ソースコード(Python)   8
データ例                                  9




 Wikipediaの記事からbag-of-wordsを集計・正規化


                  形態素解析・集計




         ...
Wikipediaの可視化        10




   アメリカ




    東京          日本
Wikipediaの可視化(+正規ノイズ)                                                           11




          アメリカ




            東京  ...
Wikipediaの可視化        12




   R




    の           東京
Wikipediaの可視化       13




   こと




    的           物
Wikipediaの可視化       14




    に




    は           の
Wikipediaの可視化       15




    月




    日           年
ディリクレ分布                                               16




                     ( 0 )          K
  Dir (  |  )     ...
ディリクレ分布                                                17




    plot(rdirichlet(10000, c(1,1,1))[,1:2], cex=0.1)
ディリクレ分布                                                      18




    plot(rdirichlet(10000, c(0.1,0.1,0.1))[,1:2], cex=...
ディリクレ分布                                                                          19




 plot(rdirichlet(10000, c(10,10,10...
ディリクレ分布                                                                        20




 plot(rdirichlet(10000, c(1,1,10))[,...
ディリクレ分布                                                                         21




 plot(rdirichlet(10000, c(10,10,1))...
混合ディリクレ分布                                                     22




    x <- rdirichlet(10000, c(10,15,15))[,1:2]
    y <...
混合ディリクレ分布                                                     23




    x <- rdirichlet(10000, c(1,1,10))[,1:2]
    y <- ...
LDA                                                                                24




x <- rdirichlet(10000, c(1,1,1))...
LDA                                                       25




      x <- rdirichlet(10000, c(5,1,1))[,1:2]
      plot(l...
まとめ                      26




 文書モデルは、単語の多項分布の確率モデル
 Wikipediaの分布を可視化した
 ディリクレ分布を色々組み合わせてモデル化
  推論とかわかりません><
  混合ディ...
27




ご清聴ありがとうございました



     Presentation by
Wikipediaの可視化       28




    時代




    世界          年
ベイジアンアップデート   29
Upcoming SlideShare
Loading in...5
×

Rによる文書モデルの可視化 #TokyoR

4,305

Published on

Rによる文書モデルの可視化 #TokyoR

  1. 1. Rによる文書モデルの可視化 ~ディリクレ分布、混合ディリクレ分布、LDA #tokyoR @nokuno
  2. 2. 自己紹介 2  Twitter: @nokuno  はてな:id:nokuno  自然言語処理勉強会を主催(第2回は9/25開催)  PRML/R/Python/Hadoopなど 2002~2006:コミケで同人ゲーム売ってた 2007~2008:未踏でSocial IMEの開発 2009~現在:Web業界勤務(←今ここ)
  3. 3. 今日の話題 3  文書モデルとは  Wikipediaの可視化  生成モデルの可視化  ディリクレ分布  混合ディリクレ分布  LDA
  4. 4. 文書モデルとは 4  文書の生成確率をモデル化  単語の多項分布を利用するのが一般的  文書を、その文書が含む単語の割合で表す Documents bag-of-words w1: μ1 w1: μ1 w1: μ1 μ2 w2: w2: μ2 w2: μ2μ3 w3: w3: μ3 ・ w3: μ3 ・ ・ ・ ・ ・ ・ ・ ・
  5. 5. 単語の多項分布 5  ある文書で単語w_kがN単語中m_k回使われる確率  N K  m m ...m   k Mult (m1 , m2 ,..., mK | μ, N )  mk   1 2 K  k 1 パラメータμ_k:単語w_kが使われる確率 mk ←単語w_kが使われた回数 k  N ←全単語数 ※単語の順序は無視=bag-of-words仮定
  6. 6. パラメータ空間 6  多項分布のパラメータμ_kは以下を満たす 0  k  1  k k 1 3変数の場合、この条件を満たすパラメータは 図の三角形上の1点で表される
  7. 7. Wikipediaからの文書unigramの出力 7 Wikipediaのダンプデータから、記事ごとのunigram確率を出力 本文抽出 前処理 形態素解析 単語に分割 unigramの集計 単語の出現頻度 正規化して出力 正規化項で割り算
  8. 8. ソースコード(Python) 8
  9. 9. データ例 9  Wikipediaの記事からbag-of-wordsを集計・正規化 形態素解析・集計 正規化・単語選択
  10. 10. Wikipediaの可視化 10 アメリカ 東京 日本
  11. 11. Wikipediaの可視化(+正規ノイズ) 11 アメリカ 東京 日本 noise<-matrix(rnorm(2000,sd=0.01),ncol=2) plot(read.table("R/topic10.txt", fileEncoding="utf-8", header=T)[1:2]+noise, cex=0.1)
  12. 12. Wikipediaの可視化 12 R の 東京
  13. 13. Wikipediaの可視化 13 こと 的 物
  14. 14. Wikipediaの可視化 14 に は の
  15. 15. Wikipediaの可視化 15 月 日 年
  16. 16. ディリクレ分布 16 ( 0 ) K Dir (  |  )  K   k k 1  ( i ) i 1 k 1 正規化項 K  0   k k 1  ガンマ関数: ( x)   u x 1e u du 0
  17. 17. ディリクレ分布 17 plot(rdirichlet(10000, c(1,1,1))[,1:2], cex=0.1)
  18. 18. ディリクレ分布 18 plot(rdirichlet(10000, c(0.1,0.1,0.1))[,1:2], cex=0.1)
  19. 19. ディリクレ分布 19 plot(rdirichlet(10000, c(10,10,10))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
  20. 20. ディリクレ分布 20 plot(rdirichlet(10000, c(1,1,10))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
  21. 21. ディリクレ分布 21 plot(rdirichlet(10000, c(10,10,1))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
  22. 22. 混合ディリクレ分布 22 x <- rdirichlet(10000, c(10,15,15))[,1:2] y <- rdirichlet(10000, c(100,20,20))[,1:2] z <- rdirichlet(10000, c(20,50,10))[,1:2] plot(rbind(x, y, z), xlim=c(0,1), ylim=c(0,1), cex=0.1)
  23. 23. 混合ディリクレ分布 23 x <- rdirichlet(10000, c(1,1,10))[,1:2] y <- rdirichlet(10000, c(10,1,1))[,1:2] z <- rdirichlet(10000, c(1,10,1))[,1:2] plot(rbind(x, y, z), xlim=c(0,1), ylim=c(0,1), cex=0.1)
  24. 24. LDA 24 x <- rdirichlet(10000, c(1,1,1))[,1:2] linear <- function(x) {x %*% matrix(c(0.7,0.1,-0.05,0.8),nrow=2) + c(0.05,0.05)} plot(linear(x),xlim=c(0,1), ylim=c(0,1), cex=0.1)
  25. 25. LDA 25 x <- rdirichlet(10000, c(5,1,1))[,1:2] plot(linear(x),xlim=c(0,1), ylim=c(0,1), cex=0.1)
  26. 26. まとめ 26  文書モデルは、単語の多項分布の確率モデル  Wikipediaの分布を可視化した  ディリクレ分布を色々組み合わせてモデル化  推論とかわかりません><  混合ディリクレ分布は意外とよさげ
  27. 27. 27 ご清聴ありがとうございました Presentation by
  28. 28. Wikipediaの可視化 28 時代 世界 年
  29. 29. ベイジアンアップデート 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×