スライド 1

これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
以下のようなテキストから成る文献 1 と文献 2 があったとする:
文献 1:レファレンス・サービスに関する文献
調査を行いたい利用者は,レファレンス・サービスにおいて...。調査はまず
事典などの図書を用い...。調査...事典...。例えば酸性紙と湿度・紫外線の
関係を知りたい利用者は...
文献 2:資料保存に関する文献
酸性紙が用いられている図書は湿度と紫外線に弱い為...。湿度は低く保ち,
紫外線は避け...。ある調査によると酸性紙が用いられた事典を利用者が...
この時,「湿度 AND 紫外線 AND 酸性紙」という検索式で検索してきた人
がいたとする。
たしかに文献 1 も文献 2 も「湿度」「紫外線」「酸性紙」という言葉を含ん
でいるが,文献 2 の方が,入力キーワードに対して,より適切な文献の
ように思われる。
そうした適切さに基づくランク付けを行って,より適切な文献を上位に
表示できるようにしたい。
(実際,そうしたランク付けが行えないと,大規模なデータベースでは非常に困る。
例えばサーチエンジンのような大規模データベースに「明治大学」と入力した時,
「明治大学」という言葉を含んだページがすべて,何の順位付けもされずに表示
されたら困る。「明治大学」というキーワードに対して,より適切なページが上位
に出てきて欲しい)
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
この時,「湿度 AND 紫外線 AND 酸性紙」という検索式で検索してきた人
がいたとする。
たしかに文献 1 も文献 2 も「湿度」「紫外線」「酸性紙」という言葉を含ん
でいるが,文献 2 の方が,入力キーワードに対して,より適切な文献の
ように思われる。
そうした適切さに基づくランク付けを行って,より適切な文献を上位に
表示できるようにしたい。
(実際,そうしたランク付けが行えないと,大規模なデータベースでは非常に困る。
例えばサーチエンジンのような大規模データベースに「明治大学」と入力した時,
「明治大学」という言葉を含んだページがすべて,何の順位付けもされずに表示
されたら困る。「明治大学」というキーワードに対して,より適切なページが上位
に出てきて欲しい)
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
この時,「湿度 AND 紫外線 AND 酸性紙」という検索式で検索してきた人
がいたとする。
たしかに文献 1 も文献 2 も「湿度」「紫外線」「酸性紙」という言葉を含ん
でいるが,文献 2 の方が,入力キーワードに対して,より適切な文献の
ように思われる。
そうした適切さに基づくランク付けを行って,より適切な文献を上位に
表示できるようにしたい。
(実際,そうしたランク付けが行えないと,大規模なデータベースでは非常に困る。
例えばサーチエンジンのような大規模データベースに「明治大学」と入力した時,
「明治大学」という言葉を含んだページがすべて,何の順位付けもされずに表示
されたら困る。「明治大学」というキーワードに対して,より適切なページが上位
に出てきて欲しい)
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
この時,「湿度 AND 紫外線 AND 酸性紙」という検索式で検索してきた人
がいたとする。
たしかに文献 1 も文献 2 も「湿度」「紫外線」「酸性紙」という言葉を含ん
でいるが,文献 2 の方が,入力キーワードに対して,より適切な文献の
ように思われる。
そうした適切さに基づくランク付けを行って,より適切な文献を上位に
表示できるようにしたい。
(実際,そうしたランク付けが行えないと,大規模なデータベースでは非常に困る。
例えばサーチエンジンのような大規模データベースに「明治大学」と入力した時,
「明治大学」という言葉を含んだページがすべて,何の順位付けもされずに表示
されたら困る。「明治大学」というキーワードに対して,より適切なページが上位
に出てきて欲しい)
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
例えば文献 1 に,「調査」という言葉は12回,「事典」は9回,「カウンター」は
4回など,以下のように言葉が現れていた場合:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
12回
9〃
4〃
3〃
2〃
1〃
1〃
1〃
文献 1 のベクトル A は (12, 9, 4, 3, 2, 1, 1, 1) となる。
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
例えば文献 1 に,「調査」という言葉は12回,「事典」は9回,「カウンター」は
4回など,以下のように言葉が現れていた場合:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
12回
9〃
4〃
3〃
2〃
1〃
1〃
1〃
文献 1 のベクトル A は (12, 9, 4, 3, 2, 1, 1, 1) となる。
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
例えば文献 1 に,「調査」という言葉は12回,「事典」は9回,「カウンター」は
4回など,以下のように言葉が現れていた場合:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
12回
9〃
4〃
3〃
2〃
1〃
1〃
1〃
文献 1 のベクトル A は (12, 9, 4, 3, 2, 1, 1, 1) となる。
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
例えば文献 1 に,「調査」という言葉は12回,「事典」は9回,「カウンター」は
4回など,以下のように言葉が現れていた場合:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
12回
9〃
4〃
3〃
2〃
1〃
1〃
1〃
文献 1 のベクトル A は (12, 9, 4, 3, 2, 1, 1, 1) となる。
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
例えば文献 1 に,「調査」という言葉は12回,「事典」は9回,「カウンター」は
4回など,以下のように言葉が現れていた場合:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
12回
9〃
4〃
3〃
2〃
1〃
1〃
1〃
文献 1 のベクトル A は (12, 9, 4, 3, 2, 1, 1, 1) となる。
→ ベクトル空間モデルは,そのようなランク付けを実現できる検索モデル
ベクトル空間モデルは,文献と検索式を共に言葉のベクトルで表現する。
言葉のベクトルとは「ある言葉が何回現れていたか」といった情報から成る。
同様に文献 2 では以下のように言葉が現れていたとすると:
調査
事典
カウンター
利用者
図書
湿度
紫外線
酸性紙
1回
1〃
1〃
2〃
5〃
8〃
12〃
14〃
文献 2 のベクトル B は (1, 1, 1, 2, 5, 8, 12, 14) となる。
最後に検索式「湿度 AND 紫外線 AND 酸性紙」のベクトル Q は:
(0, 0, 0, 0, 0, 1, 1, 1)
と表される。
ベクトル空間モデルは,文献のベクトル A, B のうち,どちらが検索式のベクトル Q
に似ているかを算出して,似ている方を 「より適切な文献」 と判断する。
似ている度合いはベクトルの内積によって測られる。
A ・ Q = 12 x 0 + 9 x 0 + 4 x 0 + 3 x 0 + 2 x 0 + 1 x 1 + 1 x 1 + 1 x 1
=3
B ・ Q = 1 x 0 + 1 x 0 + 1 x 0 + 2 x 0 + 5 x 0 + 8 x 1 + 12 x 1 + 14 x 1
= 34
内積 B ・ Q の方が内積 A ・ Q よりも大きいから,ベクトル B の方がベクトル A
よりもベクトル Q に似ていると判断される。
→ 文献 B の方が文献 A よりも,検索式にとって適切な文献と判断される。
最後に検索式「湿度 AND 紫外線 AND 酸性紙」のベクトル Q は:
(0, 0, 0, 0, 0, 1, 1, 1)
と表される。
ベクトル空間モデルは,文献のベクトル A, B のうち,どちらが検索式のベクトル Q
に似ているかを算出して,似ている方を 「より適切な文献」 と判断する。
似ている度合いはベクトルの内積によって測られる。
A ・ Q = 12 x 0 + 9 x 0 + 4 x 0 + 3 x 0 + 2 x 0 + 1 x 1 + 1 x 1 + 1 x 1
=3
B ・ Q = 1 x 0 + 1 x 0 + 1 x 0 + 2 x 0 + 5 x 0 + 8 x 1 + 12 x 1 + 14 x 1
= 34
内積 B ・ Q の方が内積 A ・ Q よりも大きいから,ベクトル B の方がベクトル A
よりもベクトル Q に似ていると判断される。
→ 文献 B の方が文献 A よりも,検索式にとって適切な文献と判断される。
最後に検索式「湿度 AND 紫外線 AND 酸性紙」のベクトル Q は:
(0, 0, 0, 0, 0, 1, 1, 1)
と表される。
ベクトル空間モデルは,文献のベクトル A, B のうち,どちらが検索式のベクトル Q
に似ているかを算出して,似ている方を 「より適切な文献」 と判断する。
似ている度合いはベクトルの内積によって測られる。
A ・ Q = 12 x 0 + 9 x 0 + 4 x 0 + 3 x 0 + 2 x 0 + 1 x 1 + 1 x 1 + 1 x 1
=3
B ・ Q = 1 x 0 + 1 x 0 + 1 x 0 + 2 x 0 + 5 x 0 + 8 x 1 + 12 x 1 + 14 x 1
= 34
内積 B ・ Q の方が内積 A ・ Q よりも大きいから,ベクトル B の方がベクトル A
よりもベクトル Q に似ていると判断される。
→ 文献 B の方が文献 A よりも,検索式にとって適切な文献と判断される。
最後に検索式「湿度 AND 紫外線 AND 酸性紙」のベクトル Q は:
(0, 0, 0, 0, 0, 1, 1, 1)
と表される。
ベクトル空間モデルは,文献のベクトル A, B のうち,どちらが検索式のベクトル Q
に似ているかを算出して,似ている方を 「より適切な文献」 と判断する。
似ている度合いはベクトルの内積によって測られる。
A ・ Q = 12 x 0 + 9 x 0 + 4 x 0 + 3 x 0 + 2 x 0 + 1 x 1 + 1 x 1 + 1 x 1
=3
B ・ Q = 1 x 0 + 1 x 0 + 1 x 0 + 2 x 0 + 5 x 0 + 8 x 1 + 12 x 1 + 14 x 1
= 34
内積 B ・ Q の方が内積 A ・ Q よりも大きいから,ベクトル B の方がベクトル A
よりもベクトル Q に似ていると判断される。
→ 文献 B の方が文献 A よりも,検索式にとって適切な文献と判断される。
報
告
年
間
ァ
レ
ン
ス
メ
デ
ィ
ア
図
書
電 館
子
書
籍
出
版
資
料
湿
度
紫
外
線
酸
性
紙
図
書
カ 事典
ウ
ン
タ
ー
利
用
者
調
査
社
会
日
本
語
ル 情報
ゴ
リ
ズ
ム
レ
フ
ア
標
準
ン
タ
ー
事
典
調
査
14
12
10
8
6
4
2
0
報
告
図
書
館
電
子
書
籍
ィア
ン
ス
年
間
メデ
フ
ァレ
資
料
出
版
酸
性
紙
紫
外
線
湿
度
図
書
利
用
者
カ
ウ
レ
ム
社
会
リズ
情
報
日
本
語
ル
ゴ
ア
標
準
ン
タ
ー
事
典
調
査
報
告
電
子
書
籍
図
書
館
デ
ィア
ス
年
間
レ
ン
メ
フ
ァ
資
料
出
版
酸
性
紙
紫
外
線
湿
度
図
書
利
用
者
カ
ウ
レ
社
会
ズ
ム
情
報
日
本
語
ア
ル
ゴ
リ
標
準
14
12
10
8
6
系列1
4
8
6
系列1
系列1
文献 1
2
0
16
14
12
10
文献 2
4
2
0
検索式
これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
「我々」「場合」のような言葉は,キーワードとしてはあまり意味を成さないが,
文献中によく現れることが多い。文献中の言葉をすべてベクトルに取り上げ,
それぞれの頻度をベクトルの要素の値にすると,上記のような意味のない
言葉の頻度が,内積の計算結果に大きく影響してくることになる。そこで:
→ ① 意味のない言葉はあらかじめストップワードとして把握しておき,
それらはベクトルに組み込まない。
→ ② 意味のない言葉には小さな値が振られるようにする。
という解決策が取られる。
「我々」「場合」のような言葉は,キーワードとしてはあまり意味を成さないが,
文献中によく現れることが多い。文献中の言葉をすべてベクトルに取り上げ,
それぞれの頻度をベクトルの要素の値にすると,上記のような意味のない
言葉の頻度が,内積の計算結果に大きく影響してくることになる。そこで:
→ ① 意味のない言葉はあらかじめストップワードとして把握しておき,
それらはベクトルに組み込まない。
→ ② 意味のない言葉には小さな値が振られるようにする。
という解決策が取られる。
「我々」「場合」のような言葉は,キーワードとしてはあまり意味を成さないが,
文献中によく現れることが多い。文献中の言葉をすべてベクトルに取り上げ,
それぞれの頻度をベクトルの要素の値にすると,上記のような意味のない
言葉の頻度が,内積の計算結果に大きく影響してくることになる。そこで:
→ ① 意味のない言葉はあらかじめストップワードとして把握しておき,
それらはベクトルに組み込まない。
→ ② 意味のない言葉には小さな値が振られるようにする。
という解決策が取られる。
「我々」「場合」のような言葉は,キーワードとしてはあまり意味を成さないが,
文献中によく現れることが多い。文献中の言葉をすべてベクトルに取り上げ,
それぞれの頻度をベクトルの要素の値にすると,上記のような意味のない
言葉の頻度が,内積の計算結果に大きく影響してくることになる。そこで:
→ ① 意味のない言葉はあらかじめストップワードとして把握しておき,
それらはベクトルに組み込まない。
→ ② 意味のない言葉には小さな値が振られるようにする。
という解決策が取られる。
TFIDF という尺度を使う
②でよく用いられる計算尺度に“TFIDF”(ティーエフアイディーエフとよむ)という
のがある。ある文献 d における,ある言葉 w の TFIDF は以下のように定義される。
TFIDF = (文献 d 中の w の頻度) x log (データベース中の全文献数 / w が現れる文献数)
「我々」 「場合」 のような言葉は,データベース中の多くの文献に現れる。
従って,後の項,(データベース中の全文献数 / w が現れる文献数) は
1に近くなる。 log 1 = 0 だから,「我々」 「場合」 の TFIDF は 0 に近い値,
即ち小さな値を取り,ベクトルの内積に影響を与えなくなる。
一方,「酸性紙」 のような言葉は,現れる文献数が少ないので,
log (データベース中の全文献数 / w が現れる文献数) は大きな値を取り,
ベクトルの内積に影響を与えることができる。
②でよく用いられる計算尺度に“TFIDF”(ティーエフアイディーエフとよむ)という
のがある。ある文献 d における,ある言葉 w の TFIDF は以下のように定義される。
TFIDF = (文献 d 中の w の頻度) x log (データベース中の全文献数 / w が現れる文献数)
「我々」 「場合」 のような言葉は,データベース中の多くの文献に現れる。
従って,後の項,(データベース中の全文献数 / w が現れる文献数) は
1に近くなる。 log 1 = 0 だから,「我々」 「場合」 の TFIDF は 0 に近い値,
即ち小さな値を取り,ベクトルの内積に影響を与えなくなる。
一方,「酸性紙」 のような言葉は,現れる文献数が少ないので,
log (データベース中の全文献数 / w が現れる文献数) は大きな値を取り,
ベクトルの内積に影響を与えることができる。
②でよく用いられる計算尺度に“TFIDF”(ティーエフアイディーエフとよむ)という
のがある。ある文献 d における,ある言葉 w の TFIDF は以下のように定義される。
TFIDF = (文献 d 中の w の頻度) x log (データベース中の全文献数 / w が現れる文献数)
「我々」 「場合」 のような言葉は,データベース中の多くの文献に現れる。
従って,後の項,(データベース中の全文献数 / w が現れる文献数) は
1に近くなる。 log 1 = 0 だから,「我々」 「場合」 の TFIDF は 0 に近い値,
即ち小さな値を取り,ベクトルの内積に影響を与えなくなる。
一方,「酸性紙」 のような言葉は,現れる文献数が少ないので,
log (データベース中の全文献数 / w が現れる文献数) は大きな値を取り,
ベクトルの内積に影響を与えることができる。
②でよく用いられる計算尺度に“TFIDF”(ティーエフアイディーエフとよむ)という
のがある。ある文献 d における,ある言葉 w の TFIDF は以下のように定義される。
TFIDF = (文献 d 中の w の頻度) x log (データベース中の全文献数 / w が現れる文献数)
「我々」 「場合」 のような言葉は,データベース中の多くの文献に現れる。
従って,後の項,(データベース中の全文献数 / w が現れる文献数) は
1に近くなる。 log 1 = 0 だから,「我々」 「場合」 の TFIDF は 0 に近い値,
即ち小さな値を取り,ベクトルの内積に影響を与えなくなる。
一方,「酸性紙」 のような言葉は,現れる文献数が少ないので,
log (データベース中の全文献数 / w が現れる文献数) は大きな値を取り,
ベクトルの内積に影響を与えることができる。
補足:(去年あった質問) TFIDF でなぜ log を使うのですか?
→ log x は,x が1のとき0になる(log 1=0)。そして x が1より大きくなるとそれに
つれて log x も大きくなるが,その伸び足は徐々に弱まっていく。例えば x が
5000 の時と 5050 の時とでは,log x はほとんど変わらない。
この「x が1だと0で,x が大きくなるにつれて大きくなるのだが,直線的に大きく
なっていくわけではない」という性質がTFIDF では重宝されている。
例えば TFIDF では x は(全文献数/その語を含む文献数)だが:
(全文献数/その語を含む文献数)が1の時というのは「その語はすべての文献
に現れる」ことを意味する。即ち,その語は一般語であって,重要語やキーワード
ではない可能性が高い。このとき log のおかげで TFIDF は0になってくれる。
一方,(全文献数/その語を含む文献数)は単にマイナーな語,全文献にわたって
1回しか現れない語では非常に高い値になってしまう。だが,全文献にわたって1回
しか現れないような語は重要語やキーワードではない可能性も高い。だから,ある
程度高い値はとってほしいものの,あまりずばぬけて高い値はとってほしくない。
ここで先ほどの log の2つ目の性質が生きてくる。
log は上記のような性質があるから使われているだけで,他に似たような性質が
あるものがあったらそちらでも構わなかった程度のものである。本質的に log で
なければならなかったということはない。
これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
これからお話しする内容のポイント:
・ ベクトル空間モデル
文献の内容を,言葉の組合せで
表すにはどうしたら良いか?
・ TFIDF
・ 形態素解析
文献から言葉を自動で切り出す
にはどうしたら良いか?
文献中に出てくる「言葉」というのはどうやって切り出すのか?
→ 人間がやれば良いのだが,対象になる文献はたくさんあるし,分量も多い。
→ 何とかコンピュータにやらせられないか?
→ コンピュータが自然文などから単語などを切り出す処理を「形態素解析」という。
このような処理は人間には簡単にできるが,コンピュータにやらせるのは結構
難しい。例えば:
・ 彼は大人気だ
→ 彼/は/大/人気/だ
・ 彼は大人気がない → 彼/は/大人/気/が/ない
(「大人/気」と切ったら間違い)
(「大/人気」 〃 )
→ 難しい面は多いが,だが形態素解析は,情報検索に限らず様々な応用
分野で必要とされる技術である。そのため昔から研究されてきた。
→ 現在,日本語では 「茶筌」 「JUMAN」 といったソフトが有名。
後
前
名詞
助詞
動詞
形容詞
副詞
…
名詞
助詞
動詞
0.5
0.0
1.0
0.0
0.3
0.0
1.0
0.0
0.7
1.0
1.0
0.0
1.0
1.0
0.0
形容詞
1.0
0.0
1.0
1.0
0.1
副詞 …
1.0
0.0
1.0
0.5
0.1
形態素解析では,上のような品詞接続テーブルを事前に用意しておく。
各欄は左の品詞の後に右の品詞が続く「コスト」を表す。例えば名詞(「明治」
「大学」など)の後に助詞(「は」「が」など)が続くコストは0.0であるのに対し,
名詞の後に動詞(「歩く」「出る」など)が続くコストは1.0であることが分かる。
形態素解析ではこのような品詞の組合せを,問題文に対してすべて考え,最も
コストが小さくなる組合せを考える(のが一般的である)。従って例えば上の表から,
名詞に何かが続いていたらその単位は,動詞であるよりは助詞である可能性が高い,
などと判断される。