2011-06-06 104 views
24

感謝您給我的所有幫助。餘弦相似性和tf-idf

我剛剛得到了一個似乎困惑我的小問題。

TF-IDF和餘弦相似性。

我正在閱讀兩篇文章,然後在餘弦相似度下的wiki上我發現這個句子「在信息檢索的情況下,兩個文檔的餘弦相似度範圍從0到1,因爲術語頻率(tf-idf權重)不能爲負,兩個頻率向量之間的夾角不能大於90°。

現在我想知道....他們不是2種不同的東西嗎?

tf-idf已經在餘弦相似度內嗎?如果是的話,那到底是什麼?我只能看到內點產品和歐幾里德長度...

我認爲tf-idf是在文本上運行餘弦相似性之前可以做的事情。我錯過了什麼? O.o

+2

我發現了一個很棒的[博客](https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/)。它確實有幫助。 – divyum 2015-04-25 13:01:30

回答

28

Tf-idf是一種應用於文本以獲得兩個實值向量的轉換。然後,您可以通過獲取它們的點積並將其除以它們的規範的乘積來獲得任何一對矢量的餘弦相似度。這產生矢量之間角度的餘弦。

如果dq是TF-IDF載體,然後

enter image description here

其中θ是向量之間的角度。如從0到90度θ範圍,COS θ範圍從1到0 θ可以僅範圍從0到90度,因爲TF-IDF矢量都是非負的。

tf-idf和餘弦相似/矢量空間模型沒有特別深的聯繫; tf-idf對於文檔術語矩陣非常有效。不過,它在該域之外使用,原則上可以用VSM中的另一個轉換來替代。 (從Wikipedia取式,因此d 。)

+2

謝謝,我沒有錯:D很高興有你的問題回答這個速度,而不是等待學校^^ – N00programmer 2011-06-06 18:09:03

28

TF-IDF只是一種方法來衡量文本中的標記的重要性;它只是一種將文檔轉換爲數字列表的常用方法(術語矢量,它提供了獲得餘弦的角度的一個邊緣)。

要計算餘弦相似度,需要兩個文檔向量;矢量用索引表示每個唯一項,並且該索引處的值是衡量該項對文檔有多重要以及對文檔相似性的一般概念的一些度量。

你可以簡單地計算的時間每學期發生在文檔中(牛逼 ERM ˚F requency)的數量,並使用該整數結果在矢量術語得分,但結果不會很好。極其常見的術語(如「是」,「和」,「the」)會導致大量文檔看起來相似。 (這些特定的例子可以通過使用stopword list來處理,但其他常用術語不夠通用,不足以被視爲停用詞,這會導致同樣的問題。在Stackoverflow上,「question」這個詞可能屬於這個類別。分析烹飪食譜,你可能會遇到這個詞「蛋」的問題。)

TF-IDF考慮到調整原料詞頻每個學期一般(在d ocument f怎樣頻繁發生頻率)。 nverse d ocument ˚F requency通常是通過在(維基百科圖像)出現的術語的文檔的數量劃分的文檔的數量的對數:的

IDF, credit to wikipedia

認爲'日誌「作爲一個細微的細微差別,從長遠來看有助於事情的發展 - 它在爭論增長時會增長,所以如果這個詞很少,那麼以色列國防軍將會很高(很多文件被很少的文件分開),如果這個詞是常見的,IDF將會很低(大量文件被大量文件分成〜= 1)。假設你有100個食譜,除了一個以外,所有的食譜都需要雞蛋,現在你有三個以上的文檔都包含「雞蛋」這個單詞,一個在第一個文檔中,兩個在第二個文檔中,一個在第三個文檔中。每個文檔中「雞蛋」的頻率是1或2,文檔頻率是99(如果您計算新文檔,文檔頻率可以是102,我們堅持99)。

的 '蛋' 的TF-IDF是:

1 * log (100/99) = 0.01 # document 1 
2 * log (100/99) = 0.02 # document 2 
1 * log (100/99) = 0.01 # document 3 

這些都是比較小的數字;相反,我們來看看另一個詞,它只出現在你的100個配方語料庫中的9個:'芝麻菜'。它在第一個文檔中出現兩次,在第二個文檔中出現三次,而在第三個文檔中不出現。

的TF-IDF的 '芝麻' 是:

1 * log (100/9) = 2.40 # document 1 
2 * log (100/9) = 4.81 # document 2 
0 * log (100/9) = 0  # document 3 

'芝麻' 是文檔2 真的重要的,至少比 '蛋'。誰在乎雞蛋發生多少次?一切都包含雞蛋!這些術語向量比簡單的計數要多得多,並且它們將導致文檔更接近(關於文檔3),而不是如果使用簡單的術語計數。在這種情況下,可能會出現相同的結果(嘿!我們這裏只有兩個詞),但差別會更小。

這裏的結果是TF-IDF在文檔中生成了更有用的術語測量方法,因此您不會關注真正常見的術語(停用詞,「蛋」),也不會注意重要術語('芝麻菜')。

6

餘弦相似度完整的數學過程中這些教程

假設,如果你想計算兩個文檔之間的餘弦相似性,首先解釋步驟將是計算兩個文檔的tf-idf向量。然後找到這兩個向量的點積。這些教程將幫助你:)

-1

Tf-idf僅用於從基於tf - Term Frequency的文檔中查找矢量 - 用於查找文檔中出現多少次該術語以及反向文檔頻率 - 它給出了該術語在整個系列中出現的次數。

然後你可以找到文件之間的餘弦相似度。