索引篩法 ― 大規模サーチエンジンのため の高速なランキング検索法

索引篩法 ―
大規模サーチエンジンのため
の高速なランキング検索法
NTT未来ねっと研究所
原田昌紀 佐藤進也 風間一洋
研究の動機
残り
残りは不要
は不要
n
Webサーチエンジンの特性
ほとんどの利用者は適合度上位10件しか見ない
→ 適合度の高い文書だけを検索することで高速化できないか?
q
フレーズ一つの検索質問が多い
→ 適合度の高い文書=フレーズの出現頻度が高い文書
q
索引篩法の提案
n
索引篩法
q
n
適合度に大きく寄与する出現位置をあらかじめ抽出し
ておき,適合度の高い文書を先に検索する
現時点での成果
q
検索語の25%∼58%を2∼8倍高速に検索できた
n
q
しかし,それ以外の検索語では逆に遅くなってしまう
改善の余地は大きい
転置索引の特長
n
あらゆる索引語のすべての位置情報を格納
q
n
n
位置情報=<文書番号d,文書内頻度ft,d,[文書内出現位置] >
フレーズ検索も可能
文書単位のランキング検索が容易
辞書ファイル
索引語t 文書頻度f t
:
温室
22
温泉
3480
温暖
91
:
位置情報ファイル
<位置情報1>,<位置情報2>,…,<位置情報22>
<位置情報1>,<位置情報2>,…, <位置情報3479>,<位置情報3480>
<位置情報1>,…,<位置情報91>
< 文書番号d,文書内頻度ft,d,[文書内出現位置] >
ランキング検索の手順
1.
2.
3.
4.
5.
フレーズをNグラムに分割する
辞書ファイルでNグラムを検索する
すべてのNグラムが存在? NG → 0件
位置情報ファイルを読み出し,
フレーズの文書内位置を求める
文書内頻度から適合度を計算
適合度上位最大 k 件を表示
Nグラム検索
温泉
加賀
賀温
位置情報
読み出し
ヒープ
フレーズ
判定
適合度
計算
上位k件
を選別
表示
ランキング検索処理時間
検索時間は読み出される位置情報量に比例する
q
理由: ディスク読み出し+文書番号デコード+フレーズ判定
4500
4000
検索処理時間(ms)
n
3500
3000
2500
2000
1500
1000
500
0
0M
5M
10 M
15 M
読み出された出現位置の数
20 M
先行研究
n
Document Filtering for Fast Ranking [Persin,94]など
q
q
q
n
適合度への寄与の大きな検索語から順に検索する
位置情報を文書内頻度の大きい順に読み出す
適合度への寄与が小さくなった時点で検索結果として出力する
問題点:英単語のOR検索しかできない
q
日本語Webサーチエンジンではフレーズ一個の検索が7割
索引篩法の概略
n
高適合語転置索引の作成
q
Nグラムを一つずつ検索し,
辞書
スコアF 以上の文書がk 個以上あれば, ファイル
そうした文書の位置情報を抽出する.
n
n
F スコアの閾値(適当に決める)
k 表示される文書数 (k = 10)
出現位置
ファイル
通常の転置索引
スコア F 以上の
文書が k 個以上?
n
検索手順
1. 高適合語転置索引で検索する
2. スコア F 以上の文書が k 個以上検索
されたら成功
3. 通常の転置索引で検索する
辞書
ファイル
出現位置
ファイル
高適合語転置索引
フレーズが検索できる理由
n
検索語一つの場合: 「質問ベクトル」は不要
q
q
検索語の重みを考えなくてもよい
適合度=検索語のスコア
n
n
検索語の文書内頻度を文書サイズで正規化するだけ
高適合語転置索引で検索できる理由
フレーズの文書内頻度がフレーズに含まれるNグラムの文書内
頻度を超えることはない
→ フレーズのスコアが F 以上になる文書では,フレーズに含まれ
るNグラムのスコアも F 以上になる
q
例: ” 加賀温泉”のスコアが高い文書 → ”加賀”でも” 温泉”でもスコアが高い文書
高適合語転置索引の検索手順
1.
2.
3.
4.
5.
6.
フレーズをNグラムに分割する
辞書ファイルでNグラムを検索する
すべてのNグラムの文書頻度がk以上?
位置情報ファイルを読み出し,
フレーズの文書内位置を求める
文書内頻度からスコアを計算
スコアF以上の文書が k 件ある?
上位 k 件を表示
NG
NG
失敗1
再検索
失敗2
再検索
評価実験
n
WebサーチエンジンODI
Nのデータを利用
q
q
n
検索対象:Webページ 4,100万URL
ODINで検索された質問1,000語
6段階の F で高適合語転置
索引を作成し,成功率と検索
速度を評価( k = 10 )
Nグラム数 索引サイズ
I
I2
I4
I7
I11
I16
I22
(100%)146GB
4.42% 59GB
2.94% 38GB
2.31% 26GB
1.86% 19GB
0.93% 13GB
0.61%
9GB
高適合語転置索引のサイズと成功率
n
n
索引が大きいほど成功率が高い
索引サイズと関係なく成功・失敗する検索質問も多い
q
0.61%のNグラムで検索質問の1/4が検索できる
q
検索質問の4割は高適合語転置索引では検索できない
成功
失敗1
失敗2
I2
I4
I7
I11
I16
I22
0%
50%
100%
高適合語転置索引のサイズと検索時間
n
索引サイズが大きいほど検索時間が長い
q
n
成功率とトレードオフの関係
失敗2の検索時間は長い
q
検索時間の短い検索語(非フレーズ)は成功または失敗1
I2
I4
I7
I11
失敗2
失敗1
成功
I16
I22
0
100
200
300
400
500
600
索引篩法の効果
n
n
成功時には2∼8倍高速
失敗時には再検索をおこなうため逆に遅くなる
q
平均すると10%前後の高速化にとどまる
I2
I4
I7
平均
失敗2+再検索
I11
I16
失敗1+再検索
成功
I22
0
500
1000
通常
1500
索引篩法の有効な検索語(1)
n
外見から成功・失敗を予想するのは難しい
成功
n
n
n
n
n
n
n
日本農業賞
京都精華大学
P3B-F
スパークリングワイン
諸星大二郎
信楽焼
中川温泉
失敗1・失敗2
n
n
n
n
n
n
n
日本流行色協会
新城眼科
L685
安くておいしいワイン
沖縄の人口
魚肉ソーセージ
鬼岩温泉
索引篩法の有効な検索語(2)
n
文書頻度が高いほど成功率は高い
q
q
しかし,フレーズの文書頻度
の予測は難しい
現在は文書頻度10以上の
Nグラムを篩にかけているが,
1000以上に限定すべき?
→ 今後の課題
文書頻度 ft
0-49
成功率
0%
50-99
1.5 %
100-499
5.6 %
500-999
38.7 %
1000-4999
74.8 %
5000-
95.3 %
Total
32.6 %
今後の課題
n
再検索コストの削減
n
成功率の改善
q
n
Nグラムごとに異なるしきい値 Ft を用いるように拡張?
AND検索・OR検索への対応
まとめ
n
日本語フレーズのランキング検索を高速化する
索引篩法を提案した
n
実際のWeb文書と検索質問を使って評価した
q
検索語の25%∼58%を2∼8倍高速に検索できた
n
しかし,失敗時のコストが大きい
補足:索引単位による違い
n
Nグラムの長さと成功率の関係
q
q
フレーズをどう分割しても成功率は変わらない
長さN未満のフレーズは索引篩法では検索できない
n
n
OR検索ができないのと同じ理由
形態素単位の場合
q
q
手順はNグラム単位と同じでよい
形態素と検索語フレーズが一致するなら,索引篩法
より単純な方法で済む
n
あらかじめすべての形態素で上位 k 件を検索しておく