文字列照合に基づく全文検索について自然言語処理研究室B3 福嶋 真也
View Slide
参考文献北 研二、津田 和彦、獅々堀 正幹 著「情報検索アルゴリズム」 2002年 共立出版株式会社平田 富夫 著 「アルゴリズムとデータ構造」1990年 森北出版会社
全文検索とは与えられたキーワードに対して、文書中からキーワードと完全に一致する部分を探し出す技術テキストエディタの検索コマンドやテキストデータベースの検索、スペリング検査、テキスト編集などに利用大きく分けて2つの方法が存在・文字列照合を用いる方法・索引を用いる方法今回は文字列照合を用いる方法について紹介
文字列照合に用いられるアルゴリズム単一のキーワードに対して用いられるアルゴリズム・ Knuth-Morris-Pratt法(KMP法)・Boyer-Moore法(BM法)複数のキーワードに対して用いられるアルゴリズム・Aho-Corasick法(AC法)
SimpleSearchもっとも単純な文字列照合アルゴリズムキーワード(長さn)に対して検索対象となる文字列(テキストストリング)の1文字目からn文字目まで一致しているか確認2文字目からn+1文字まで一致しているか確認テキストストリングの文字列の末尾まで繰り返す・・・
SimpleSearch例キーワード abcabaテキストストリング abcabcababcab位置 1 2 3 4 5 6 7 8 9 10 11 12 13text a b c a b c a b a b c a b照合状況〇 〇 〇 〇 〇 ×××〇 〇 〇 〇 〇 ◎××〇 〇 ××
KMP法SimpleSearchでは1文字ずつずらすずらす量を変えることができれば試行回数は少なくなる失敗関数を用いてずらす量を計算失敗関数f(i)=1+max{u|0≦u2… = −−+1… −1}
KMP法例キーワード abcabaテキストストリング abcabcaba位置 1 2 3 4 5 6 7 8 9text a b c a b c a b a照合状況 〇 〇 〇 〇 〇 ×〇 〇 〇 ◎
KMP法失敗関数位置 1 2 3 4 5 6 7キーワードa b c a b aa b c a b aa b c a b af(i) 0 1 1 0 1 3 2
BM法キーワードの末尾から照合をしていくことでずらせる量を増やす方法例キーワード abcabaテキストストリング abcabcaba位置 1 2 3 4 5 6 7 8 9text a b c a b c a b a照合状況 ×◎ 〇 〇 〇 〇 〇
BM法skip関数キーワードの末尾から何文字目に目的の文字が存在するかを示す関数(もしキーワード内に目的の文字がなければキーワードの長さがskip関数の値となる)例:abcaba文字 Skip関数a 2b 1c 3その他の文字 6
AC法マシンACと呼ばれる一種の有限オートマトンを複数のキーワードから構成し、これに入力としてテキストストリングを与えることで文字列照合を行う手法※有限オートマトン有限個の状態の遷移と動作の組み合わせからなる「ふるまいのモデル」現在状態から遷移しうる状態、遷移のきっかけとなる条件を列挙することで定義される
AC法マシンACgoto関数、failure関数、output関数からなるgoto関数入力によってどのような状態に遷移するかを示す状態遷移図failure関数goto関数で遷移が失敗したときにどの状態になるかを表す関数output関数ある状態になったとき検出されるキーワードを表す関数
AC法例1:{”ab”,”bc”,”bab”,”d”,”abcde”}のキーワードからなるマシンACs f(s)1 02 33 04 05 16 27 08 49 710 0s output(s)2 {“ab”}4 {“bc”}6 {“bab”,”ab”}7 {“d”}8 {“bc”}9 {“d”}10 {“abcde”}(a)goto関数(b)failure関数 (c)output関数
AC法例2:テキストストリング”xbabcdexを例1の入力として入れた時の遷移0 0 3 5 6 8 9 10 0goto関数による遷移failure関数による遷移2 0x b xba c d e
本日の発表内容全文検索・SimpleSearch・KMP法・BM法・AC法