第2回さくさくテキストマイニング勉強会




 WordNetで作ろう!
言語横断検索サービス

         Shintaro TAKEMURA
                   d.hatena.ne.jp/taos
                twitter.com/stakemura
      facebook.com/shintaro.takemura
背景
• 社内Google Codeみたいなものを想定してください
 – 登録されるプログラムが増え続けるとどうなる?
   → 欲しいものがすぐに見つからない状態に
 – 生産性を上げるためにより賢いアプローチが必要!


                     機能がたくさん
                     あるけど、何を
                      使えばいいか
                      わからない…
そこで提案
• 検索性能の強化(バイリンガルの如く)
 – 日英表記揺れを解決
  • 例:“vertex”と”頂点”
 – 語義あいまい性も解決
  • 例:”divide”と”separate”


• 推薦機能の搭載(貴方に合った結果を)
 – 操作履歴に基づく推薦

    本発表では扱いません
  • Amazonのおススメ機能
    を社内情報共有に応用
 – 集合知の活用!
システムの特徴
• フィールドが多い
 – 名称、作者名、概要、内容、マニュアルなど
 – 文字数に大きなばらつきがある
   (名称<概要<内容≪マニュアル)
   ⇒これが後々に問題に
• ドキュメント規模は小さい
 – PC1台で回せるレベル。分散不要
• リンク解析など高度な機能は不要
• 検索システムは自前で構築
 – Luceneで要求仕様を全部満たせるかわからなかった
 – この判断が正しかったかどうかは後半にて
言語横断検索のアプローチ
• 3つアプローチがある
 – 「対訳辞書」ベース
  • 日本語WordNetのような辞書を活用するアプローチ
  • 本発表のメイン(日・英間言語横断検索を扱う)
 – 「対訳コーパス」ベース
  • 辞書がない、あるいは併用する場合のアプローチ
  • 本発表の後半にて軽く触れる
 – 「機械翻訳」ベース
  • 機械翻訳を用いたアプローチ
  • 本発表では触れない
WordNet
• http://www.visuwords.com
Princeton WordNet 3.0とは
• 出発点は英英辞典
  – プリンストン大学で開発
    • http://wordnet.princeton.edu/
  – 多国語対応を推進する動きあり。
    • http://www.globalwordnet.org/
  – 約11万7千のsynset(同義語の集合)
  – 約15万語(名詞/動詞/形容詞/副詞)
  – synset間にいくつかの関係が定義
    •   hypernym : X hypernym Y → XはYの上位概念(synset)
    •   hyponym : X hyponym Y → XはYの下位概念(synset)
    •   holonym : X holonym Y → XはYを持つ(has-a)
    •   meronym : X meronym Y → XはYの一部(part-of)
日本語WordNet ver 1.1のスペック
• NICTで開発
 – http://nlpwww.nict.go.jp/wn-ja/
• 無償・BSDライセンス
• SQLite3のDBとして格納(インデックス込み)
 – 57,238 synset
 – 93,834 words
 – 158,058 語義(synsetと単語のペア)
 – 135,692 定義文
 – 48,276 例文
• 実は対訳辞書として使えます!
対訳辞書としてのWordNet
Search Engineでの位置づけ

                                                                          Text
                                           Browser
                 user interest
                                                                            Text

                                 Text Processing and Modeling

                          logical view                 logical view
                                           MeCab
                    Query
                                          NLTK etc.              Indexing
user feedback      Operations
                                                                                   Crawler
                                                     inverted index                / Data
                 query                   WordNet                                   Access

                    Searching                                     Index

         retrieved docs
                                                                                              Documents
                                                                                             (Web or DB)
                    Ranking
ranked docs
類義語の抽出
• WordNetから類義語抽出手順(日→英の場合)
 – MeCabで標準形と品詞を取得
 – 名詞・副詞・動詞・形容詞のみ抽出
 – SQLにてword→sense→関連sense→関連word
   • select * from word where lemma=? and pos=?, (標準形,品詞)
   • select * from sense where wordid=?, (word["wordid"],)
   • select * from sense where synset=? and lang=?,
     (sense["synset"], “en”)
   • select * from word where wordid=? and pos=?,
     (sense2["wordid"], 品詞)
