檢索模型與搜索排序
前言
搜索結果排序是搜索引擎最核心的構成部分,很大程度上決定了搜索引擎的質量好壞以及用戶接受與否。盡管搜索引擎在實際結果排序時融合了上百種排序因子,但最重要的兩個因素還是用戶查詢和網頁的內容相關性及網頁鏈接情況。那么,我們得到用戶搜索詞之后,如何從內容相關性的角度上對網頁進行排序輸出呢?
判斷網頁內容是否與用戶查詢相關,這依賴於搜索引擎所采用的檢索模型。搜索引擎的核心是判斷哪些文檔是和用戶需求相關的,並按照相關程度排序輸出,所以相關程度計算是將用戶查詢和文檔進行匹配的過程,而檢索模型就是用來計算內容相關性程度的理論基礎和核心部件。比較常見的幾種檢索模型有:布爾模型、向量空間模型、概率模型、語言模型以及機器學習排序算法。下面,我講解一下比較基礎的前三種模型。
首先我們得知道什么樣的檢索模型是一個好模型呢?我們得到用戶查詢詞之后把待搜索文檔分為四類:內容相關以及包含查詢詞、內容相關但不包含查詢詞、內容不相關以及包含查詢詞、內容不相關並且不包含查詢詞。我們稍微思考之后應該能夠知道,前兩項應該是我們比較想要的搜索結果,即把這兩項文檔內容搜索輸出的檢索模型是比較好的模型。
布爾模型
最簡單的一種檢索模型,歸其數學基礎就是集合論。使用“與或非”這些邏輯連接詞將用戶的查詢詞串聯起來。比如我們希望查找和蘋果公司相關的信息,可以用下面的邏輯表達式來在作為查詢:
蘋果 AND (喬布斯 OR iPad2)
這個表達式的含義就是如果一篇文檔里包含了“蘋果”並且也包含了“喬布斯”或者“iPad2”,那么這個文檔就是我們需要的,就可以把它作為搜索結果輸出。
以上圖為例:假設此時我們有5個文檔,文檔1(D1)包含了查詢詞“喬布斯”,文檔4包含了查詢詞“喬布斯”和“iPad2”,其他文檔含義一樣。這時,我們可以很直觀的看到文檔1、3、4、5包含了“喬布斯”或者“iPad2”,而文檔2、3、5包含了“蘋果”一詞,所以“蘋果 AND (喬布斯 OR iPad2)”這一查詢詞就可以搜索到文檔3、5,這兩個文檔就是滿足整個邏輯表達式的。
問一問:看到這里,你知道布爾模型有哪些缺點嗎,親?
向量空間模型
這個模型可以算是我比較喜歡的模型了,雖然它的效率不及后面提到的幾個模型,也許是我在看書的時候比較認真看這個模型吧,感覺挺高大上的。
向量空間模型把每個文檔都看做是由t維特征組成的一個向量,其中每個特征會根據一定依據計算其權重,然后就計算文檔之間或者查詢和文檔之間的相似性了。對於搜索排序任務來說,就計算用戶的查詢詞和文檔網頁內容之間的相關性,然后根據相關性大小排序輸出前K個結果即可。
特征權重計算
我們需要考慮兩個因素:詞頻因子(Tf)和逆文檔頻率因子(IDF)
Tf:一個單詞在文檔中出現的次數,有兩個計算公式:
WTf = 1 + log(Tf)
WTf = a + (1-a) * Tf / Max(Tf)
a是調節因子,經驗值為0.4,Max(Tf)代表了文檔中所有單詞中出現次數最多的那個單詞對應的詞頻數目。第二個公式有效的抑制了長文檔的優勢,因為雖說兩個公式都可以,但是想想如果采用第一個公式,我們對於長文檔和短文檔來說,長文檔中Tf普遍比短文檔的值高,但是這並不意味着長文檔就是我們需要的呀,所以,第二個計算公式更加的公正有效。
IDF:逆文檔頻率因子,其計算公式如下:
IDFk = log(N/nk)
N代表文檔集合中總共有多少個文檔,而nk代表特征單詞k在其中多少個文檔中出現過,即文檔頻率。顯然,文檔頻率越高,則IDF就越小,IDF反映了一個特征詞在整個文檔集合中的分布情況,特征詞出現在其中的文檔數目越多,這個詞區分不同文檔的能力就越差。
特征權重:Weightword = Tf * IDF
對於某個文檔D來說:
如果D中某個單詞的詞頻很高,而且這個單詞在文檔集合的其他文檔中很少出現,那么這個單詞的權值會很高。
如果D中某個單詞的詞頻很高,但是這個單詞在文檔集合的其他文檔中也經常出現,或者單詞詞頻不高,但是在文檔集合的其他文檔中很少出現,那么這個單詞的權值一般。
如果D中某個單詞的詞頻很低,同時這個單詞在文檔集合的其他文檔中經常出現,那么這個單詞權值很低。
相似性計算
根據上圖可以列出下面的式子:
Cosine相似性就是計算特征空間中兩個向量之間的夾角,夾角越小,說明兩個特征向量越相似。但是有一種特殊情況:兩個完全相同的文檔,其在向量空間中的兩個向量是重疊的,所以Cosine相似性計算結果是1。
概率檢索模型
丫據說比向量空間模型效果更好,不過看到概率兩個字我就有點蔫兒了,原諒我大一時候概率沒學好啊,現在有時候還在補習。這里我先給出一些計算公式。
其它模型:HMM隱馬爾科夫語言模型、翻譯模型、BM25模型等等。
繼續學習吧,騷年!