解説資料

情報知能学IV
第二回
情報知能学科
白井 英俊
予定表
1. 10月13日:日本語処理の基礎
導入としての「情報検索」の紹介
課題:誰が理想の恋人か?
2. 10月20日:日本語処理の基礎:形態素解析、
文法用語。情報検索プログラム作成
3. 10月27日:正規表現の基礎
4. 11月10日:正規表現の応用
課題の解決
課題:誰が理想の相手か?
出典:豊田秀樹.(2008).『データマイニング入門ーRで学ぶ最新データ解析』.東京図書.
Q君には33人の友達がいる。それぞれの性格を表した
ファイルが z フォルダーにある。
data01.ときどき素直になる。少し離れた距離で見
守ってくれる。周りを良く観察している。
data02.負けず嫌いだし勝気。嫉妬深い感じだし、独
占欲も強そう。
data03.性格は優しい。人の気持を優先的に考えてく
れる。いつも誰かのためを思って一生懸命に行動し
てくれる。普段はとても明るい人。落ち着きが無い
こともある。
...
Q君の理想の相手
• Q君が理想とするのは
「社交的で優しいし、俺のことを優先して
くれるけど、意外とクールな面もある人」
さて、どのようにして、33人から理想の相
手を見つけるか?
情報検索
• コンピュータを利用して、「必要な情報を見つ
ける」こと
• とくに、
理想の
相手
Q君
「ユーザー(人間)の検索質問(query)に適合
Q君の友達
する文書(document)を文書の集まり
Q君の友達たち
(document
collection)の中から見つけ出すこ
と」
情報検索処理の流れ
1. 検索に備えて文書
(document)を「表現」する
--- 索引付け(indexing)
2. 検索質問(query)を「表
現」---典型的には:索引語
の集まりとして表す
3. 文書と検索質問とを比較
して、適合するものを返す
友達の性格記述から
用語を抽出し、「語句の
集まり」として友達を
『表現』する
上と同様に、『理想とする
相手の記述」から語句を
抽出し、「語句の集まり」
として『表現』する
ここでは「ベクトル空間」
モデルを用いて適合度
を計算しよう
索引付け(indexing)
• 文書から索引語を抽出する
Q君の友達の性格記述から語句を抜き出す
• それぞれの文書を特徴づける索引語を漏れ
なく抽出することが大事
• それにはどのようにすればよいのだろうか?
形態素解析器
• 日本語の文(や文章)を、形態素(単語より
もやや細かな単位)に分け、その文法情報な
どを出力するツールがある
有名なのは
Juman(京都大学で開発されたもの)
ChaSen(茶筌、奈良先端大学院大学で開発)
MeCab(和布蕪、京大とNTTの共同開発)
このうち、ChaSenとMeCabは理系ネットワークの
コンピュータにインストールされている
ChaSenの実践
• WinChaというChaSenのGUI(グラフィカル・
ユーザー・インタフェース)を用いる
次の文を形態素解析する:
社交的で優しいし、俺のことを優先してく
れるけど、意外とクールな面もある人
解析結果の例
課題の答え合わせ
• ChaSenのマニュアルを参考として
答えは口頭で
(1) 「表層語、基本形、読み、発音」とは、それぞれ
どのようなものか、説明せよ。
(2) 「品詞、活用」とは、それぞれどのようなものか、
説明せよ。
(3) 文書を特徴づけるために用いるには、「表層語、
基本形、読み、発音、品詞、活用」のうち、どれが
適切だろうか?
(4)「オプション」の欄に表示される記号の意味は?
単語から索引語へ
• 形態素解析器を用いて、日本語の文(や文
章)から、単語(正確には形態素)が切り出せ
ることは分かった
• しかし、単語=索引語だろうか?
つまり、切り出した単語をそのまま、『文書』を特
徴づける「索引語」として用いても良いのか?
索引付け(indexing)
検索に備えて文書(document)を「表現」する
--- 索引付け(indexing)
それぞれの文書において、
どのような索引語が何回くらい出現しているか
を調べる
 索引語の頻度が「文書を特徴づける」