• これでOK?
 – 結論から言うと、そのままではまずかった
問題1:検索結果が良くない
• 現象
 – 意図しない検索結果(複数フィールドに起因)
 – 例:aaaで検索すると名称:bbbがトップに
  名称      aaa              bbb

  概要      hoge             fuga

  内容      hogehoge         aaaが…


                           aaaの… aaaから… aaa
  マニュアル                    により…


• 解決方法
 – UIを増やす        ランキングアルゴリズム(tf-idf)を見直す
情報検索(Information Retrieval)とは
• 以下の順で解説
  – Precision/Recall                      Karen Sparck
  – Vector Space Model                       Jones

  – tf-idf (Spärck Jones 1972)
  – PRP - Probability Ranking Principle
    (Rijsbergen 1979)
                                           Keith van
  – BIM - Binary Independence Model        Rijsbergen
  – Naive Bayes
  – Okapi BM25 (Robertson 1994)
  – BM25F (Robertson 2004)
                                            Stephen
                                           Robertson
何が起きたか?
• 検索性能の尺度
 – 検索速度
 – 更新速度
 – 文書容量
 – Recall (再現率)
   • 検索漏れに関連
   • WordNetで改善したが…
 – Precision (適合率)
   • 検索精度に関連
   • 新たな問題として浮上
PrecisionとRecall
• Precision (適合率)
  – 「全検索結果」に対して「検索要求を満たす結果」の
    割合
  – “MacBook Air 重さ” で 100件 ヒット、うち 85 件が重さ
    がわかるドキュメント = 85/100 = 0.85


• Recall (再現率)
  – 「検索要求を満たす全ドキュメント」に対しての「検
    索要求を満たす検索結果」の割合
  – Web上に 90件あると仮定して、ウェブ検索して 85 件が
    得られた → 85/90 = 0.94
PrecisionとRecallのイメージ
• Precision: |C| / |B|
• Recall: |C| / |A|
   – どちらも高いほうがよい
     検索ノイズも検索漏れも少ないほうがよい

                         全文書集合

                適合文書             検索された文書

                             C

                         A       B
PrecisionとRecallのトレードオフ
• Precisionのみを高めたい
  – 適合しない可能性が少しでもある文書を、検索結果か
    ら除外
  – Recallの低下(= 検索漏れの発生)
• Recallのみを高めたい
                                             p   ideal
  – 適合する可能性が少しでもある                                         better
    文書を、検索結果として採用
  – Precisionの低下(= 検索ノイズの発生)
                                                 typical
• 両者はトレードオフ関係
  – 評価尺度には調和平均のF値を利用
    F = 2 / ( 1 / Recall + 1 / Precision )
                                                             r
ベクトル空間モデル(Vector Space Model)
  • ベクトルで考えてみよう(Bag of Words)
       – 文章(document)は単語(term)の集合体
       – 検索クエリも単語(term)の集合体

           query              document
               Q                  A       B       C       D       E
           ○                                          ○       ○        {D, E}
                   term




       0                  0
term




       1                  1                   ○
       2   ○              2   ○       ○                       ○        {A, B, E}
       3                  3   ○
       4                  4                           ○
       5                  5           ○                       ○
       6                  6   ○                               ○

                                                          0, 2, 5, 6
検索と最近傍探索
• ベクトル空間モデルにおける検索とは
  – ベクトル空間内で 近いベクトルを探すこと
  – 検索ではCosine類似度が一般に用いられる




                       (1 ) ∙ (2 )   d
(1 , 2 ) =
                        1 |(2 )|     
                                                 q
単語の重みを考慮する
  • 相関係数を2値からScalarに
       – ある or なしだと 1か0かの2値表現
       – 出現頻度を反映させてScalarに出来ないか?

           Query                document
                 Q                    A         B         C         D         E
                                                                                  {D, E}
                     term




       0   1.0              0                                 1.5       0.4
