概率檢索模型

概率檢索模型是當前信息檢索領域效果最好的模型之一,它基於對已有反饋結果的分析,根據貝葉斯原理爲當前查詢排序。

我在之前的博客 樸素貝葉斯分類 中介紹瞭如何用樸素貝葉斯算法對數據進行分類,其實概率檢索模型的基本原理與樸素貝葉斯分類是一樣的。先回憶一下樸素貝葉斯算法的原理:對於測試元組X ,最終目的是要計算對於不同的類Ci ,計算後驗概率p(Ci|X) ,哪個類最大,就屬於哪個類。而爲了計算p(Ci|X) ,則需要用貝葉斯公式做如下分解:

(10)p(Ci|X)=p(X|Ci)p(Ci)p(X)

因爲要比較大小,所以忽略p(X) ,只需要考慮分子中的p(X|Ci)p(Ci) ,其中p(Ci) 可以通過抽樣得到,那麼問題轉化爲計算p(X|Ci)p(X|Ci) 代表X 在類Ci 中的概率。如果Xn 個相互之間無關的屬性組成,那麼這個概率一般如下計算:

(11)p(X|Ci)=j=1np(Xj|Ci)

其中Xj 爲測試元組的第j 個屬性值,如果屬性是離散屬性,那麼p(Xj|Ci)=|Xj||Ci| ,其中|Xj||Ci| 表示類Ci 的數據元組中擁有屬性Xj 的概率。如果屬性是連續屬性呢,你自己看上面那篇博文,我這裏不說了。之所以說離散時的情況,是因爲本文後面要用。以上就是樸素貝葉斯分類法的原理,我大概複述一遍,方便理解後面要說的東西。

1. 基本思想

概率檢索模型與貝葉斯分類的思想非常接近,但還是有本質區別的。概率檢索模型的根本目的不是分類,它不需要根據查詢判斷一個文檔屬於“相關”或者“不相關”,而是計算這個文檔屬於屬於“相關”或者“不相關”的概率大小爲文檔排序。我將概率檢索模型要解決的問題刻畫如下。

問題模型:現在對於一個查詢q ,已知文檔集中哪些與q 是相關的(這類文檔的類標號記爲C1 ),哪些與q 是不相關的(這類文檔的類標號記爲C0 )。概率檢索模型的核心是對於每一個文檔X 計算公式(1),公式(1)計算出的α 代表了文檔X 屬於“相關”類的概率與屬於“不相關”類的概率的比值(也叫“優勢比”)。顯然,這個比值越大,代表該文檔與查詢的相關度越大,因此我們就把α 看做是相關度得分,最後通過α 將文檔排序。

(1)α=p(C1|X)p(C0|X)=p(X|C1)p(C1)p(X|C0)p(C0)

其中,p(C1|X)p(C0|X) 的計算過程如下:

(12)p(C1|X)=p(X|C1)p(C1)p(X)p(C0|X)=p(X|C0)p(C0)p(X)

2. 推導過程

現在看看具體怎樣計算公式(1)。首先,p(C1)p(C0) 其實對於所有的文檔來說都是一樣的,因爲最終的目的是比較大小,所以我們忽略掉。α 的計算可以簡寫成如下形式:

(2)α=p(X|C1)p(X|C0)

接下來計算p(X|Ci) 的方法就跟樸素貝葉斯中那個連乘的公式是一樣的了,但是有一點不同,用樸素貝葉斯做數據分類的時候,一般默認所有數據元組的屬性值都是存在的,而到了信息檢索這就不一樣了,我們知道文檔由詞項組成,而某一個詞項可能在某一個文檔中,也可能不在。

所以我們不妨記單詞wj 在類Ci 中隨機選擇的一篇文檔中出現的概率爲p(wj|Ci) ;那麼單詞wj 不在類Ci 中隨機選擇的一篇文檔中出現的概率就是1p(wj|Ci) ,那麼記爲p(wj¯|Ci) 好了。

現在就可以將α 的計算公式寫成如下形式:

(13)α=wjXp(wj|C1)wjXp(wj¯|C1)wjXp(wj|C0)wjXp(wj¯|C0)

爲了方便推導,將p(wj|C1) 記爲pj ,將p(wj|C0) 記爲sj ,則α 可以表示成下面的公式(3):

