全文搜尋怎麼給查詢語句與文件相關性打分

超人汪小建發表於2017-04-01

樸素想法

使用者輸入一個查詢query,query由若干詞(term)組成,文件也由若干詞(term)組成。那麼怎麼評判查詢和文件的相關性的高低。

很樸素簡單的想法就是文件中包含的term與查詢query中包含的term,兩者越多相同的則說明越相關。比如query為"animal cat",文件一內容為"cat dog bird animal",文件二內容為"cat dog bird tiger",則認為query與文件二的相關性比文件一的高。

詞權重

現在缺少詞權重,比如一個文件中cat出現次數為2,而dog次數為1,那麼cat的權重應該高一些。比如cat在10個文件出現和在1個文件出現也有不同的權重。

一般來說,可以由兩方面來影響某文件某term的權重:

  1. 該文件詞頻(term frequency):該文件出現該term的次數,tf越大說明越重要。
  2. 文件詞頻(document frequency):包含該term的文件數,df越大說明越不重要,說明它更大眾。

於是某個term的權重可定為:

全文搜尋怎麼給查詢語句與文件相關性打分

VSM

向量空間模型(VSM)是一個計算倆文字相似性的經典演算法。

  1. 將文件和query中term的並集看成是n維空間,每個term是一維。
  2. 將文件中term的權重看成一個n維向量,不存在的term看成權重為0。
  3. 同樣將query看成是n維空間,每個term是一維。
  4. 同樣將query的term的權重看成一個n維向量,不存在的term看成權重為0。

文件權重向量和query權重向量之間的夾角越小則認為相關性越大。於是,

全文搜尋怎麼給查詢語句與文件相關性打分

干擾項

  • 表單符號,一般標點符號沒有價值,去掉。
  • 停詞,停詞沒有特別的意義,一般不能成為搜尋的關鍵詞,比如"the","that","this"等。

去掉這些干擾項可以讓VSM降維,提升計算效率和準確度。

文件權重

對於某些文件可能相對重要點,有些文件沒這麼重要,這時需要額外的權重來表示。於是相關性得分,

全文搜尋怎麼給查詢語句與文件相關性打分

比如文件一的權重設為1.1,文件二的權重設為1.0,則通過這個權重係數可以向整體分數表達出來。

標準化

前面計算詞權重時存在一個問題,文件出現某term次數越多則說明它的權重越大,那麼是不是可以說一個包含了1000個term的文件出現了2次cat,就比一個包含了10個term的文件出現了1次cat權重大?於是需要引入標準化來解決這個問題,

全文搜尋怎麼給查詢語句與文件相關性打分

通過標準化後減少了文件長度的影響。

歡迎關注:

全文搜尋怎麼給查詢語句與文件相關性打分
這裡寫圖片描述

相關文章