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

2021-07-29 22:21:51 字數 1702 閱讀 8710

使用者輸入乙個查詢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的權重可定為:wt

=tf∗

log(

tota

ldoc

df)

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

將文件和query中term的並集看成是n維空間,每個term是一維。

將文件中term的權重看成乙個n維向量,不存在的term看成權重為0。

同樣將query看成是n維空間,每個term是一維。

同樣將query的term的權重看成乙個n維向量,不存在的term看成權重為0。

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

m(q,

d)=q

⋅d∥q

∥×∥d

∥=∑n

i=1w

i,qw

i,d∑

ni=1

w2i,

q√∑n

i=1w

2i,d

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

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

ore(

q,d)

=∑ni

=1wi

,qwi

,d∑n

i=1w

2i,q

√∑ni

=1w2

i,d√

×boo

st

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

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

=tf∗

log(

tota

ldoc

df)∗

1tot

alte

rm√

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

*****===廣告時間*****===

鄙人的新書《tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以購買。感謝各位朋友。

為什麼寫《tomcat核心設計剖析》

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

使用者輸入乙個查詢query,query由若干詞 term 組成,文件也由若干詞 term 組成。那麼怎麼評判查詢和文件的相關性的高低。很樸素簡單的想法就是文件中包含的term與查詢query中包含的term,兩者越多相同的則說明越相關。比如query為 animal cat 文件一內容為 cat ...

Mysql 組合查詢 全文本搜尋

1.使用情況 1.單個表中的多條查詢 2.單個查詢從不同的表返回類似的結構資料 2.語法 select id,price form products where price 5 union select id,price form products where id in 1,2 3.union的使...

全文搜尋與倒排索引

全文搜尋是指計算機搜尋程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞在文中出現的次數和位置,當使用者查詢時,搜尋程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者。這個過程類似於通過字典中的搜尋字表查字的過程,lucene是目前全球使用最廣的全文搜尋引擎開源庫。倒排索引源於...