これからお話しする内容のポイント: ・ ベクトル空間モデル 文献の内容を,言葉の組合せで 表すにはどうしたら良いか? ・ 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であることが分かる。 形態素解析ではこのような品詞の組合せを,問題文に対してすべて考え,最も コストが小さくなる組合せを考える(のが一般的である)。従って例えば上の表から, 名詞に何かが続いていたらその単位は,動詞であるよりは助詞である可能性が高い, などと判断される。
© Copyright 2024 ExpyDoc