向量空間模型(vsm:vector space model)是最常用的相似度計算模型,在自然語言處理中有著廣泛的應用,這裡簡單介紹一下其在進行文件間相似度計算時的原理。
假設共有十個詞:w1,w2,......,w10,而共有三篇文章,d1,d2和d3。統計所得的詞頻表(杜撰的,為了便於演示用法)如下:w1
w2 w3
w4 w5
w6 w7
w8 w9
w10 d1
d2 d3
常用的向量空間公式見下圖:
假設計算d1和d2的相似度,那麼ai和bi分別表示d1和d2中各個詞的詞頻,我們以cosine為例:
(得數請讀者自己計算,各個數代表什麼從上表中可以輕易看出)
為什麼叫向量空間模型呢?其實我們可以把每個詞給看成乙個維度,而詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構成了乙個i維空間圖,兩個文件的相似度就是兩個空間圖的接近度。假設文章只有兩維的話,那麼空間圖就可以畫在乙個平面直角座標系當中,讀者可以假想兩篇只有兩個詞的文章畫圖進行理解。
我們看到,上面公式的計算量是很大的,尤其當文件中詞數量巨大時。那麼怎麼樣來提高運算的效率呢?我們可以採取降維的方法。其實只要理解了向量空間模型原理,就不難理解降維的概念。所謂降維,就是降低維度。具體到文件相似度計算,就是減少詞語的數量。常見的可用於降維的詞以功能詞和停用詞為主(如:"的","這"等),事實上,採取降維的策略在很多情況下不僅可以提高效率,還可以提高精度。這也不難理解,比如下面兩句話(可能舉地不是特別恰當,見諒):
這是我的飯。
那是你的飯。
如果把"這"、"那"、"你"、"我"、"是"、"的"都當功能詞處理掉,那麼相似度就是100%。如果都不去掉,相似度可能只有60%。而這兩句話的主題顯示是一樣的。
倒排詞頻平滑(inverse document frequency)方法,就是用整個語料中所有詞語的詞頻來調整某篇語料中詞語的權重,可以理解為把某篇內詞語的頻率與全域性詞頻相乘後再代入公式(因為相似度是個相對值,所以只要保證它的值落在0和1之間即可)。
向量空間模型
tft d,意為詞項t在文件d中出現的次數。這種忽略詞項在文件中的次序關係,將文件看作詞項的集合的模型,稱為詞袋模型 bag of words model 使用詞項頻率作為權重有乙個嚴重缺陷,它無區別地對每乙個詞項計算權重,而事實上,文件中兩個詞頻相同的詞極有可能具有不一樣的重要性 亦即權重 例如,...
改進向量空間模型
宣告 只是對向量空間模型的介紹 或者叫推廣 並沒有理論創新工作。本人在之前的 向量空間模型 vsm 在文件相似度計算上的簡單介紹 和 向量空間模型文件相似度計算實現 c 兩篇文章中分別介紹了簡單 svm模型及其實現。本人使用簡單詞頻 即詞在當前文件中出現的次數 資訊,實現了乙個樸素版本的向量空間模型...
改進向量空間模型
宣告 只是對向量空間模型的介紹 或者叫推廣 並沒有理論創新工作。本人在之前的 向量空間模型 vsm 在文件相似度計算上的簡單介紹 和 向量空間模型文件相似度計算實現 c 兩篇文章中分別介紹了簡單 svm模型及其實現。本人使用簡單詞頻 即詞在當前文件中出現的次數 資訊,實現了乙個樸素版本的向量空間模型...