1. 程式人生 > >幾種常見的搜尋引擎檢索模型

幾種常見的搜尋引擎檢索模型

布林模型

蘋果 AND 公司:表示搜尋既包含“蘋果”,又包含“公司”這兩個詞的文件。
蘋果 OR 公司:表示搜尋包含“蘋果”,或包含“公司”這兩個詞中任意一個的文件。
特點:簡單粗暴

向量空間模型

把文件被分詞後的每一個詞當作向量空間的一個維度,把文件表示為一個線性矩陣,比較某個文件的矩陣和查詢詞的矩陣之間的餘弦距離,距離越近,則相關性越大。最後根據相關性對搜尋結果做排序。
注意事項:使用TF-IDF對部分詞權重進行調整,對文件長度過大的做懲罰等。
特點:依賴於經驗對模型的引數進行調整。

BIM、BM25、BM25F

這三個演算法是逐步完善的關係
BIM
對於使用者的一次搜尋,假設拆分為三個詞W1、W2、W3,假設索引庫中的文件總數為100,有10個文件包含W1,20個文件包含W2,30個文件包含W3,則把W1的權重記為10%,W2的權重記為20%,W3的權重記為30%。假設有一個文件Doc1包含W1、W2兩個搜尋詞,則它的相關性為10%,20%兩個權重的彙總。依此對索引庫中的100個文件算出相關性得分,把搜尋結果按相關性得分排序即可。
BM25
在BIM的基礎上增加了兩個新的參考因素:1、搜尋詞在文件中的權重;2、搜尋詞自身的權重。
BM25F
在BM25的基礎上增加考慮了文件中不同Field的權重。比如,標題中包含搜尋比內容中包含搜尋詞要有更高的相關性得分。
特點:當前效果最好的模型,在商業搜尋引擎中廣泛使用。

統計語言模型

先引入一個概念:抽取概率
把一篇文件進行分詞,統計其中每個詞的出現頻率進行計數,則一個詞Word在文件Doc中的抽取概率為“Word詞的計數/Doc中所有詞的計數之和”。所謂抽取概率,就是在Doc中隨機抽取一個詞的話,Word被抽取到的概率。
假設使用者搜尋“野鳥裝備 跑步”,野鳥裝備在文件Doc1中的抽取概率1%,跑步的抽取概率為2%,則該次搜尋中,Doc1的相關性得分為1%*2%。依此可以計算出所有文件的相關性得分,並按相關性得分對搜尋結果進行排序。
特點:與BM25效果相當,但需使用大量語料庫來訓練,語料庫最好與使用場景比較相似。

機器學習模型

機器學習與前面的模型相比,有幾個顯著的不同:
1、這裡一般使用有監督的機器學習,因此需要對訓練結果有監督反饋,使用者對搜尋結果的隱性評價(即點選)可以看作是一種監督反饋。
2、傳統搜尋計算搜尋結果相關性一般也就考慮關鍵詞匹配、詞頻等少數幾個維度的資料,使用前面提到的模型已經足夠,只有當考察的資料維度比較多時,機器學習的優勢才會體現出來。比如像百度、Google這種大型的商業搜尋引擎,考察的資料維度要多很多,比如鏈入鏈出連結數、網站型別、網站權威度、使用者地理位置、歷史搜尋習慣、裝置型別等等,據說Google考察的資料維度多達幾百個。
特點:複雜度高,適合大型商業搜尋引擎。