t - 辻慶太のホームページ

Download Report

Transcript t - 辻慶太のホームページ

知識情報演習Ⅲ(後半第2回)
辻 慶太
http://tsujikeita.hp.infoseek.co.jp/cje3
1
情報検索システムの世界観
情報の生産者
研究者,作家,記者など
情報の最終利用者
(エンドユーザ)
検索
情報の登録者
生産
計算機上のシステム
DB登録者,分類者,
索引作成者など
登録
蓄積される情報
図書,雑誌,画像,音声など
オフライン処理
支援
検索エンジン,DB,
インタフェースなど
人間の仲介者
代行検索者,図書館員など
オンライン処理
2
情報検索の基本モデル
情報
解釈
文書
情報要求
検索質問
索引付け
内部表現
内部表現
照合
狭義の情報検索
3
※索引付け?
→ ブックマークでタグを付けるようなイメージ
「南アジアの…」と
いうページに対し
て,この人は:
“University”,
“Science”,
「図書館」
「オープンアクセス」
といったタグを付け
ている=索引を付
けている。
4
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
5
図書館に関する文書と判断できるならば出力する。
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
6
図書館に関する文書と判断できるならば出力する。
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
7
図書館に関する文書と判断できるならば出力する。
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
8
図書館に関する文書と判断できるならば出力する。
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
9
図書館に関する文書と判断できるならば出力する。
照合
• 索引語を中継して検索質問と文書を照合し,
条件に一致する文書を取得する
→ 「図書館」というキーワードで検索してくる人がいたら,
「図書館」という索引語が付与された文書がないか探す。
• 2つの検索モデルに大別することができる
– 完全一致(exact match)
– 最良一致(best match)
→ 「図書館」という索引語が付与
された文書だけを出力する。
→ 「図書館」という索引語が付与されていなくても,何となく
10
図書館に関する文書と判断できるならば出力する。
完全一致
• ブーリアンモデルが代表的
– 古典的なキーワード検索
• 論理演算子(AND,OR,NOT)で式を構成
– 例: 中華料理 AND レシピ NOT スープ
• 論理式に一致する文書だけが検索される
• ただし,厳密なNOTではないことが多い
– 絞込み情報としての利用が中心
– 例: NOT 犬 → 「犬」を含まない文書が全て出る
わけではない
11
最良一致
• 文書が検索質問に一致する度合い(スコア)
を計算する
• スコアを用いて文書を順位付けて表示する
• スコア: Retrieval Status Value (RSV)
• 検索質問は,キーワードの集合として表現
– 「bag-of-words」
– キーワード間の関係や語順は無視
12
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
13
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
→ 文書と検索式を共に言葉の
頻度ベクトルなどで表し,両者
の内積が高い文書を出力する。
• 確率型モデル
システムの例: OKAPI
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
14
最良一致の代表的なモデル
• ベクトル空間モデル
→ Gerald Salton が提案。
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
15
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
16
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
→ OKAPI BM25:
文書dがキーワードqに適合
している確率を推定し,値が
高いものを出力する。
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
17
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
→ Stephen Robertson が提案。
OKAPI BM25 の“BM”は
文字通り“Best Match”(最良
一致)の略。
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
18
最良一致の代表的なモデル
• ベクトル空間モデル
システムの例: SMART
• 確率型モデル
システムの例: OKAPI
• どちらのモデルも1970年代に提案され,現在
も改良が重ねられている
– 両モデルの検索精度に大きな違いはない
19
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
「図書館システム」からバイグラムを
切り出すと「図書」「書館」「館シ」「シス」…
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
20
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
21
不要語(stopword)
• 検索の役に立たない語 (they, might など)
• 不要語辞書を用意しておくことが多い
– 高頻度語: 「WWW」など
– 機能語: 「前置詞(of)」など
• 語の分類
– 内容語: 名詞,動詞,形容詞など
– 機能語: 助詞,助動詞,冠詞,前置詞など
22
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
23
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
24
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
25
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
26
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
“libraries”という表記で検索
してきた人に対しては“library”
という表記で索引付けされて
いる文献も出力したい。
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
27
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
だが“libraries”と“library”は
文字列としては異なっており,
コンピュータは同じ語とみなし
てくれない。
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
28
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
ならば“libraries”は“library”
に変形すればよい。あるいは
“libraries”も“library”も末尾を
削って“librar”などにしてしま
えばよい。
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
29
接辞処理(stemming)
• 活用形を原形に戻し,索引語の表記を統一
– 質問と文書における表記の違いを吸収
• いくつかの手法がある
– 辞書の利用
– 語尾の自動削除
ならば“libraries”は“library”
に変形すればよい。あるいは
“libraries”も“library”も末尾を
削って“librar”などにしてしま
えばよい。
• 自動削除の場合は,必ずしも言語学的に意
味のある単位ではない点に注意
例: facility(単数形),facilities(複数形)
– どちらも facilit になるかもしれない
30
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
31
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
32
ホデレ賞(2008年度)の受賞者が決まりました。
形態素
原形
品詞
ホデレ
賞
(
2008
年度
)
の
受賞
者
が
決まり
まし
た
。
ホデレ
賞
(
2008
年度
)
の
受賞
者
が
決まる
ます
た
。
未知語
名詞
記号
数字
助数詞
記号
助詞
名詞
接尾辞
助詞
動詞
助動詞
助動詞
記号
手順(1)~(3)の例
上の例文に対する
形態素解析結果
赤字部分を索引語
として抽出する
33
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
34
索引付けの手順概要
(1) 索引語の抽出
文字バイグラム,単語,フレーズなど
(2) 不要語の削除
(3) 接辞処理
(4) 索引語の重み付け
検索手法(検索モデル)によっては不要
例えば,論理式によるブーリアンモデルでは不要
(5) 索引ファイルの編成
35
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
36
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
37
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
38
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
後で詳細を説明
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
39
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
40
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
41
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
これから詳細を説明
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
42
TF: 索引語頻度
• Term Frequency(TF)
→ ここで言うTermとは索引語を表す
• tf ( t , d ) と表す。
文書 d における索引語 t の出現頻度
→ なぜ用いるか?
→ ある文書によく出現する索引語は,その文書
をよく特徴付けるだろうという仮説に基づく
43
TF: 索引語頻度
• Term Frequency(TF)
→ ここで言うTermとは索引語を表す
• tf ( t , d ) と表す。
文書 d における索引語 t の出現頻度
→ なぜ用いるか?
→ ある文書によく出現する索引語は,その文書
をよく特徴付けるだろうという仮説に基づく
44
TF: 索引語頻度
• Term Frequency(TF)
→ ここで言うTermとは索引語を表す
• tf ( t , d ) と表す。
文書 d における索引語 t の出現頻度
→ なぜ用いるか?
→ ある文書によく出現する索引語は,その文書
をよく特徴付けるだろうという仮説に基づく
45
TF: 索引語頻度
• Term Frequency(TF)
→ ここで言うTermとは索引語を表す
• tf ( t , d ) と表す。
文書 d における索引語 t の出現頻度
→ なぜ用いるか?
→ ある文書によく出現する索引語は,その文書
をよく特徴付けるだろうという仮説に基づく
46
TF: 索引語頻度
• Term Frequency(TF)
→ ここで言うTermとは索引語を表す
• tf ( t , d ) と表す。
文書 d における索引語 t の出現頻度
→ なぜ用いるか?
→ ある文書によく出現する索引語は,その文書
をよく特徴付けるだろうという仮説に基づく
47
TFの例
犬 … 犬犬
犬 … ネコ …
ネコ … 犬
犬
文書A
文書B
tf ( 犬 , A )  5
tf ( 犬 , B )  1
tf ( ネコ , A )  2
48
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
これから詳細を説明
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
49
索引語の重み付け
• ある文書を特徴付ける索引語には高い重み
を与える
• 伝統的な手法に TF.IDF法がある
– TF: 索引語頻度
– IDF: 逆文書頻度
これから詳細を説明
• 完全一致(ブーリアンモデル)では不要
→ ブーリアンモデルでは索引語に「あるかないか」
だけ考える。「どれくらいあるか」は考えない。
50
IDF: 逆文書頻度
• Inverse Document Frequency(IDF)
• 少数の文書にしか現れない索引語を重視する
idf ( t )  log
N
1
df ( t )
N: コレクション中の文書総数
df(t): 索引語 t が出現する文書数
→ なぜ用いるか?
→ TFだけでは問題がある。TFが高い語は多くの
文書に出現する為,特定の文書を弁別する能
力が低い
51
IDF: 逆文書頻度
• Inverse Document Frequency(IDF)
• 少数の文書にしか現れない索引語を重視する
idf ( t )  log
N
1
df ( t )
N: コレクション中の文書総数
df(t): 索引語 t が出現する文書数
→ なぜ用いるか?
→ TFだけでは問題がある。TFが高い語は多くの
文書に出現する為,特定の文書を弁別する能
力が低い
52
IDF: 逆文書頻度
• Inverse Document Frequency(IDF)
• 少数の文書にしか現れない索引語を重視する
idf ( t )  log
N
1
df ( t )
N: コレクション中の文書総数
df(t): 索引語 t が出現する文書数
→ なぜ用いるか?
→ TFだけでは問題がある。TFが高い語は多くの
文書に出現する為,特定の文書を弁別する能
力が低い
53
IDF: 逆文書頻度
• Inverse Document Frequency(IDF)
• 少数の文書にしか現れない索引語を重視する
idf ( t )  log
N
1
df ( t )
N: コレクション中の文書総数
df(t): 索引語 t が出現する文書数
→ なぜ用いるか?
→ TFだけでは問題がある。TFが高い語は多くの
文書に出現する為,特定の文書を弁別する能
力が低い
54
IDF: 逆文書頻度
• Inverse Document Frequency(IDF)
• 少数の文書にしか現れない索引語を重視する
idf ( t )  log
N
1
df ( t )
N: コレクション中の文書総数
df(t): 索引語 t が出現する文書数
→ なぜ用いるか?
→ TFだけでは問題がある。TFが高い語は多くの
文書に出現する為,特定の文書を弁別する能
力が低い → 例えば「は」「が」などはTFが非常に高いが
ほとんどどの文書にも現れる為,文書の特徴は
55
表さない(弁別性に欠ける)。
逆文書頻度(つづき) N=100の場合
逆数を取ることで
df(t)が小さいほど
大きな値にする
対数を取ることで変化分
をなだらかにする
1を足して,重みを
正数にする
df(t)
N/df(t)
log(N/df(t)) log(N/df(t))+1
1
100
6.64
7.64
2
50
5.64
6.64
5
20
4.32
5.32
10
10
3.32
4.32
100
1
0
1
56
IDFの例
動物
ネコ
動物
犬
犬
動物
犬
ネコ
動物
犬
ロボット
N=5
df 動物=5,犬=4,ネコ=2,ロボット=1
idf(動物) = 1
idf(犬) = 1.32
idf(ネコ) = 2.32
idf(ロボット) = 3.32
動物
動物
犬
動物=6,犬=5
• idfの最小値
• 「動物」では全文書が検索
されてしまい,弁別性が低い
57
TF.IDF法による重みの計算
• 簡単な計算方法
w ( t , d )  tf ( t , d )  idf ( t )
文書 d における索引語 t の重み
• 以下のような行列で表現できる
d1
t1
t2
t3
t4
d2
d3
d4
w(t2,d3)の値
d5
58
転置ファイルの例
索引語
文書ID
索引語の重み
ハブ
001005
0.532
469032
12.54
980001
0.002
ハブ酒
......
59
オンライン処理
① 検索質問から索引語(検索語)を抽出する
② 各索引語について索引から以下を取得する
– その索引語を含む文書の集合
– その索引語の重みw(t,d)
③ 各文書のスコアを計算する
– その文書が含む検索語の重みを総和する
④ スコアに基づいて文書を整列(ソート)する
60
オンライン処理の図解
犬 ロボット
検索
①索引語の抽出
犬
文書集合
D1~D10
索引付け
(オフライン)
→ D2(0.1) D3(0.8) D5(1.2) D9(0.1)
ロボット → D1(1.3) D3(0.7) D5(0.1)
②文書と重みの探索
③スコアの計算
D1 = 1.3
D2 = 0.1
D3 = 0.8 + 0.7 = 1.5
D5 = 1.2 + 0.1 = 1.3
D9 = 0.1
1. D3
2. D5
3. D1
④文書の整列 4. D2
5. D9
索引
転置ファイル
個別の文書を
読む場合
61
演習: 「Perl入門」が終了した人
• 複数のテキストファイル(英文)を読み込んで,
単語の重み w(t,d) を計算するプログラムを
作成せよ
– ここで,t = 1つの単語,d = 1つのファイル
• 入力や出力の形式は各自で決めてよい
• 入力するファイルの件数の大きさは段階的に
拡張すること
– 少ない件数の小さなファイルから始める
62