1. 程式人生 > >空間向量模型和tf-idf

空間向量模型和tf-idf

向量空間模型

向量空間模型是一個把文字檔案表示為識別符號(比如索引)向量的代數模型,它應用於資訊過濾、資訊檢索、索引以及相關排序。

1 定義

文件和查詢都用向量來表示:

1531909-0ceb7ffabe90d345.png

每一維都對應於一個個別的片語。如果某個片語出現在了文件中,那它在向量中的值就非零。已經發展出了不少的方法來計算這些值,這些值叫做(片語)權重。其中一種最為知名的方式是tf-idf權重(見下面的例子)。

片語的定義按不同應用而定。典型的片語就是一個單一的詞、關鍵詞、或者較長的短語。如果將詞語選為片語,那麼向量的維數就是詞彙表中的詞語個數(出現在語料庫中的不同詞語的個數)。

通過向量運算,可以對各文件和各查詢作比較。

2 應用

據文件相似度理論的假設,如要在一次關鍵詞查詢中計算各文件間的相關排序,只需比較每個文件向量和原先查詢向量(跟文件向量的型別是相同的)之間的角度偏差。
實際上,計算向量之間夾角的餘弦比直接計算夾角本身要簡單。

1531909-6bbadf264325efc3.png
其中d2▪q是文件向量(即圖中的d2)和查詢向量(圖中的q)的點乘。||d2||是向量d2的模,而||q||是向量q的模。

由於這個模型所考慮的所有向量都是每個元素嚴格非負的,因此如果餘弦值為零,則表示查詢向量和文件向量是正交的,即不符合(換句話說,就是檢索項在文件中沒有找到)。


1531909-aa7c4642f5cc0d52.png

3 範例:tf-idf權重

1531909-01df1bad91d334af.png

tf-idf

tf-idf(英語:term frequency–inverse document frequency)是一種用於資訊檢索與文字挖掘的常用加權技術。tf-idf是一種統計方法,用以評估一字詞對於一個檔案集或一個語料庫中的其中一份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。tf-idf加權的各種形式常被搜尋引擎應用,作為檔案與使用者查詢之間相關程度的度量或評級。除了tf-idf以外,網際網路上的搜尋引擎還會使用基於連結分析的評級方法,以確定檔案在搜尋結果中出現的順序。

1 原理

在一份給定的檔案裡,詞頻(term frequency,tf)指的是某一個給定的詞語在該檔案中出現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。(同一個詞語在長檔案裡可能會比短檔案有更高的詞數,而不管該詞語重要與否)對於在某一特定檔案裡的詞語ti來說,它的重要性可表示為:

1531909-2f833b6f4f21e05b.png

以上式子中ni,j是該詞在檔案dj中的出現次數,而分母是在檔案dj中所有字詞的出現次數之和。
逆向檔案頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到:

1531909-15ea80f51fd8f2b8.png

其中:

  • |D|:語料庫中的檔案總數
  • |{j:ti∈dj}|:包含詞語ti的檔案數目(即ni,j≠0的檔案數目)。如果該詞語不在語料庫中,就會導致分母為零,因此一般情況下使用1+|{j:ti∈dj}|,然後
    tfidfi,j=tf×idfi

某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,可以產生出高權重的tf-idf。因此,tf-idf傾向於過濾掉常見的詞語,保留重要的詞語。

2 例子

有很多不同的數學公式可以用來計算tf-idf。這邊的例子以上述的數學公式來計算。詞頻(tf)是一詞語出現的次數除以該檔案的總詞語數。假如一篇檔案的總詞語數是100個,而詞語“母牛”出現了3次,那麼“母牛”一詞在該檔案中的詞頻就是3/100=0.03。一個計算檔案頻率(DF)的方法是測定有多少份檔案出現過“母牛”一詞,然後除以檔案集裡包含的檔案總數。所以,如果“母牛”一詞在1,000份檔案出現過,而檔案總數是10,000,000份的話,其逆向檔案頻率就是log(10,000,000 / 1,000)=4。最後的tf-idf的分數為0.03 * 4=0.12。

3 在向量空間模型裡的應用

tf-idf權重計算方法經常會和餘弦相似性(cosine similarity)一同使用於向量空間模型中,用以判斷兩份檔案之間的相似性

參考維基百科