term




       1                    1                       0.8
       2   0.1              2   0.4       1.2                           0.2       {A, B, E}
       3                    3   1.5
       4                    4                                 0.5
       5                    5             1.6                           2.5
       6                    6   0.2                                     1.0

                                                              1.5
tf - term frequency
• ある単語が各々の文章にどのくらい出現するか?


             ni         単語iの出現頻度
    tf i 
                k
                   nk   文書で出現する総単語数
• 問題点
  – すべての単語が等しい重要度の場合
     • 例:ツール,エラー,ファイル…
• 解決方法
  – 頻繁に登場する語の影響力を薄める → そこでidf
idf - inverse document frequency
• ある単語がどのくらいの数の文書に出現するか?

                                 総ドキュメント数
                  |D|
 idf i  log                     単語iを含む
             | {d : d  ti } |   ドキュメント数


     レア語では高く


      頻出語では低く
tf-idfによるスコアリング




• 以下の場合に高い
 – 少数のドキュメントにtがたくさん出現する場合
• 以下の場合に低い
 – ひとつのドキュメントに t が少なく出現する場合
 – たくさんのドキュメントに t が出現する場合
tf-idfの計算例:インデックス化
文書1   言語(2),計算(1),問題(2)
文書2   計算(1),問題(2),情報(1)
文書3   言語(1),問題(3),情報(2)
文書4   問題(1),情報(1)


言語         文書1,文書3
計算         文書1,文書2
問題         文書1,文書2,文書3,文書4
情報         文書2,文書3,文書4
tf-idfの計算例:tf,idfの計算

単語の出現頻度(term frequency)
 tf       文書1     文書2 文書3 文書4          idf
 言語        2       0   1   0           2
 計算        1       1   0   0           2
 問題        2       2   3   1           1
 情報        0       1   2   1           1.3

       全文書数 / 単語の出現する文書数
        (inverse document frequency)
tf-idfの計算例:検索結果の絞り込み


tf-idf   文書1   文書2   文書3   文書4
言語       4      0    2     0
計算       2      2    0     0
問題       2      2    3     1
情報       0     1.3   2.6   1.3
         6     (2)   5     (1)

         検索キーワードが、「言語、問題」なら
         文章1が第1候補
PRP - Probability Ranking Principle
• 情報要求に対して確率論を当てはめるための考え方
• 文書dとクエリqの適合性を確率として表現
  – P(R|d,q) … これを求めたい
  – Rはdとqが関連することを表す
  – R=1 … 関連あり R=0 … 関連なし
  – 文書をP(R|d,q)に従ってランキング
• メリット
  – tf-idf などのヒューリスティクスも、確率モデルにより
    アルゴリズムとして解釈しなおすことができる
  – 後に示すように、tf-idfによく似たパラメータが出てく
    る
Binary Independence Model [1]
• 仮定 A0
  – 文章Dの適合性は、他の文書に依存しない
• P(R=1|D)によるランク付け
  – R={0,1} … 適合度を示す確率変数
  – D … 文章の中身(この時点ではクエリは考えない)
  – ベイズの定理より
     •    ∝    ()
• 関係演算子 ∼ を「ランク順位が等しい」とおくと
                    = 1       = 1 ( = 1)
     = 1  ∼              =
                    = 0       = 0 ( = 0)
                                    与えられたクエリに対して定数。ラ
                                    ンクするだけなら推定の必要なし
Binary Independence Model [2]
• 仮定 A1
  –  = * + … 文章を0 or 1の2値単語ベクトルで表現
• 仮定 A2
  –  … はRが与えられた時に相互に独立
    • 実際にはそんなわけがない(単語並び替えても同じ?)
    • が、仮定しなければ組み合わせ爆発を起こす
    • Naive Bayes分類の仮定でもある
• よって
                      = 1         = 1
      = 1  ∼              =
                      = 0         = 1
Binary Independence Model [3]
• 仮定 A3
  –  0  = 1 =  0  = 0
  – 空文章は、R=0 or 1どちらのクラスにも等しく出現
• ここで追加定義
  –  =   = 1  = 1
  –  =   = 1  = 0
