k 単語近接検索について

24
1 k 単単単単単単単単単単 単単単単 単単単 単単単単単単単単単単 単単単単単単

Upload: neka

Post on 18-Jan-2016

52 views

Category:

Documents


2 download

DESCRIPTION

k 単語近接検索について. 定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻. 内容. k 単語の近接検索 (proximity search) の                                                                                         時間アルゴリズム 平面走査による方法 分割統治による方法 平面走査アルゴリズムの検索速度の実験 html ファイル 185MB. 背景. 電子化された文書の普及 WWW, メール 新聞 , 辞書 , 書籍 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: k 単語近接検索について

1

k 単語近接検索について

定兼邦彦 今井浩東京大学理学系研究科

情報科学専攻

Page 2: k 単語近接検索について

2

内容

• k 単語の近接検索 (proximity search) の                                                                                         時間アルゴリズム– 平面走査による方法– 分割統治による方法

• 平面走査アルゴリズムの検索速度の実験– html ファイル 185MB

)log( nnO

Page 3: k 単語近接検索について

3

背景

• 電子化された文書の普及– WWW, メール– 新聞 , 辞書 , 書籍– ゲノムデータベース

• 大量の文書からの検索– 文書のランキングが必要

Page 4: k 単語近接検索について

4

文書のランキング

• 検索結果が多い場合に重みをつける– キーワードの重要度

• tf*idf 法

– 参照回数– 近接検索 (proximity search)

Page 5: k 単語近接検索について

5

Proximity Search

• キーワードが近くに現れている場所を探す• 狭い範囲に全てのキーワードが含まれている

ならそこは有益な情報を含むと考える

Page 6: k 単語近接検索について

6

問題の定義 (Proximity Search)

問題 1 (naive proximity search)• 入力 : k 種類の単語のテキスト T[1..N]

での出現位置 ( 合計 n 個 )• 出力 : 全ての単語の出現位置を含む  

 テキスト中の区間 [l,r]• (区間は、幅 r-l の小さい順にならべ

る)• 区間内の単語の出現順は任意

Page 7: k 単語近接検索について

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

Page 8: k 単語近接検索について

8

)( 2dO

既存の方法の問題点

• 3単語以上の場合に良いアルゴリズムがない• 2単語用のアルゴリズムを繰り返す

– 単語間の距離 d を決めておく必要がある– 距離 d 以内の単語の組は      個– 答えの数が多くなる

3単語以上で効率のよいアルゴリズムを提案

「極小」なもののみ求める

本研究

Page 9: k 単語近接検索について

9

本研究の方法

• k 単語を含む極小な区間の列挙を 時間

• 区間の最大値 d の制限はない• メモリ• 2つのアルゴリズム

– 平面走査アルゴリズムの拡張– 分割統治法

)log( nnO

)(nO

Page 10: k 単語近接検索について

10

極小性定義 1

k 単語を含む区間が極小    別の区間を含まない

A B C 極小

A B C 極小B

A B C 極小ではないA

Page 11: k 単語近接検索について

11

naive proximity search の問題点• 検索結果に冗長なものが入る

– 極小ではない区間を含む– 極小 : 他の区間を含まない区間– 区間の数が 個ある

問題 2 (proximity search)

naive proximity search において、極小な区間のみを幅の狭い順に求める

2/)1( nn

極小な区間は n 個未満

Page 12: k 単語近接検索について

12

アルゴリズム ( 平面走査 )

1 各単語の出現位置のリストをソート2 各リストの先頭のものを取り出しソートし

区間 [l,r] を求める3 区間 [l,r] が極小ならヒープに入れる4 区間の左端の単語を取り除き、同じ単語をリ

ストから取り出す。空なら 6 へ。5 区間と単語の順序を更新し、 3 へ。6 ヒープの中の区間をソートして出力

Page 13: k 単語近接検索について

13

現在の区間は極小ではない

次の A は現在の区間に含まれる

A

左端の単語を捨て、同じ単語を入れる

A A AB B BC C C

次の A は現在の区間に含まれる

Page 14: k 単語近接検索について

14

計算量

• 定理 1: k 種類、合計 n 個の単語の出現位置が与えられたとき、問題 2 (proximity search) は 時間でできる。

• 証明 :– 出現位置のソート :– 出現位置のリストのマージ : – 極小な区間のソート :

)log( nnO

)log( nnO)log( knO)log( nnO

Page 15: k 単語近接検索について

15

分割統治による方法

• 単語の位置をソートする必要がない– ある単語の頻度が小さいときに有効

定理 2: 最も少ない単語の頻度が l のとき、 m 個の極小な区間は 時間。

)logloglog( mmklklnO

Page 16: k 単語近接検索について

16

アルゴリズム ( 分割統治 )

1 n 個の単語の位置の中間値 v を求める。2 単語の位置を v より小さいもの (L) と大きい

もの (R) に分ける。 k 個の単語に対し L 中で最右のものと R 中で最左のものを求める。

3 L, R 両方にまたがる区間を平面走査で求める。4 L (R) が k 個の単語を全て含んでいればその

中の区間を再帰的に求める。

Page 17: k 単語近接検索について

17

AA A AB B BC C

中間値

AB CL R

AB

RLABC C

Page 18: k 単語近接検索について

18

実際的な高速化

• 出現位置は整数 radix sort を使う• 区間の幅の最大値 d を設定する• 区間の数の上限を設定する

– ヒープの根に幅が最大のものを入れ、 それより大きいものはヒープに入れない

• 区間の数の上限がない場合– 区間を配列に入れておき最後に radix sort

Page 19: k 単語近接検索について

19

検索速度の実験

• データ– html ファイル 51,783 個 テキストサイズ : 185M バイト ( 1つは平均 3.5KB) suffix array サイズ : 639M バイト– (91-95年の毎日新聞全記事 485M バイト )

• マシン– Sun Ultra60– UltraSPARC-II 360MHz, メモリ 2GB, ディスク 18GB

Page 20: k 単語近接検索について

20

実装方法

• 平面走査アルゴリズム• 位置のソートは基数 の radix ソート• 区間の幅の最大値は 1000

• 区間の数は無制限

162

Page 21: k 単語近接検索について

21

1 キーワードの検索時間

キーワードhttpwwwjphtpen

個数283719214524319914

37471257304053261001469397394371063

検索時間(秒 )0.6980.5050.7782.3334.7211.8204.4102.752

個数に比例した時間 (radix sort)

Page 22: k 単語近接検索について

22

極小な区間の検索時間

キーワードhttp www jph t pe t h n

区間数

37740531805324400220

検索時間(秒 )2.414

16.35126.811

キーワード数818157

1366119222361980

検索時間の約半分は極小な区間を求める時間

時間はキーワードの総数にほぼ比例

ソート以外0.4437.487

12.595

Page 23: k 単語近接検索について

23

まとめ

• k 単語近接検索を 時間で行うアルゴリズムの提案

• 実際にはほぼ 時間• html ファイルでの検索速度の実験

– 通常の検索では速度は問題ない

)log( nnO

)(nO

Page 24: k 単語近接検索について

24

課題

• 分割統治アルゴリズムの実装、平面走査との比較• 高次元への拡張 ( 分割統治アルゴリズム )

– セブンイレブン、ローソン、ファミリーマートが近くにあるところを見つける

• 計算量の下限を求める