向量空間模型(VSM:Vector space model)

向量空間模型(VSM:Vector space model)是最常用的相似度計算模型,在自然語言處理中有着廣泛的應用,這裏簡單介紹一下其在進行文檔間相似度計算時的原理。

假設共有十個詞:w1,w2,......,w10,而共有三篇文章,d1,d2和d3。統計所得的詞頻表(杜撰的,爲了便於演示用法)如下:

 

w1

w2

w3

w4

w5

w6

w7

w8

w9

w10

d1

1

2

 

5

 

7

 

9

 

 

d2

 

3

 

4

 

6

8

 

 

 

d3

10

 

11

 

12

 

 

13

14

15

常用的向量空間公式見下圖:

 

假設計算d1和d2的相似度,那麼ai和bi分別表示d1和d2中各個詞的詞頻,我們以Cosine爲例:

 

(得數請讀者自己計算,各個數代表什麼從上表中可以輕易看出)

爲什麼叫向量空間模型呢?其實我們可以把每個詞給看成一個維度,而詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構成了一個i維空間圖,兩個文檔的相似度就是兩個空間圖的接近度。假設文章只有兩維的話,那麼空間圖就可以畫在一個平面直角座標系當中,讀者可以假想兩篇只有兩個詞的文章畫圖進行理解。

我們看到,上面公式的計算量是很大的,尤其當文檔中詞數量巨大時。那麼怎麼樣來提高運算的效率呢?我們可以採取降維的方法。其實只要理解了向量空間模型原理,就不難理解降維的概念。所謂降維,就是降低維度。具體到文檔相似度計算,就是減少詞語的數量。常見的可用於降維的詞以功能詞和停用詞爲主(如:"的","這"等),事實上,採取降維的策略在很多情況下不僅可以提高效率,還可以提高精度。這也不難理解,比如下面兩句話(可能舉地不是特別恰當,見諒):

  1. 這是我的飯。
  2. 那是你的飯。

如果把"這"、"那"、"你"、"我"、"是"、"的"都當功能詞處理掉,那麼相似度就是100%。如果都不去掉,相似度可能只有60%。而這兩句話的主題顯示是一樣的。

倒排詞頻平滑(Inverse Document Frequency)方法,就是用整個語料中所有詞語的詞頻來調整某篇語料中詞語的權重,可以理解爲把某篇內詞語的頻率與全局詞頻相乘後再代入公式(因爲相似度是個相對值,所以只要保證它的值落在0和1之間即可)。

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

直接使用詞的個數在比較詞數很多和詞數很少的文檔時存在着問題。例如文檔I中含有10000個詞,而詞a出現了10次;文檔II中含有100個詞,而a出現了5次。這樣在相似度計算時,文檔Ia對最後結果的影響比文檔II中的a要大。這顯然是不合理的,因爲a只點文檔I0.1%而卻佔文檔II5%。爲了解決這類問題,我們引入詞頻(TF)和反詞頻(IDF)兩個概念。

發佈了16 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章