• よって
                                   1 − 
                    ∈ 
                            
                                 ∉ 1 − 
                                                       (1 −  )
    = 1  ∼                                =
                               1 −                   (1 −  )
                             1 −              ∈
推定
• この時点での推定
 – もし、全文章がR=0 or 1どちらのクラスに属するかが自
   明であれば、以下の定義でクエリがどのクラスに属す
   るかが確率で求まる                                 Smoothing
            1  + 0.5        0  + 0.5
      =               =
              1 + 1.0           0 + 1.0
 – なお  は各々のクラスでの観察回数
 – また確率0を避けるために、適当にスムージング
• 使い道
 – 学習データがある際の文章分類タスクといってよい
 – もちろんこのままでは検索には使えない
推定例(BIM 文章のクラス情報あり)
• 適合文章: 1 = “a b c b d”, 2 = “a b e f b”, 1 =2
• 不適合: 3 = “b g c d”, 4 = “b d e”, 5 = “a b e g”, 0 =3

  word a            b         c           d          e       f       g        h
 1      2       2         1           1          1       1       0        0
 0      1       3         1           2          2       0       2        0
        2.5/3   2.5/3     1.5/3       1.5/3      1.5/3   1.5/3   0.5/3    0.5/3
        1.5/4   3.5/4     1.5/4       2.5/4      2.5/4   0.5/4   2.5/4    0.5/4


• 新規文章: 6 = “b g h”                                            b       gh
                                                       2.5      3.5
                                      1 −          ∙ 1−     …   1.64
                                                        3        4
            = 1 6 ∼                            =                =
                                      1 −      3.5      2.5
                            ∈6                         ∙ 1−     … 13.67
                                                        4        3
Binary Independence Model [4]
• 仮定 A4
  –  =    ∉  … クエリに出現しない単語は適合、
    不適合文書において同じくらい出現と仮定
• 仮定 A5
  –  = 0.5   ∈  … クエリに出現する単語は、適合文
    章に50%の確率で出現する
• 仮定 A6
  –  ≈  / … 不適合文章を全体で近似
                                                                                           IDF
• 結果
                        1 −                     1 −                    −  + 0.5
    = 1  ∼                         =                         =
                        
                   ∈ 
                              1 −        ∈∩
                                                                   ∈∩
                                                                                     + 0.5
推定例(BIM)
• 文章: 1 = “a b c b d”, 2 = “a b e f b”, 3 = “b g c d”,
      4 = “b d e”, 5 = “a b e g”, 6 = “b g h”, N=6

    word        a       b      c           d          e           f       g      h
            2       6      2           3          3           1       3      1
  −  + 0.5 4.5    0.5    4.5         3.5        3.5         5.5     3.5    5.5
     + 0.5   /2.5   /6.5   /2.5        /3.5       /3.5        /1.5    /3.5   /1.5

• クエリ: Q = “a c h”                                                    a   c
                                                 −  + 0.5     4.5 4.5
         = 1 1 ∼                                            =    ∙
                                   ∈1 ∩
                                                   + 0.5        2.5 2.5

• ランキング 6 > 1 > 3 > 5 > 2 > 4
BM25
• 概要(詳細は割愛)
   –  を文章D内での単語wの出現回数とした場合
   – ( )を2つのポワソン分布から成ると考える
                                                                             
                               −1, 1,
                                             
                                                                  −0, 0,
                                                                               

          =   = 1                       + ( = 0)
                                    !                              !




• 結果
    (| = 1)                        ∙ (1 + )                    
