情報知能学基礎演習 豊田秀樹(2008)『データマイニング入門』

白井ゼミ
豊田秀樹(2008)『データマイニング入門』 (東京図
書)第9章
情報知能学科
白井 英俊
1
潜在意味分析(LSA)
• LSA: Latent Semantic Analysis
人間の意図、意味という背景をとらえた情報
検索を可能にするために開発された手法
⇒ 言葉の同義性や多義性に対処するために発
展した統計的技法
潜在意味索引(latent semantic indexing)とも
潜在意味分析(LSA)(続)
• 特徴: 文書には意味の構造が存在する
文書中の「意味」を表す語句を行列で表現
この行列を分解する
⇒複数の語句の背後に共通して潜在する意味構造
を抽出
語句-文書行列を作成し、この行列を特異値分解によ
り、より少ない次元で、本来の情報を表現する
意味の定式化:語句-文書行列
語句―文書行列:すべての文書の現れる語句を行、対象の
文書を列に配置した共起行列
要素は出現(1)・非出現(0)、または出現頻度数
表9.1 語句-文書行列の例(辞書定義から、一部)
病院
医院
クリニック
少年院
医師
0
0
2
0
医療
1
0
0
0
病気
0
1
0
0
患者
1
0
0
0
収容
1
0
0
1
施設
0
0
1
1
送致
0
0
0
1
特異値分解
• 語句-文書行列から、潜在的な意味の構造を特異
値分解により抽出
• 語句t個、文書d個の語句-文書行列 M td に対し
Mtd  TtnSnn D'd n
ここで S は対角要素に特異値と呼ばれる非負の値
が大きい順に配置された対角行列
n はAの行と列のうち値の小さい方(n=Min(t,d))
T の各列は左特異ベクトル(語句の特徴)、Dの各列
は右特異ベクトル(文書の特徴)
nはMの階数(Mを構成する独立ベクトルの個数), 特異値は
その「強さ」(貢献度)と考えるとわかりやすいだろう
特異値分解(図示してみると)
病院 医院 クリニック 少年院
医師
0 0
2
0
医療
1 0
0
0
病気
0 1
0
0
患者
1 0
0
0
診察
1 1
1
0
治療
1 1
1
0
収容
1 0
0
1
施設
0 0
1
1
矯正
0 0
0
1
送致
0 0
0
1
裁判所 0 0
0
1
=
-0.47
-0.16
-0.12
-0.16
-0.52
-0.52
-0.25
-0.32
-0.08
-0.08
-0.08
-0.22
0.01
-0.11
0.01
-0.20
-0.20
0.44
0.32
0.43
0.43
0.43
0.62 0.300
-0.37 0.356
-0.14 -0.692
-0.37 0.356
-0.20 -0.187
-0.20 -0.187
-0.32 0.209
0.37 0.004
0.06 -0.146
0.06 -0.146
0.06 -0.146
3.13
2.19
1.98
1.24
-0.51 0.03 -0.74 0.44
-0.37 -0.24 -0.27 -0.86
-0.73 -0.24 0.61 0.19
-0.26 0.94 0.11 -0.18
少ない次元での近似
ˆ
Ttk Skk D'dk  M
td
行列Mをその次元(n)より少ない次元で近似(k<n)
-0.47
-0.16
-0.12
-0.16
-0.52
-0.52
-0.25
-0.32
-0.08
-0.08
-0.08
-0.22
0.01
-0.11
0.01
-0.20
-0.20
0.44
0.32
0.43
0.43
0.43
3.13 0.00
0.00 2.19
病院 医院 クリニック 少年院
-0.51
医師 0.03
0 0
2
0
医療 -0.24
1 0
0
0
-0.37
病気
0
1
0
0
-0.73 -0.24
患者 0.94
1 0
0
0
-0.26
診察
1 1
1
0
治療
1 1
1
0
収容
1 0
0
1
施設
0 0
1
1
矯正
0 0
0
1
送致
0 0
0
1
裁判所 0 0
0
1
病院 医院 クリニック 少年院
医師 0.74 0.65 1.18 -0.07
医療 0.27 0.18 0.37 0.16
病気 0.18 0.19 0.32 -0.13
患者 0.27 0.18 0.37 0.16
診察 0.82 0.70 1.28
0.00
治療 0.82 0.70 1.28
0.00
収容 0.43 0.06 0.33 1.12
施設 0.53 0.20 0.56 0.92
矯正 0.16 -0.13 -0.04 0.96
送致 0.16 -0.13 -0.04 0.96
裁判所 0.16 -0.13 -0.04 0.96
語句の近さの表示
(2次元だからやれること)
0.6
0.8
少年院
送致
矯正
裁判所
0.4
収容
0.2
施設
患者
0.0
病院
医療
-0.2
病気
医師
診察
治療
クリニック
-0.7
-0.6
-0.5
医院
-0.4
-0.3
-0.2
-0.1
類似性
類似性を検討する観点:
• 元の文書間の類似性 文書ごとのベクトルにおける
個々のセルをみる
• 語句間の類似性
• 語句と文書間の類似性
• 検索質問文と元の文書間の類似性
類似性をベクトル間の角度として計
算する(おなじみの方法)
元の行列式ではなく、次元数を少なくした行列で類似度を計算
する⇒ (ノイズや類義語などの影響を削減して)本質的な意味
空間が抽出されている、という期待
類似度の計算(myCosineを使って)
元のデータから類似度を計算:myCosine(a=as.matrix(data))
病院 医院
病院
1.00 0.52
医院
0.52 1.00
クリニック 0.34
0.44
少年院
0.20
0.00
クリニック 少年院
0.34
0.20
0.44
0.00
1.00
0.17
0.17
1.00
次元圧縮データから類似度を計算:myCosine(a=mk)
病院
病院
1.00
医院
0.90
クリニック 0.96
少年院
0.41
医院
0.90
1.00
0.98
-0.04
クリニック 少年院
0.96
0.41
0.98
-0.04
1.00
0.15
0.15
1.00
検索質問文
LSAにおける情報検索では、
検索される文書を潜在意味空
間上のベクトルとして表現
検索質問文もその空間上の
ベクトルとして表現
例:「病気を治療する施設」
病院
医院
クリニック
少年院
-0.51 0.03
-0.37 -0.24
-0.73 -0.24
-0.26 0.94
文書を表現した「語句」によるベクトル表
現:q=(0,0,1,0,0,1,0,1,0,0,0)
病院
=( -0.30, 0.005)
q’=qt Tt×k Sk×k-1
医院
0.999
0.833
クリニック 0.945
少年院
0.282
語句-文書行列の作成
情報知能学IVでやったように。。。
語句-文書行列を作成するには、文書における語句
の出現頻度(L)の代わりに いろいろな重み(G)をも
たせることが用いられている: a(i,j) = L(i,j)×G(i)
 L(i,j)=log(tf(i,j)+1)
# 語句の頻度(term frequency)
 L(i,j)= 1 if tf(i,j)>0 ; 0 otherwise
1
 G(i) 
 j L(i, j )2
 G(i) = gf(i)/df(i) # gf(i):語句iの全体の出現頻度、df(i):
その語句が含まれる文書の数
 そのほかp.284を参照のこと
今日は。。。
• RからMeCab(奈良先端大学院大学で開発され
た形態素解析器、茶筌より高速)を使う
• ひょっとしてガーデンのマシンで動かない場合
は、講義のウェブページからdoctermOrg.csvを
ダウンロードして使うこと
注意:1列目はrow.names、1行目はcolnames、
2行目と3行目はp.289にあるように分析では
不要