天天看點

BM25算法 [轉]

BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of the inter-relationship between the query terms within a document (e.g., their relative proximity). It is not a single function, but actually a whole family of scoring functions, with slightly different components and parameters. One of the most prominent instantiations of the function is as follows.

BM25算法,通常用來作搜尋相關性平分。一句話概況其主要思想:對Query進行語素解析,生成語素qi;然後,對于每個搜尋結果D,計算每個語素qi與D的相關性得分,最後,将qi相對于D的相關性得分進行權重求和,進而得到Query與D的相關性得分。

BM25算法的一般性公式如下:

BM25算法 [轉]

其中,Q表示Query,qi表示Q解析之後的一個語素(對中文而言,我們可以把對Query的分詞作為語素分析,每個詞看成語素qi。);d表示一個搜尋結果文檔;Wi表示語素qi的權重;R(qi,d)表示語素qi與文檔d的相關性得分。

下面我們來看如何定義Wi。判斷一個詞與一個文檔的相關性的權重,方法有多種,較常用的是IDF。這裡以IDF為例,公式如下:

BM25算法 [轉]

其中,N為索引中的全部文檔數,n(qi)為包含了qi的文檔數。

根據IDF的定義可以看出,對于給定的文檔集合,包含了qi的文檔數越多,qi的權重則越低。也就是說,當很多文檔都包含了qi時,qi的區分度就不高,是以使用qi來判斷相關性時的重要度就較低。

我們再來看語素qi與文檔d的相關性得分R(qi,d)。首先來看BM25中相關性得分的一般形式:

BM25算法 [轉]

其中,k1,k2,b為調節因子,通常根據經驗設定,一般k1=2,b=0.75;fi為qi在d中的出現頻率,qfi為qi在Query中的出現頻率。dl為文檔d的長度,avgdl為所有文檔的平均長度。由于絕大部分情況下,qi在Query中隻會出現一次,即qfi=1,是以公式可以簡化為:

BM25算法 [轉]

從K的定義中可以看到,參數b的作用是調整文檔長度對相關性影響的大小。b越大,文檔長度的對相關性得分的影響越大,反之越小。而文檔的相對長度越長,K值将越大,則相關性得分會越小。這可以了解為,當文檔較長時,包含qi的機會越大,是以,同等fi的情況下,長文檔與qi的相關性應該比短文檔與qi的相關性弱。

綜上,BM25算法的相關性得分公式可總結為:

BM25算法 [轉]

從BM25的公式可以看到,通過使用不同的語素分析方法、語素權重判定方法,以及語素與文檔的相關性判定方法,我們可以衍生出不同的搜尋相關性得分計算方法,這就為我們設計算法提供了較大的靈活性。

http://blog.163.com/[email protected]/blog/static/140808374201271424536967/

繼續閱讀