文章目錄
- 1.索引去除技術
- 2.勝利表法
- 3.靜態得分排序法Static quality Score
- 4.分層搜尋排序
- 5.cluster pruning
- 1.查詢詞項鄰近性
一、打分排序的特性
其實對於打分排序來說,我們最終只需要確定文檔的相對順序即可,因此我們可以簡化打分的演算法,只需要保持相對順序不變即可;
二、快速排序及打分方法
我們前面的打分排序方法都需要計算查詢及每篇文檔的餘弦相似性,然後需要取出打分最高的前K篇文檔,這樣做的複雜度是很高的;其實如果有一個演算法能夠近似求出前K篇文檔但是複雜度少很多(不需要計算所有文檔的得分),則我們通常會採用後一種演算法;
通用方法:預先找到文檔子集A(遠小於初始文檔集),包含了大多數的候選文檔,並在A中計算得分最高的前K篇文檔;以下方法都是基於這個規則計算的;
1.索引去除技術
(1)只考慮term的idf超過閾值的posting;因為低idf的term通常是stop words,posting非常長,所以不計算這些將使複雜度大大降低,因此不必考慮;
這裡會出現超過閾值的doc沒超過K篇,則需要使用層次型索引解決;
層次型索引:將倒排記錄表進行分層,比如tf超過20的在第一層,tf超過10的在第二層,當需要尋找前K篇文檔時,只需要先在第一層尋找,如果沒取夠K篇,則到第二層尋找;
因此層次型索引是解決可能返迴文檔少於K篇的方法;
(2)只考慮包含多個查詢詞項的文檔;
2.勝利表法
勝利表(champion list):對於詞項t,預先取出posting的tf值最高的r篇文檔,此序列稱為勝利表;
給定一個查詢Q,我們只需要求Q中的每個詞項的勝利表的並集,此並集就是通用方法所說的文檔子集A,並在A中計算餘弦相似性;
3.靜態得分排序法Static quality Score
每篇文檔都有一個與查詢無關的靜態得分g(d),倒排索引中的posting按照g(d)進行降序排列;
而最後的得分是Score(q,d)=g(d)+v(q)v(d);
在第二十一章所說的PageRank是一個靜態品質得分,是一個基於網頁連結分析的打分;
4.分層搜尋排序
對於詞項t,維持兩個表:高端表(tf值最高的m篇文檔)和低端表(其餘文檔),都以g(d)排序;
取出打分最高的K篇文檔方法:先計算高端表的得分,如果已經在高端表已經能夠取出K篇得分最高的文檔,則結束;否則,其餘的在低端表中取;
5.cluster pruning
leader:在N篇文檔中找到(根號N)篇文檔作為leader;
follower:每個leader都有(根號N)個follower,表示與leader距離較近;
查詢方法:給定查詢Q,先與每個leader計算餘弦相似性,找到最近的leader,文檔子集A為此leader+leader對應的follower;
三、其他考慮因素
1.查詢詞項鄰近性
我們希望查詢詞在文檔中都靠的很近,這樣才能夠使得文檔和查詢更相關;
最小視窗大小:the quality of mercy is not stained ,如果查詢為:stained quality;則最小視窗大小為6(quality of mercy is not strained);
軟合取:文檔不必包含全部的查詢詞項,只需要包含大部分的查詢詞項即可;
因此有可能需要將鄰近性也加入權重中;
四、搜尋引擎組成
indexer用於產生各式各樣的索引,比如參數化索引、域索引、K-gram索引、分層索引;
向量空間模型和布爾檢索模型有所不同,布爾模型只考慮詞項在文檔中是否存在,而不考慮出現了幾次,也沒有權重;