360 likes | 455 Views
IIR 輪講復習 #7 Computing scores in a complete search system. お知らせ. たつをさんによる補足情報 http://chalow.net/clsearch.cgi?cat=IIR 復習資料おきば http://bloghackers.net/~naoya/iir/ppt/. 参考. http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html 本資料は書籍の輪読会に向けたサマリ 本資料内で一部上記ドキュメント , スライドからの引用あり.
E N D
お知らせ • たつをさんによる補足情報 • http://chalow.net/clsearch.cgi?cat=IIR • 復習資料おきば • http://bloghackers.net/~naoya/iir/ppt/
参考 • http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html • 本資料は書籍の輪読会に向けたサマリ • 本資料内で一部上記ドキュメント, スライドからの引用あり
7章のテーマ • スコア計算の計算量を削減する方法 • ここまで学んだ各コンポーネント統合した全体図を俯瞰 • ベクトル空間スコアリングと各種クエリ演算子の相性
計算量を減らす戦略 • cos 類似性の計算量が膨大 → 減らしたい • アプローチ • cos 類似性アルゴリズムの見直し • cos 類似性計算の対象を事前に減らす • cos 類似性計算のループ回数を減らす
cos類似性計算アルゴリズムの見直し • 内積計算掛け算 → 足し込み • 上位K個取得のためのソート → ヒープ
計算対象ドキュメントを事前に削減 • Inexact top K document retrieval • Index elimination • idf の高い query term だけ考慮 • query term を複数含むドキュメントだけを考慮 • champion list • postings list の対象を足切り • static quality scores の導入 • "high" and "low"
cos 類似性計算のループ回数を減らす • Impact ordering
(#6 より) クエリもベクトル • query "jealous gossip" • (affection, jealous, gossip) = (0, 1, 1) • 正規化 → (0, 0.77, 0.77) • 内積 • q・SaS = 0.074, q・PaP = 0.085, q・WH = 0.509 • ∴ WH, SaS, PaP の順
クエリベクトルの正規化は必要ない • q・d1, q・d2, q・d3 ... を比較 • 欲しいのは相対的なスコア • (0, 1, 1) のまま計算しても ok • ドキュメントベクトルは要正規化 • (0, 1, 1) ・(a, b, c) = b + c ... 足し算
top K 取得にヒープを使う • 必要なのは top K のみ、全体をソートしなくても良い • ヒープ構築 2J、ヒープから top K 取得 log J
Inexact top K document retrieval • 高いスコアを"もっていそうな"もの • 正確性を犠牲に高速化 • cos 類似性が正確 ≠ 人にとって重要 • K < |A| << N な A に絞る • top K スコアを A から取得
1. 転置インデックス中の対象を絞る • クエリの単語群のうち idf の高いものだけを考慮、足切り • idf 高い = レア語 • idf 低い = 頻出語、且つドキュメント沢山 • 例: "catcher in the rye" → catcher, rye のみ • クエリの単語を複数(または全部)含んでいるドキュメントだけを考慮する
2. postings list 中の対象を絞る • Champion list • postings list 中のドキュメントのうち、考慮すべきドキュメントを r 個にあらかじめ絞る • tf で閾値を決めて足切り • Static quality scoresで足切り • PageRank, ブックマーク数 etc..
A < K 以下問題 • 足切りしすぎて A < K になる... • High and low champions で回避 • High ... 閾値以上のもの • Low ... 残り全部 • Tiered indexes (7.2.1)
Impact ordering • postings list を tf 降順にソートしておく • postings list を渡り歩くのを途中で止める • r 個見つかったとき • tf の閾値を割ったとき • クエリの term を idf 降順にソート、高いものから順に処理 • スコアに最も影響を与える term から処理できる • idf 低いものを処理して、スコアにあまり変化がなかったらそれ以降の処理を止める
Impact ordering で改善 idf 順。idf 低いものはもう計算が要らないと思ったら途中でループ停止 tf 順。r 集まったもしくは tf が閾値を割ったらループ停止
ざっくりまとめると... • 対象ドキュメントを検索語で絞り込む • 検索語も idf で足切りしておく • 単語に紐尽く postings list もあらかじめ tf や PageRank の値で足切りしておく • cos 類似性計算は全部やらない。tf や idf で絞る
そのほかの話題 • Cluster pruning
全体図を考える前に • ここまでに触れたこと以外 • Tiered indexes • Query term proximity • 構文解析 • 各種スコアの統合
Tiered indexes • 段階的インデクス • tr の閾値ごとに postings list を変更 • champion list を一般化したもの • fall back
Query term proximity • クエリ単語が近いとスコアが高い • The quality of mercy is not strained • "strained mercy" ... ω = 4 • ωがスコアに与える影響をどう決定? • hand coding • 機械学習 → 15.4.1
構文解析 • query: rising interest rates • phrase "rising interest rates" で検索 → ベクトル空間スコアリングでランク付け • 期待する件数より少なかったら ... phrase "rising interest", "interest rates" で検索 → スコアリング • それでも少ない ... "rising" "interest" "rates" で検索、スコアリング
スコアリング • スコアを算出する方法 • ベクトル空間スコア • static quality scores • proxymity weighting • etc. • どうやって統合する? • 手動 • 機械学習
results page user query parsing linguistics freetext query parser Documents indexers spell correction scoring and ranking heap zone and field indexes inexact top K retrieval tiered inverted positional index k-gram scoring parameters Indexes MLR Putting it all together (from ppt) training set
ベクトル空間スコアリングとクエリ演算子の関係ベクトル空間スコアリングとクエリ演算子の関係
ベクトル空間スコアリングとクエリ演算子 • Boolean retrieval → ○ • Wildcard queries → △ • Phrase queries → ×
まとめ • 6章で学んだ Vector space model の計算量を減らす手法 • 対象ドキュメント群を減らす • cos 類似性計算は真面目に全部やらない • 全体図を俯瞰しました • いくつか新しい話題も • 機械学習の章への布石 • Vector space model とクエリ演算子