log               ≈        (                                         × log )
    (| = 0)             + ( 1 −  +  ∙  /      
                      
                                                                           文章長の平均
BM25F
• 概要(詳細は割愛)
 – BM25を複数のフィールドに対応させたもの
   • 各フィールドの平均長などがパラメータに
 – BM25Fでやっと納得のいく結果が得られた
   • 自前の検索エンジンなのですぐ対応できた
• ただしLuceneでのBM25F対応は難しい
 – フィールド毎の単語頻度が取得できないため
 – どうしても必要であれば、Luceneを改造するか、自前
   で集計するしかないかも(要調査)
まとめ・課題
• まとめ
 – WordNetを用いた日英間言語横断検索
 – 情報検索基礎(tf-idfからBM25F)
 – Luceneと言えども万能ではない
• 課題
 – 多言語対応
 – Luceneの理解を深める
 – より発展的なトピック
参考文献
• Christopher D. Manning, Prabhakar Raghavan, and Hinrich
  Schütze, Introduction to Information Retrieval
• Michael McCandless, Erik Hatcher, and Otis Gospodnetid,
  Lucene in Action, Second Edition
• Stephen Robertson, Hugo Zaragoza, SIGIR 2007 Tutorials -
  The Probabilistic Relevance Model: BM25 and beyond.
• Donald Metzler, Victor Lavrenko, SIGIR 2009 Tutorials -
  Probabilistic Models for Information Retrieval

WordNetで作ろう! 言語横断検索サービス

  • 1.
    第2回さくさくテキストマイニング勉強会 WordNetで作ろう! 言語横断検索サービス Shintaro TAKEMURA d.hatena.ne.jp/taos twitter.com/stakemura facebook.com/shintaro.takemura
  • 2.
    背景 • 社内Google Codeみたいなものを想定してください – 登録されるプログラムが増え続けるとどうなる? → 欲しいものがすぐに見つからない状態に – 生産性を上げるためにより賢いアプローチが必要! 機能がたくさん あるけど、何を 使えばいいか わからない…
  • 3.
    そこで提案 • 検索性能の強化(バイリンガルの如く) –日英表記揺れを解決 • 例:“vertex”と”頂点” – 語義あいまい性も解決 • 例:”divide”と”separate” • 推薦機能の搭載(貴方に合った結果を) – 操作履歴に基づく推薦 本発表では扱いません • Amazonのおススメ機能 を社内情報共有に応用 – 集合知の活用!
  • 4.
    システムの特徴 • フィールドが多い –名称、作者名、概要、内容、マニュアルなど – 文字数に大きなばらつきがある (名称<概要<内容≪マニュアル) ⇒これが後々に問題に • ドキュメント規模は小さい – PC1台で回せるレベル。分散不要 • リンク解析など高度な機能は不要 • 検索システムは自前で構築 – Luceneで要求仕様を全部満たせるかわからなかった – この判断が正しかったかどうかは後半にて
  • 5.
    言語横断検索のアプローチ • 3つアプローチがある –「対訳辞書」ベース • 日本語WordNetのような辞書を活用するアプローチ • 本発表のメイン(日・英間言語横断検索を扱う) – 「対訳コーパス」ベース • 辞書がない、あるいは併用する場合のアプローチ • 本発表の後半にて軽く触れる – 「機械翻訳」ベース • 機械翻訳を用いたアプローチ • 本発表では触れない
  • 6.
  • 7.
    Princeton WordNet 3.0とは •出発点は英英辞典 – プリンストン大学で開発 • http://wordnet.princeton.edu/ – 多国語対応を推進する動きあり。 • http://www.globalwordnet.org/ – 約11万7千のsynset(同義語の集合) – 約15万語(名詞/動詞/形容詞/副詞) – synset間にいくつかの関係が定義 • hypernym : X hypernym Y → XはYの上位概念(synset) • hyponym : X hyponym Y → XはYの下位概念(synset) • holonym : X holonym Y → XはYを持つ(has-a) • meronym : X meronym Y → XはYの一部(part-of)
  • 8.
    日本語WordNet ver 1.1のスペック •NICTで開発 – http://nlpwww.nict.go.jp/wn-ja/ • 無償・BSDライセンス • SQLite3のDBとして格納(インデックス込み) – 57,238 synset – 93,834 words – 158,058 語義(synsetと単語のペア) – 135,692 定義文 – 48,276 例文 • 実は対訳辞書として使えます!
  • 9.
  • 10.
    Search Engineでの位置づけ Text Browser user interest Text Text Processing and Modeling logical view logical view MeCab Query NLTK etc. Indexing user feedback Operations Crawler inverted index / Data query WordNet Access Searching Index retrieved docs Documents (Web or DB) Ranking ranked docs
  • 11.
    類義語の抽出 • WordNetから類義語抽出手順(日→英の場合) –MeCabで標準形と品詞を取得 – 名詞・副詞・動詞・形容詞のみ抽出 – SQLにてword→sense→関連sense→関連word • select * from word where lemma=? and pos=?, (標準形,品詞) • select * from sense where wordid=?, (word["wordid"],) • select * from sense where synset=? and lang=?, (sense["synset"], “en”) • select * from word where wordid=? and pos=?, (sense2["wordid"], 品詞) • これでOK? – 結論から言うと、そのままではまずかった
  • 12.
    問題1:検索結果が良くない • 現象 –意図しない検索結果(複数フィールドに起因) – 例:aaaで検索すると名称:bbbがトップに 名称 aaa bbb 概要 hoge fuga 内容 hogehoge aaaが… aaaの… aaaから… aaa マニュアル により… • 解決方法 – UIを増やす ランキングアルゴリズム(tf-idf)を見直す
  • 13.
    情報検索(Information Retrieval)とは • 以下の順で解説 – Precision/Recall Karen Sparck – Vector Space Model Jones – tf-idf (Spärck Jones 1972) – PRP - Probability Ranking Principle (Rijsbergen 1979) Keith van – BIM - Binary Independence Model Rijsbergen – Naive Bayes – Okapi BM25 (Robertson 1994) – BM25F (Robertson 2004) Stephen Robertson
  • 14.
    何が起きたか? • 検索性能の尺度 –検索速度 – 更新速度 – 文書容量 – Recall (再現率) • 検索漏れに関連 • WordNetで改善したが… – Precision (適合率) • 検索精度に関連 • 新たな問題として浮上
  • 15.
    PrecisionとRecall • Precision (適合率) – 「全検索結果」に対して「検索要求を満たす結果」の 割合 – “MacBook Air 重さ” で 100件 ヒット、うち 85 件が重さ がわかるドキュメント = 85/100 = 0.85 • Recall (再現率) – 「検索要求を満たす全ドキュメント」に対しての「検 索要求を満たす検索結果」の割合 – Web上に 90件あると仮定して、ウェブ検索して 85 件が 得られた → 85/90 = 0.94
  • 16.
    PrecisionとRecallのイメージ • Precision: |C|/ |B| • Recall: |C| / |A| – どちらも高いほうがよい 検索ノイズも検索漏れも少ないほうがよい 全文書集合 適合文書 検索された文書 C A B
  • 17.
    PrecisionとRecallのトレードオフ • Precisionのみを高めたい – 適合しない可能性が少しでもある文書を、検索結果か ら除外 – Recallの低下(= 検索漏れの発生) • Recallのみを高めたい p ideal – 適合する可能性が少しでもある better 文書を、検索結果として採用 – Precisionの低下(= 検索ノイズの発生) typical • 両者はトレードオフ関係 – 評価尺度には調和平均のF値を利用 F = 2 / ( 1 / Recall + 1 / Precision ) r
  • 18.
    ベクトル空間モデル(Vector Space Model) • ベクトルで考えてみよう(Bag of Words) – 文章(document)は単語(term)の集合体 – 検索クエリも単語(term)の集合体 query document Q A B C D E ○ ○ ○ {D, E} term 0 0 term 1 1 ○ 2 ○ 2 ○ ○ ○ {A, B, E} 3 3 ○ 4 4 ○ 5 5 ○ ○ 6 6 ○ ○ 0, 2, 5, 6
  • 19.
    検索と最近傍探索 • ベクトル空間モデルにおける検索とは – ベクトル空間内で 近いベクトルを探すこと – 検索ではCosine類似度が一般に用いられる (1 ) ∙ (2 ) d (1 , 2 ) = 1 |(2 )|  q
  • 20.
    単語の重みを考慮する •相関係数を2値からScalarに – ある or なしだと 1か0かの2値表現 – 出現頻度を反映させてScalarに出来ないか? Query document Q A B C D E {D, E} term 0 1.0 0 1.5 0.4 term 1 1 0.8 2 0.1 2 0.4 1.2 0.2 {A, B, E} 3 3 1.5 4 4 0.5 5 5 1.6 2.5 6 6 0.2 1.0 1.5
  • 21.
    tf - termfrequency • ある単語が各々の文章にどのくらい出現するか? ni 単語iの出現頻度 tf i   k nk 文書で出現する総単語数 • 問題点 – すべての単語が等しい重要度の場合 • 例:ツール,エラー,ファイル… • 解決方法 – 頻繁に登場する語の影響力を薄める → そこでidf
  • 22.
    idf - inversedocument frequency • ある単語がどのくらいの数の文書に出現するか? 総ドキュメント数 |D| idf i  log 単語iを含む | {d : d  ti } | ドキュメント数 レア語では高く 頻出語では低く
  • 23.
    tf-idfによるスコアリング • 以下の場合に高い –少数のドキュメントにtがたくさん出現する場合 • 以下の場合に低い – ひとつのドキュメントに t が少なく出現する場合 – たくさんのドキュメントに t が出現する場合
  • 24.
    tf-idfの計算例:インデックス化 文書1 言語(2),計算(1),問題(2) 文書2 計算(1),問題(2),情報(1) 文書3 言語(1),問題(3),情報(2) 文書4 問題(1),情報(1) 言語 文書1,文書3 計算 文書1,文書2 問題 文書1,文書2,文書3,文書4 情報 文書2,文書3,文書4
  • 25.
    tf-idfの計算例:tf,idfの計算 単語の出現頻度(term frequency) tf 文書1 文書2 文書3 文書4 idf 言語 2 0 1 0 2 計算 1 1 0 0 2 問題 2 2 3 1 1 情報 0 1 2 1 1.3 全文書数 / 単語の出現する文書数 (inverse document frequency)
  • 26.
    tf-idfの計算例:検索結果の絞り込み tf-idf 文書1 文書2 文書3 文書4 言語 4 0 2 0 計算 2 2 0 0 問題 2 2 3 1 情報 0 1.3 2.6 1.3 6 (2) 5 (1) 検索キーワードが、「言語、問題」なら 文章1が第1候補
  • 27.
    PRP - ProbabilityRanking Principle • 情報要求に対して確率論を当てはめるための考え方 • 文書dとクエリqの適合性を確率として表現 – P(R|d,q) … これを求めたい – Rはdとqが関連することを表す – R=1 … 関連あり R=0 … 関連なし – 文書をP(R|d,q)に従ってランキング • メリット – tf-idf などのヒューリスティクスも、確率モデルにより アルゴリズムとして解釈しなおすことができる – 後に示すように、tf-idfによく似たパラメータが出てく る
  • 28.
    Binary Independence Model[1] • 仮定 A0 – 文章Dの適合性は、他の文書に依存しない • P(R=1|D)によるランク付け – R={0,1} … 適合度を示す確率変数 – D … 文章の中身(この時点ではクエリは考えない) – ベイズの定理より • ∝ () • 関係演算子 ∼ を「ランク順位が等しい」とおくと = 1 = 1 ( = 1) = 1 ∼ = = 0 = 0 ( = 0) 与えられたクエリに対して定数。ラ ンクするだけなら推定の必要なし
  • 29.
    Binary Independence Model[2] • 仮定 A1 – = * + … 文章を0 or 1の2値単語ベクトルで表現 • 仮定 A2 – … はRが与えられた時に相互に独立 • 実際にはそんなわけがない(単語並び替えても同じ?) • が、仮定しなければ組み合わせ爆発を起こす • Naive Bayes分類の仮定でもある • よって = 1 = 1 = 1 ∼ = = 0 = 1
  • 30.
    Binary Independence Model[3] • 仮定 A3 – 0 = 1 = 0 = 0 – 空文章は、R=0 or 1どちらのクラスにも等しく出現 • ここで追加定義 – = = 1 = 1 – = = 1 = 0 • よって 1 − ∈ ∉ 1 − (1 − ) = 1 ∼ = 1 − (1 − ) 1 − ∈
  • 31.
    推定 • この時点での推定 –もし、全文章がR=0 or 1どちらのクラスに属するかが自 明であれば、以下の定義でクエリがどのクラスに属す るかが確率で求まる Smoothing 1 + 0.5 0 + 0.5 = = 1 + 1.0 0 + 1.0 – なお は各々のクラスでの観察回数 – また確率0を避けるために、適当にスムージング • 使い道 – 学習データがある際の文章分類タスクといってよい – もちろんこのままでは検索には使えない
  • 32.
    推定例(BIM 文章のクラス情報あり) • 適合文章:1 = “a b c b d”, 2 = “a b e f b”, 1 =2 • 不適合: 3 = “b g c d”, 4 = “b d e”, 5 = “a b e g”, 0 =3 word a b c d e f g h 1 2 2 1 1 1 1 0 0 0 1 3 1 2 2 0 2 0 2.5/3 2.5/3 1.5/3 1.5/3 1.5/3 1.5/3 0.5/3 0.5/3 1.5/4 3.5/4 1.5/4 2.5/4 2.5/4 0.5/4 2.5/4 0.5/4 • 新規文章: 6 = “b g h” b gh 2.5 3.5 1 − ∙ 1− … 1.64 3 4 = 1 6 ∼ = = 1 − 3.5 2.5 ∈6 ∙ 1− … 13.67 4 3
  • 33.
    Binary Independence Model[4] • 仮定 A4 – = ∉ … クエリに出現しない単語は適合、 不適合文書において同じくらい出現と仮定 • 仮定 A5 – = 0.5 ∈ … クエリに出現する単語は、適合文 章に50%の確率で出現する • 仮定 A6 – ≈ / … 不適合文章を全体で近似 IDF • 結果 1 − 1 − − + 0.5 = 1 ∼ = = ∈ 1 − ∈∩ ∈∩ + 0.5
  • 34.
    推定例(BIM) • 文章: 1= “a b c b d”, 2 = “a b e f b”, 3 = “b g c d”, 4 = “b d e”, 5 = “a b e g”, 6 = “b g h”, N=6 word a b c d e f g h 2 6 2 3 3 1 3 1 − + 0.5 4.5 0.5 4.5 3.5 3.5 5.5 3.5 5.5 + 0.5 /2.5 /6.5 /2.5 /3.5 /3.5 /1.5 /3.5 /1.5 • クエリ: Q = “a c h” a c − + 0.5 4.5 4.5 = 1 1 ∼ = ∙ ∈1 ∩ + 0.5 2.5 2.5 • ランキング 6 > 1 > 3 > 5 > 2 > 4
  • 35.
    BM25 • 概要(詳細は割愛) – を文章D内での単語wの出現回数とした場合 – ( )を2つのポワソン分布から成ると考える −1, 1, −0, 0, = = 1 + ( = 0) ! ! • 結果 (| = 1) ∙ (1 + ) log ≈ ( × log ) (| = 0) + ( 1 − + ∙ / 文章長の平均
  • 36.
    BM25F • 概要(詳細は割愛) –BM25を複数のフィールドに対応させたもの • 各フィールドの平均長などがパラメータに – BM25Fでやっと納得のいく結果が得られた • 自前の検索エンジンなのですぐ対応できた • ただしLuceneでのBM25F対応は難しい – フィールド毎の単語頻度が取得できないため – どうしても必要であれば、Luceneを改造するか、自前 で集計するしかないかも(要調査)
  • 37.
    まとめ・課題 • まとめ –WordNetを用いた日英間言語横断検索 – 情報検索基礎(tf-idfからBM25F) – Luceneと言えども万能ではない • 課題 – 多言語対応 – Luceneの理解を深める – より発展的なトピック
  • 38.
    参考文献 • Christopher D.Manning, Prabhakar Raghavan, and Hinrich Schütze, Introduction to Information Retrieval • Michael McCandless, Erik Hatcher, and Otis Gospodnetid, Lucene in Action, Second Edition • Stephen Robertson, Hugo Zaragoza, SIGIR 2007 Tutorials - The Probabilistic Relevance Model: BM25 and beyond. • Donald Metzler, Victor Lavrenko, SIGIR 2009 Tutorials - Probabilistic Models for Information Retrieval