1. 程式人生 > >lucene排序演算法之向量空間模型(二)

lucene排序演算法之向量空間模型(二)

開發十年,就只剩下這套架構體系了! >>>   

 lucene排序演算法之向量空間模型(一)中說明了採用餘弦距離而不是歐式距離來度量查詢向量與文件向量相似度的原因,本文主要推導lucene中文件相似度公式:

1、令查詢向量,文件向量;

2、

3、由於使用者在輸入查詢串時,一般不會輸入相同的查詢詞,因此簡單設定;  

   

;需要注意的是隻有當詞都存在於q和d中wn*Wn才不為0。

4、查詢向量長度,可能大家會認為由於評分時需要比較的是查詢向量與文件向量的相似度,查詢向量的長度對於所有文件的相似度而言是相同的,因此實際中就可以捨去,但實際並沒有捨去;

5、對於文件向量長度,lucene並沒有採用標準的公式即:|d|=開根號(W1*W1+...+Wn*Wn),而是設定成預設的開根號(詞的個數)

6、文件得分score=,實際上當|d|不是標準公式的時候,最終的得分也就不是兩個向量的餘弦了,因此該公式要換個角度去理解,score=,變成標準的單位查詢向量q和非標準的文件向量d的乘積,也就是文件向量d在單位查詢向量q的投影長度,這樣說明lucene實際上並沒有把餘弦距離當作相似度量,單位查詢向量實際上指明瞭查詢的方向,哪個文件向量在查詢向量上的投影長度越長說明就越相似。餘弦距離實際是兩個單位向量間的乘積,lucene的官方文件中也說明了這一點,我們也可以看成是其中一個單位向量在另一個單位向量上的投影長度,

不知lucene官方是否這樣定義得分公式的,但個人認為能夠解釋得通

注意:這裡不是lucene的最終公式,因為還沒有考慮各項自定義的權重問題,以及文件向量|d|的實際取值問題,最終公式下一