Upload
yoh-okuno
View
4.271
Download
8
Embed Size (px)
Citation preview
Rによる文書モデルの可視化~ディリクレ分布、混合ディリクレ分布、LDA
#tokyoR
@nokuno
Twitter: @nokuno
はてな:id:nokuno
自然言語処理勉強会を主催(第2回は9/25開催)
PRML/R/Python/Hadoopなど
自己紹介 2
2002~2006:コミケで同人ゲーム売ってた2007~2008:未踏でSocial IMEの開発2009~現在:Web業界勤務(←今ここ)
文書モデルとは
Wikipediaの可視化
生成モデルの可視化
ディリクレ分布
混合ディリクレ分布
LDA
今日の話題 3
文書の生成確率をモデル化
単語の多項分布を利用するのが一般的
文書を、その文書が含む単語の割合で表す
文書モデルとは 4
Documents
w1: μ1w2: μ2w3: μ3・・・
bag-of-words
w1: μ1w2: μ2w3: μ3・・・
w1: μ1w2: μ2w3: μ3・・・
ある文書で単語w_kがN単語中m_k回使われる確率
単語の多項分布 5
K
k
m
k
K
Kk
mmm
NNmmmMult
121
21...
),|,...,,( μ
パラメータμ_k:単語w_kが使われる確率
※単語の順序は無視=bag-of-words仮定
N
mkk
←全単語数
←単語w_kが使われた回数
多項分布のパラメータμ_kは以下を満たす
パラメータ空間 6
10 k
1k
k
3変数の場合、この条件を満たすパラメータは図の三角形上の1点で表される
Wikipediaのダンプデータから、記事ごとのunigram確率を出力
Wikipediaからの文書unigramの出力 7
本文抽出
形態素解析
unigramの集計
正規化して出力
前処理
単語に分割
正規化項で割り算
単語の出現頻度
ソースコード(Python) 8
データ例 9
Wikipediaの記事からbag-of-wordsを集計・正規化
正規化・単語選択
形態素解析・集計
Wikipediaの可視化 10
東京 日本
アメリカ
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)
Wikipediaの可視化 12
の 東京
R
Wikipediaの可視化 13
的 物
こと
Wikipediaの可視化 14
は の
に
Wikipediaの可視化 15
日 年
月
ディリクレ分布 16
K
k
kK
i
i
kDir1
1
1
0
)(
)()|(
正規化項
K
k
k
1
0
0
1)( dueux uxガンマ関数:
ディリクレ分布 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=0.1)
ディリクレ分布 19
plot(rdirichlet(10000, c(10,10,10))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
ディリクレ分布 20
plot(rdirichlet(10000, c(1,1,10))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
ディリクレ分布 21
plot(rdirichlet(10000, c(10,10,1))[,1:2], xlim=c(0,1), ylim=c(0,1), cex=0.1)
混合ディリクレ分布 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
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)
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)
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)
文書モデルは、単語の多項分布の確率モデル
Wikipediaの分布を可視化した
ディリクレ分布を色々組み合わせてモデル化
推論とかわかりません><
混合ディリクレ分布は意外とよさげ
まとめ 26
ご清聴ありがとうございました
27
Presentation by
Wikipediaの可視化 28
世界 年
時代
ベイジアンアップデート 29