第六章 文檔評分、詞項權重計算及向量空間模型
在文檔集規模很大時,滿足布爾查詢結果的文檔數量可能非常多,往往會大大超過用戶能夠瀏覽的文檔的數目。對於給定的查詢,搜索引擎會計算每個匹配文檔的得分並排序。
6.1.參數化索引及域索引
之前,我們都是將文檔看成一系列詞項的序列。但實際上,文檔除了文本外還有元數據,比如創建時間、文檔標題,作者信息等,因此我們也可以對他進行限制;比如限制查詢文檔結果必須是2010年發表的;
參數化索引(parametric index):某個字段取值存在一定限制,如取值範圍的限制,日期,則爲參數化索引;
域索引:某個字段取值沒有任何限制,比如標題,可以是任意的自由文本;
1. 域加權評分
給定一系列文檔,假定每篇文檔有l個域,其對應的權重分別是
,且滿足
。
令 爲查詢和文檔的第i個域的匹配得分(1表示匹配上,0表示沒匹配上),則域加權評分方法定義爲: ,該方法有時也被稱爲排序式布爾檢索(ranked Boolean retrieval)。
例如,一個文檔集,每篇文檔都有三個域–author,title,body,三個域的權重係數分別爲 ,查詢shakespeare,出現shakespeare時得分爲1,否則爲0。如果shakespeare出現在某文檔的title和body域,則該文檔最後得分爲0.8。
2.權重學習
對於不同域的權重,可以從訓練數據學習得到。
6.2 詞項頻率及權重計算
自由文本查詢(參見第一章,沒有任何搜索連接符如布爾操作符),在Web上很流行,它將查詢看成多個詞組成的集合。先對於每個詞項計算它與文檔的匹配得分,然後將所有查詢詞項的得分求和。
這樣,我們對文檔中每個詞項都賦予了一個權重。最簡單的,可以將權重設置爲詞項頻率。
詞項頻率(term frequency):詞項t在文檔d中的出現次數,記爲 。
詞袋模型(bag of words model):忽略文檔在文檔中的出現次序,只關心出現的次數。詞袋模型下,文檔Mary is quicker than John和John is quicker than Mary是等價的。
只考慮詞項頻率有一個嚴重的問題,即在和查詢進行相關度計算時,所有的詞項都被認爲是同等重要的。實際上,有些詞項對相關度計算基本沒有區分能力,如停用詞the等。需要將出現次數較多的詞項賦予較低的權重,常用的因子是文檔頻率。
文檔頻率:出現t的所有文檔的數目,記爲 。
逆文檔頻率:假定所有文檔的總數爲N,詞項t的 idf(逆文檔頻率) 定義如下:
。
tf-idf權重:對每篇文檔每個詞項,將其tf和idf組合起來形成最終的權重,即文檔d中詞項t的權重如下: 。
我們可以將每個文檔看成是一個向量(vector),其中每個分量都對應詞典中的一個詞項,分量值爲計算出的tf-idf權重。當某個詞項在文檔中沒有出現時,其對應的分量值爲0。這種向量形式對於評分和排序十分重要。
6.3 向量空間模型
在文檔向量中,每個分量代表詞項在文檔中的相對重要性。一系列文檔在同一向量空間中的表示被稱爲向量空間模型(vector space model,簡稱VSM)。
1. 兩篇文檔的相似性計算
假設文檔d對應的向量用 表示,其中每個分量對應一個詞項,向量分量可以用tf或tf-idf等權重計算方式。注意,在詞袋模型下,文檔Mary is quicker than John和John is quicker than Mary是等價的。
計算兩篇文檔 的相似度的常用方法是用餘弦相似度:
上式除以分母的效果實際上相當於將向量 進行長度歸一化,因此,其也可以重寫成:
其中, 是相應的單位向量。
2. 查詢向量
也可以將查詢表示成向量,記爲。可以通過計算給定的查詢向量和每個文檔向量的相似度來對所有文檔進行排名,
因此,整個檢索過程就是:計算查詢向量和文檔集中每個文檔向量的餘弦相似度,結果按照得分排序,並返回得分最高的K篇文檔。然而,這個過程的代價很大,因爲每次相似度計算都是數萬維向量之間的內積計算。
3. 其他tf-idf權重計算方法
每篇文檔每個詞項權重計算方法可以用很多方式計算,如:
- tf
- tf-idf
tf的亞線性尺度變換方法:
即使一個詞項在文檔中出現20次,它所攜帶信息的重要性也不可能是隻出現1次的詞項的20倍。一個常用修改是採用原始詞項頻率的對數函數,此時權重計算方法如下:
得到:- 基於最大值的tf歸一化:
採用文檔d中最大的詞項頻率對所有詞項進行歸一化。
阻尼係數a是0到1之間的數,通常取0.4。a主要起平滑作用。
長文檔中詞項頻率一般更大,這顯然是不公平的,最大化tf歸一化方法可以減輕這種不公平性。