k 単語近接検索について
DESCRIPTION
k 単語近接検索について. 定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻. 内容. k 単語の近接検索 (proximity search) の 時間アルゴリズム 平面走査による方法 分割統治による方法 平面走査アルゴリズムの検索速度の実験 html ファイル 185MB. 背景. 電子化された文書の普及 WWW, メール 新聞 , 辞書 , 書籍 - PowerPoint PPT PresentationTRANSCRIPT
1
k 単語近接検索について
定兼邦彦 今井浩東京大学理学系研究科
情報科学専攻
2
内容
• k 単語の近接検索 (proximity search) の 時間アルゴリズム– 平面走査による方法– 分割統治による方法
• 平面走査アルゴリズムの検索速度の実験– html ファイル 185MB
)log( nnO
3
背景
• 電子化された文書の普及– WWW, メール– 新聞 , 辞書 , 書籍– ゲノムデータベース
• 大量の文書からの検索– 文書のランキングが必要
4
文書のランキング
• 検索結果が多い場合に重みをつける– キーワードの重要度
• tf*idf 法
– 参照回数– 近接検索 (proximity search)
5
Proximity Search
• キーワードが近くに現れている場所を探す• 狭い範囲に全てのキーワードが含まれている
ならそこは有益な情報を含むと考える
6
問題の定義 (Proximity Search)
問題 1 (naive proximity search)• 入力 : k 種類の単語のテキスト T[1..N]
での出現位置 ( 合計 n 個 )• 出力 : 全ての単語の出現位置を含む
テキスト中の区間 [l,r]• (区間は、幅 r-l の小さい順にならべ
る)• 区間内の単語の出現順は任意
7
既存研究
• Manber, Baeza-Yates 91○ 距離 d 以内の 2 単語の数を 時間で求める × メモリ
• Gonnet, Baeza-Yates, Snider 92– 距離 d 以内の 2 単語を 時間
• Aref, Barbara, Johnson, Mehrotra 95– 距離 d 以内の k 単語の列挙を 時間
)(log nO)(dnO
))log)(( 121 nnnO
)( 2nO
8
)( 2dO
既存の方法の問題点
• 3単語以上の場合に良いアルゴリズムがない• 2単語用のアルゴリズムを繰り返す
– 単語間の距離 d を決めておく必要がある– 距離 d 以内の単語の組は 個– 答えの数が多くなる
3単語以上で効率のよいアルゴリズムを提案
「極小」なもののみ求める
本研究
9
本研究の方法
• k 単語を含む極小な区間の列挙を 時間
• 区間の最大値 d の制限はない• メモリ• 2つのアルゴリズム
– 平面走査アルゴリズムの拡張– 分割統治法
)log( nnO
)(nO
10
極小性定義 1
k 単語を含む区間が極小 別の区間を含まない
A B C 極小
A B C 極小B
A B C 極小ではないA
11
naive proximity search の問題点• 検索結果に冗長なものが入る
– 極小ではない区間を含む– 極小 : 他の区間を含まない区間– 区間の数が 個ある
問題 2 (proximity search)
naive proximity search において、極小な区間のみを幅の狭い順に求める
2/)1( nn
極小な区間は n 個未満
12
アルゴリズム ( 平面走査 )
1 各単語の出現位置のリストをソート2 各リストの先頭のものを取り出しソートし
区間 [l,r] を求める3 区間 [l,r] が極小ならヒープに入れる4 区間の左端の単語を取り除き、同じ単語をリ
ストから取り出す。空なら 6 へ。5 区間と単語の順序を更新し、 3 へ。6 ヒープの中の区間をソートして出力
13
現在の区間は極小ではない
次の A は現在の区間に含まれる
A
左端の単語を捨て、同じ単語を入れる
例
A A AB B BC C C
次の A は現在の区間に含まれる
14
計算量
• 定理 1: k 種類、合計 n 個の単語の出現位置が与えられたとき、問題 2 (proximity search) は 時間でできる。
• 証明 :– 出現位置のソート :– 出現位置のリストのマージ : – 極小な区間のソート :
)log( nnO
)log( nnO)log( knO)log( nnO
15
分割統治による方法
• 単語の位置をソートする必要がない– ある単語の頻度が小さいときに有効
定理 2: 最も少ない単語の頻度が l のとき、 m 個の極小な区間は 時間。
)logloglog( mmklklnO
16
アルゴリズム ( 分割統治 )
1 n 個の単語の位置の中間値 v を求める。2 単語の位置を v より小さいもの (L) と大きい
もの (R) に分ける。 k 個の単語に対し L 中で最右のものと R 中で最左のものを求める。
3 L, R 両方にまたがる区間を平面走査で求める。4 L (R) が k 個の単語を全て含んでいればその
中の区間を再帰的に求める。
17
例
AA A AB B BC C
中間値
AB CL R
AB
RLABC C
18
実際的な高速化
• 出現位置は整数 radix sort を使う• 区間の幅の最大値 d を設定する• 区間の数の上限を設定する
– ヒープの根に幅が最大のものを入れ、 それより大きいものはヒープに入れない
• 区間の数の上限がない場合– 区間を配列に入れておき最後に radix sort
19
検索速度の実験
• データ– html ファイル 51,783 個 テキストサイズ : 185M バイト ( 1つは平均 3.5KB) suffix array サイズ : 639M バイト– (91-95年の毎日新聞全記事 485M バイト )
• マシン– Sun Ultra60– UltraSPARC-II 360MHz, メモリ 2GB, ディスク 18GB
20
実装方法
• 平面走査アルゴリズム• 位置のソートは基数 の radix ソート• 区間の幅の最大値は 1000
• 区間の数は無制限
162
21
1 キーワードの検索時間
キーワードhttpwwwjphtpen
個数283719214524319914
37471257304053261001469397394371063
検索時間(秒 )0.6980.5050.7782.3334.7211.8204.4102.752
個数に比例した時間 (radix sort)
22
極小な区間の検索時間
キーワードhttp www jph t pe t h n
区間数
37740531805324400220
検索時間(秒 )2.414
16.35126.811
キーワード数818157
1366119222361980
検索時間の約半分は極小な区間を求める時間
時間はキーワードの総数にほぼ比例
ソート以外0.4437.487
12.595
23
まとめ
• k 単語近接検索を 時間で行うアルゴリズムの提案
• 実際にはほぼ 時間• html ファイルでの検索速度の実験
– 通常の検索では速度は問題ない
)log( nnO
)(nO
24
課題
• 分割統治アルゴリズムの実装、平面走査との比較• 高次元への拡張 ( 分割統治アルゴリズム )
– セブンイレブン、ローソン、ファミリーマートが近くにあるところを見つける
• 計算量の下限を求める