(3)α=wjXpjwjX1pjwjXsjwjX1sj

直接看公式(3)可能有點抽象,我舉個例子嘗試說明一下,假如文檔集的詞典爲{w1,w2,w3,w4} ,文檔1擁有的詞項爲{w1,w3} ,那麼文檔1的α 值可以如下計算:

(14)α=p1p3(1p2)(1p4)s1s3(1s2)(1s4)

現在,對公式(3)做一個數學上的等價變換,如下:

(4)α=wjXpjwjX1pjwjXsjwjX1sj=wjXpjwjXsjwjX1pjwjX1sj=(wjXpjwjXsjwjX1sjwjX1pj)(wjX1pjwjX1sjwjX1pjwjX1sj)=wjXpj(1sj)wjXsj(1pj)1pj1sj

其中pjsj 對於任意文檔來說都一樣,所以公式(4)的第二部分可以忽略,這也是我上面經過這麼複雜的公式計算的原因,就是要將文檔排序的比較依據化簡成

(15)α=wjXpj(1sj)wjXsj(1pj)

log 函數進一步處理,得到:

(5)j=1nlogpj1pj+log1sjsj

也就是說,現在只要能計算出pjsj 就成功了。在計算之前,我們先寫出下面的索引項出現列聯表:

 
包含wj 的文檔 rj njrj nj
不包含wj 的文檔 |C1|rj Nnj|C1|+rj Nnj
所有文檔 |C1| |C0| N

根據這個表可以得到以下計算公式:

(16)pj=rj|C1|sj=njrj|C0|

因爲在公式(5)中,我們用log 函數進行了處理,所以我們在pjsj 的計算公式中分子加0.5,分母加1,做平滑計算:

(17)pj=rj+0.5|C1|+1sj=njrj+0.5|C0|+1

把上面的結果代入公式(5),得到:

(6)j=1nlog(rj+0.5)(|C0|nj+rj+0.5)(|C1|rj+0.5)(njrj+0.5)

這個公式(6)也叫做Robertson-Sparck Jones等式。

3. 無類別估值的解決方案

Robertson-Sparck Jones等式的計算條件是知道|C1| ,但是如果不知道呢?實際上,大多時候我們是不知道的。一種可行的方案是,初始時令|C1|=0 ,則公式(6)化簡爲:

(7)j=1nlogNnj+0.5nj+0.5

可以看到,公式(7)裏面有一個IDF的成分,但是既沒有TF成分,也沒有文檔長度歸一化的處理過程。這些問題導致上面所說的概率檢索模型並不實用。後來的BM25模型解決了這些問題,成爲了商業搜索系統中非常成功的案例。

4. BM25模型

我們知道,在向量空間模型的經典權重算法TFIDF 中,好的索引權重模型應該考慮三方面的內容:(1)詞頻;(2)逆文檔頻率;(3)文檔長度。而上面由概率檢索模型推導出的公式(6)顯然只是包含了逆文檔頻率的因素,而未考慮詞頻和文檔長度。實驗結果也證明Robertson-Sparck Jones等式直接應用的效果並不好。所以學者們考慮在Robertson-Sparck Jones等式中加入代表詞頻和文檔長度的因子,重新計算文檔排序。這就是經典的BM25模型。

BM25模型爲文檔Di 每個索引項tj 分配了一個係數Bi,j ,由公式(8)計算生成:

(8)Bi,j=(K1+1)fi,jK1[(1b)+blen(Di)avg_doclen]+fi,j

其中,K1b 爲經驗參數,用於調節詞頻和文檔長度在權重計算中起到的作用,一般來講,K1 取1,b 取0.75已經被證明是合理的假設。而fi,j 則爲詞wj 在文檔Di 中的詞頻,avg_doclen 爲平均文檔長度。

計算得到了係數Bi,j ,就可以基於Robertson-Sparck Jones等式最終計算出文檔關於查詢的排序:

(18)sim(Dj,q)=tjqBi,j×log(rj+0.5)(|C0|nj+rj+0.5)(|C1|rj+0.5)(njrj+0.5)

如果不知道哪些文檔是相關的,那麼根據公式(7),還可以簡化上式:

(9)sim(Dj,q)=tiqBi,j×logNnj+0.5nj+0.5

這個公式(9),就是BM25模型最爲經典的計算公式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章