検索質問(query)の「表現」
検索質問(query)を「表現」
---文書の『表現』と同様、どのような索引語
が何回くらい出現しているか、で表現する
索引語ー文書行列
• 索引語ー文書行列:行は索引語、列は文書に対
応付けた行列(matrix)
語句ー文書行列ともいう。どちらも、termdocument matrixの訳
d2における索引語
例:
d1 d2 d3 d4 d5
の出現頻度。
n次元「ベクトル」と
t1 1
0
5
2
3
みなせる
t2 0
3
0
4
0
t2のそれぞれの
.................
文書での出現頻度
ここでは5次元
tn 0
5
0
3
2
ベクトル
ベクトルの「類似性」
• 2次元ベクトルa,bの類似性(どんな関係なら
「似ている」か)を考えよう
• 確認:ベクトルは、向きと大きさをもつ
索引語-文書行列には
このケースは現れない
(1)
a
b
aとbの角度のcos <0.7
(2)
a
b
(3)
a
(4)
b
aとbの角度のcos =0
b
a
aとbの角度のcos =1
ベクトルの類似性...
• ベクトルの間の『角度』で決まる
でも角度をどのように求めるか…
• 復習
(1) ベクトルの内積の計算方法(2次元ベクトルだ
けではなく、多次元ベクトルでも計算できること)
(2) 二つのベクトルの間の『角度』の求め方
ヒント:角度のcosの値でもよい
ベクトルの角度の計算
ベクトルa とb の『角度』を θ とすると、
 
a b
cos θ =  
ab
内積
長さの積
問題:
なぜ『角度』ではなく、cosを求めるのか?
内積はどうやって求めるのか?
ベクトルの角度の計算
a = (1,2,2), b = (3,1,-1) とする。
aとbの内積 = 1*3+2*1+2*(-1)
内積=要素同士の積の和
=3
aとbがなす角のcos = 3 / (3*√11 ) 大小比較なら
= 1/ √11
cosの値で可
二つのベクトルがなす角が0度から90度の範囲
ならば、角の大きさとcosの大きさは相関する
プログラム課題(1)
• ウェブに置いてある findingTheBest.rb におい
て、 innerProduct(u,v) と myCosine(u,v) が
未完成である。それぞれ、u,vの内積を求める
関数と、cosを求める関数である。
• これを完成させて、プログラムを走らせ、結果
を求めよ。改変して、数値の大きいものを5つ
ほど表示させるのもよいだろう。
• このプログラムの他の部分については講義
中に解説するが、自分でも理解してみよう
発展:TF-IDF
• TF: term frequency
索引語の出現頻度
• 文書を比較する場合、頻度の高い索引語が
あると、それに引っ張ら れて、相関が高くなっ
てしまう傾向がある。 それを補正するひとつ
の方法は (索引語wの出現頻度を f(w) で表
わす)log(f(w)+1) を「新たな出現頻度」として、
索引語-文書行列をつくり直すこと
TF-IDF (2)
IDF: Inverse Document Frequency
直訳: 逆 文書
頻度
索引語(t)がどのくらいの文書に現れているか
N: 総文書数、 Nt : 索引語(t)が現れる文書数
IDF(t) = log(N/Nt)
Nt=Nの場合や、Nt=N/100の場合はどんな値になるか?
TF-IDF : log(f(w)+1)* log(N/Nt) を索引語-文
書行列の要素として採用する
プログラム課題(2)
• TF-IDFによって索引語-文書行列を作るよう、
プログラムを改変してみる
• これ以外にどのような「文書の類似度計算方
法」があるかを調べてみよう。
まとめと課題
• 検索要求と索引語-文書行列による情報検索の方
法
• ベクトルの内積、ベクトルの角のcosの計算法
• TF-IDFの考え方と計算方法
• 具体的なプログラムの実現
課題:「今日学んだこと」を文章で書く。
プログラム課題(1)を行い、該当プログラムを提示する
とともに、出力結果を表示し、結果を検討する