情報知能学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 θ = ab 内積 長さの積 問題: なぜ『角度』ではなく、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)を行い、該当プログラムを提示する とともに、出力結果を表示し、結果を検討する
© Copyright 2024 ExpyDoc