特徴ベクトルを用いた全文検索について(2)

029be5ac1ce0db70c46dcd7152308e2e?s=47 masaya82
February 14, 2018
23

 特徴ベクトルを用いた全文検索について(2)

029be5ac1ce0db70c46dcd7152308e2e?s=128

masaya82

February 14, 2018
Tweet

Transcript

  1. 特徴ベクトルを用いた 全文検索について(2) 自然言語処理研究室 B3 福嶋 真也

  2. 参考文献 北 研二、津田 和彦、獅々堀 正幹 著 「情報検索アルゴリズム」 2002年 共立出版株式会社

  3. 特徴ベクトル法 流れ 文書集合のすべての文書から単語シグネチャー、文書シグネ チャーを作成 検索単語についても単語シグネチャーを作成 検索単語シグネチャーと文書シグネチャーを用いて検索を行う 単語シグネチャー・・・索引語となる単語の特徴を表すビット列 文書シグネチャー・・・文書の特徴を表すビット列

  4. 特徴ベクトルによる検索 ・複数の検索単語である場合 1つの場合は単に検索単語シグネチャーと文書シグネチャーで 論理積をとることで判定 複数の場合は前処理として複数の検索単語を論理演算子 (AND、OR、NOT)と組み合わせて1つのクエリとする 例 “search”,”algorithm”→”search AND algorithm”

    ”search OR algorithm”
  5. 特徴ベクトルによる検索 1つのクエリにしたら・・・ 論理演算子にしたがって処理を行い、検索を行う 基本的な流れは検索単語が1つのときと同じ AND演算子による検索 検索単語の単語シグネチャーについて論理和をとり、これと文 書シグネチャーの論理積をとる。これを検索単語シグネチャー と比較する 一致する文書なら逐次検索を行い、すべての検索単語が出現 しているなら条件を満たしていると考える

  6. 特徴ベクトルによる検索 例:key=“search AND algorithm” 1 =full text search 2 =inverted

    index file 3=sequential search algorithm 4=index search algorithm 5=information retrieval algorithm
  7. 特徴ベクトルによる検索 _ 1 =1 1 0 0 0 0 0

    1 _ 2 =0 1 0 1 1 0 0 0 _ 3 =1 1 0 0 0 0 1 0 _ 4 =1 0 0 1 0 0 1 0 _ 5 =0 0 0 1 0 1 1 0 “ℎ” =0 0 0 0 0 0 1 0 “ℎ” =1 0 0 0 0 0 0 0 =1 0 0 0 0 0 1 0 3 , 4 が一致 →逐次検索で3 , 4 が条件に当てはまることを確認
  8. 特徴ベクトルによる検索 OR演算子による検索 単語シグネチャーの処理はANDと同じ 単語シグネチャーをビット反転させ、それと文書シグネチャーの 論理積をとり検索単語シグネチャーと比較 →不一致なら逐次検索し、検索単語のうち一つでも検出される なら条件を満たすと考える NOT演算子による検索 単語シグネチャーの処理は一つの検索単語のときと同じ 文書シグネチャーの論理積をとり検索単語シグネチャーと比較

    →不一致か一致後の逐次検索で検索単語が未検出であれば 条件を満たすと考える
  9. 特徴ベクトルによる検索 例:key1=“search OR algorithm” key2=“NOT sequential”, 1 =full text search

    2 =inverted index file 3=sequential search algorithm 4=index search algorithm 5=information retrieval algorithm “ℎ” =0 0 0 0 0 0 1 0 “ℎ” =1 0 0 0 0 0 0 0 1 =1 0 0 0 0 0 1 0 "" =0 1 0 0 0 0 0 0
  10. 特徴ベクトルによる検索 _ 1 =1 1 0 0 0 0 0

    1 _ 2 =0 1 0 1 1 0 0 0 _ 3 =1 1 0 0 0 0 1 0 _ 4 =1 0 0 1 0 0 1 0 _ 5 =0 0 0 1 0 1 1 0 1 =1 0 0 0 0 0 1 0 ~ 1 =0 1 1 1 1 1 0 1 2 =0 1 0 0 0 0 0 0 key1では2 が一致(他の文書は不一致) → 2 以外を逐次検索し、1 , 2 , 3 , 4 が条件に当てはまることを確認 key2では4 , 5 が不一致(他の文祖は一致) → 4 , 5 以外を逐次検索し、1 , 2 が条件に当てはまることを確認
  11. 特徴ベクトルによる検索 ・クラス分け 検索単語シグネチャーと文書シグネチャーの照合結果により、 3つの文書集合に分類する →演算子が使われているときの逐次検索の回数を減らせる TRUEクラス:クエリを満足する文書 UNDEFクラス:クエリを満足するか否か未確定な文書 FALSEクラス:クエリを満たさない文書 AND F

    U T F F F F U F U U T F U T OR F U T F F U T U U U T T T T T NOT F T U U T F
  12. 特徴ベクトルによる検索 例:key1=“NOT sequential(1 )” key2=“search(2) OR algorithm()” key3=key1 AND key2

    1 =full text search 2 =inverted index file 3=sequential search algorithm 4=index search algorithm 5=information retrieval algorithm 文書 NOT s1 s2 OR a D1 U U D2 U F D3 U U D4 T U D5 T U
  13. 特徴ベクトルによる検索 文書 NOT s1 s2 OR a D1 U U

    D2 U F D3 U U D4 T U D5 T U AND F U T F F F F U F U U T F U T 文書 (NOT s1) AND(s2 OR a) D1 U D2 F D3 U D4 U D5 U
  14. 分割管理による特徴ベクトルの構成法 文書中の索引語が多くなると文書シグネチャーのほとんどの ビットが1に →文書の特徴が分かりにくく、フォルスドロップが増加 例 1 =full text search 2

    =inverted index file 3=sequential search algorithm 4=index search algorithm 5=information retrieval algorithm =full text search inverted index file sequential search algorithm index search algorithm information retrieval algorithm _ = 1 1 0 1 1 1 1 1
  15. 分割管理による特徴ベクトルの構成法 ・逐次シグネチャーファイル(sequential signature file;SSF) 文書をあらかじめいくつかのブロックに分割して、ブロックごとに ブロック・シグネチャーを作成し、これらを連結させて文書シグ ネチャーにしたもの 数式で表すと・・・ D =

    {1 , 2 , … , , … , } = {_ 1 , _ 2 , … _ , … _ } :単語 :文書 :ブロック _:ブロック・シグネチャー
  16. 分割管理による特徴ベクトルの構成法 例 1 =full text search 2 =inverted index file

    3=sequential search algorithm 4=index search algorithm 5=information retrieval algorithm _ 1 =1 1 0 0 0 0 0 1 _ 2 =0 1 0 1 1 0 0 0 _ 3 =1 1 0 0 0 0 1 0 _ 4 =1 0 0 1 0 0 1 0 _ 5 =0 0 0 1 0 1 1 0 =full text search inverted index file sequential search algorithm index search algorithm information retrieval algorithm ={1 1 0 0 0 0 0 1, 0 1 0 1 1 0 0 0, 1 1 0 0 0 0 1 0, 1 0 0 1 0 0 1 0, 0 0 0 1 0 1 1 0 }
  17. 分割管理による特徴ベクトルの構成法 SSFによって検索単語がどこにあるかは分かりやすくなった しかし… このままではブロックごとに検索単語との照合を行う必要あり つまり、検索に時間かかる →特徴ベクトルを分割して管理することで検索しやすく (1)ビット・スライスト・シグネチャー・ファイル (2)FP分割シグネチャーファイル

  18. 分割管理による特徴ベクトルの構成法 (1)ビット・スライスト・シグネチャー・ファイル 各ブロック・シグネチャーのビット位置ごとにビットスライスと呼 ばれる単位でシグネチャーを格納 例 1 1 0 0 0

    0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 _1=1 0 1 1 0 _2=1 1 1 0 0 _3=0 0 0 0 0 _4=0 1 0 1 1 _5=0 1 0 0 0 _6=0 0 0 0 1 _7=0 0 1 1 1 _8=1 0 0 0 0 _ 1 _ 2 _ 3 _ 4 _ 5
  19. 分割管理による特徴ベクトルの構成法 検索例 key=“full” ( “” =0 0 0 0 0

    0 0 1) _8 に注目して検索単語シグネチャーと比較 左から1ビット目のみ一致 →1 のみを逐次検索すればOK →検索量を減らせる 検索単語シグネチャーの1となっている ビットが増えても同様のことができる _1=1 0 1 1 0 _2=1 1 1 0 0 _3=0 0 0 0 0 _4=0 1 0 1 1 _5=0 1 0 0 0 _6=0 0 0 0 1 _7=0 0 1 1 1 _8=1 0 0 0 0
  20. 分割管理による特徴ベクトルの構成法 (2)FP分割シグネチャーファイル 各ブロック・シグネチャーの先頭数ビット(接頭ビット)でブロッ ク・シグネチャーをグループ化し、分割管理を行う方法(フィック スト・プレフィックス)を用いてブロック・シグネチャー分割管理す る 例 接頭ビット ブロック・シグネチャー 0

    0 0 0 1 0 1 1 0 _ 5 0 1 0 1 1 0 0 0 _ 2 1 1 0 0 1 0 0 1 0 _ 4 1 1 0 0 0 0 0 1 _ 1 1 1 0 0 0 0 1 0 _ 3
  21. 今回の発表内容 特徴ベクトルによる検索 複数の検索ワードの場合の検索 ・演算子を用いた検索方法 ・クラス分け 分割管理による特徴ベクトルの構成法 ・逐次シグネチャーファイル ・ビット・スライスト・シグネチャー・ファイル ・FP分割シグネチャーファイル