tft
,d,意為詞項t在文件d中出現的次數。
這種忽略詞項在文件中的次序關係,將文件看作詞項的集合的模型,稱為詞袋模型(bag of words model)。
使用詞項頻率作為權重有乙個嚴重缺陷,它無區別地對每乙個詞項計算權重,而事實上,文件中兩個詞頻相同的詞極有可能具有不一樣的重要性(亦即權重)。例如,在乙個人的日記文件集查詢「我 and 小貓」,像上面所說得簡單地通過詞頻來計算權重的話,統計每一篇日記中「我」出現的頻率(tf
我 )和「小貓」出現的頻率(tf
小貓),然後把這兩個權重相加得到每一篇日記的權重得分,得分越高的日記被認為與查詢越有關聯。然而,不可忽略的事實是,大量的日記中都會出現「我」,而「小貓」則比較少見。這說明「小貓」會比「我」更有區分度。如果一篇日記中出現了三次「我」的話,即使這篇日記乙個「小貓」都沒有,也會因為「我」的詞頻得分高而排在出現了一次「我」和一次「小貓」的日記前面。由於詞項「我」在大量文件中出現,會導致最終搜尋返回的文件中,排在前面的都是僅僅包含多個「我」的日記文件,而包含「小貓」的文件則淹沒在這數不清的「我」的文件中了。
為此,需要一種機制來降低這些在大量文件中都出現的詞項在查詢得分計算中的重要性。也就是說,文件頻率(document frequency, 出現詞項t的文件數目)較高的詞項(導致區分度較低)給予較低的權重,反之,文件集頻率較低的詞項(由於區分度較高)給予較高的權重。那麼乙個合理的詞項t的權重公式為nd
ft,其中
n 為所有文件的數量,df
t為詞項t的文件頻率(document frequency)。由於nd
ft的數值往往比較大,通常會用取對數的方法把它對映到乙個較小的取值範圍內。最後,我們得到的詞項t的idf(inverse document frequency, 逆文件頻率)的定義如下: id
ft=lognd
ft結合tf(詞項頻率)和idf(逆文件頻率),文件d中詞項t的權重得分為: tf
-idf
t,d=
tft,
d×id
ft那麼,對於查詢q,文件d的得分為每個查詢詞(t∈
q )在文件中的得分之和: sc
ore(
q,d)
=∑t∈
qtf-
idft
,d我們可以把文件看作乙個向量(vector),假設這個向量有
m 維,把它表示為 v⃗
(d)=
[w1,
w2,⋯
,wm]
,這個向量的每個分量wi
對應詞典中的乙個詞項的權重得分,這個權重得分通過tf
-idf
t,d=
tft,
d×id
ft來計算。當某詞項在文件中沒有出現時,其對應的分量值為0。
假設文件d對應的向量用v⃗
(d) 表示,每個分量對應乙個詞項的權重得分(如tf-idf)。為了修正文件長度給相似度計算帶來的影響,採用余弦相似度來評估文件d1
和d2 的相似度: si
m(d1
,d2)
=v⃗ (
d1)⋅
v⃗ (d
2)|v
⃗ (d1
)||v
⃗ (d2
)|通過余弦相似度,我們可以判斷兩篇文件的近似程度了,搜尋引擎可以根據這個給出與使用者當前瀏覽的文件相似的文件,這個在**或專利搜尋系統中特別常見。
我們分析余弦相似度的計算公式: si
m(d1
,d2)
=v⃗ (
d1)⋅
v⃗ (d
2)|v
⃗ (d1
)||v
⃗ (d2
)|=v
⃗ (d1
)|v⃗
(d1)
|⋅v⃗
(d1)
|v⃗ (
d1)|
分母|v
⃗ (d1
)| 和|
v⃗ (d
2)| 的效果實際上是對向量v⃗
(d1)
和v⃗ (
d2) 的長度進行歸一化,從而得到兩個文件向量對應的單位向量:v⃗
(d1)
=v⃗ (
d1)|
v⃗ (d
1)| ,
v⃗ (d
2)=v
⃗ (d2
)|v⃗
(d2)
| 。用單位向量的形式,我們把上面計算余弦相似度的公式重寫為: si
m(d1
,d2)
=v⃗ (
d1)⋅
v⃗ (d
2)使用者輸入的查詢也可以表示為向量。查詢向量對應的查詢詞qi
分量的計算過程如下: v⃗
i(q)
=tfq
i∑mi
=0tf
2qi
考慮查詢q=「cat dog」。我們將查詢語句也看作一篇文件,長度為2,只有兩個詞(cat和dog,記為q1
和q2 ),分別都只出現一次,那麼可以查詢向量計算公式將該查詢轉化為單位向量。因為詞典中其他詞都沒有在查詢中出現,tf為0,對公式計算沒有影響,因此不必考慮未出現在查詢中的詞項。 v⃗
q1(q
)=v⃗
q2(q
)=tf
q1∑m
i=0t
f2qi
−−−−
−−−√
=tfq
1tf2
q1+t
f2q2
−−−−
−−−−
√=11
2+12
−−−−
−−√=
2√2
查詢q與文件d的余弦相似度計算: si
m(q,
d)=s
core
(q,d
)=v⃗
(q)⋅
v⃗ (d
)|v⃗
(q)|
|v⃗ (
d)|=
v⃗ (q
)⋅v⃗
(d)
對於給定的查詢,通過計算查詢向量與文件向量的余弦相似度來對所有文件進行相似度打分、排名,進而從結果中選擇排名靠前的一些文件展示給使用者。
向量空間模型
向量空間模型 vsm vector space model 是最常用的相似度計算模型,在自然語言處理中有著廣泛的應用,這裡簡單介紹一下其在進行文件間相似度計算時的原理。假設共有十個詞 w1,w2,w10,而共有三篇文章,d1,d2和d3。統計所得的詞頻表 杜撰的,為了便於演示用法 如下 w1 w2 ...
改進向量空間模型
宣告 只是對向量空間模型的介紹 或者叫推廣 並沒有理論創新工作。本人在之前的 向量空間模型 vsm 在文件相似度計算上的簡單介紹 和 向量空間模型文件相似度計算實現 c 兩篇文章中分別介紹了簡單 svm模型及其實現。本人使用簡單詞頻 即詞在當前文件中出現的次數 資訊,實現了乙個樸素版本的向量空間模型...
改進向量空間模型
宣告 只是對向量空間模型的介紹 或者叫推廣 並沒有理論創新工作。本人在之前的 向量空間模型 vsm 在文件相似度計算上的簡單介紹 和 向量空間模型文件相似度計算實現 c 兩篇文章中分別介紹了簡單 svm模型及其實現。本人使用簡單詞頻 即詞在當前文件中出現的次數 資訊,實現了乙個樸素版本的向量空間模型...