TF-IDF只是一種方法來衡量文本中的標記的重要性;它只是一種將文檔轉換爲數字列表的常用方法(術語矢量,它提供了獲得餘弦的角度的一個邊緣)。
要計算餘弦相似度,需要兩個文檔向量;矢量用索引表示每個唯一項,並且該索引處的值是衡量該項對文檔有多重要以及對文檔相似性的一般概念的一些度量。
你可以簡單地計算的時間每學期發生在文檔中(牛逼 ERM ˚F requency)的數量,並使用該整數結果在矢量術語得分,但結果不會很好。極其常見的術語(如「是」,「和」,「the」)會導致大量文檔看起來相似。 (這些特定的例子可以通過使用stopword list來處理,但其他常用術語不夠通用,不足以被視爲停用詞,這會導致同樣的問題。在Stackoverflow上,「question」這個詞可能屬於這個類別。分析烹飪食譜,你可能會遇到這個詞「蛋」的問題。)
TF-IDF考慮到調整原料詞頻每個學期一般(在d ocument f怎樣頻繁發生頻率)。 我 nverse d ocument ˚F requency通常是通過在(維基百科圖像)出現的術語的文檔的數量劃分的文檔的數量的對數:的
認爲'日誌「作爲一個細微的細微差別,從長遠來看有助於事情的發展 - 它在爭論增長時會增長,所以如果這個詞很少,那麼以色列國防軍將會很高(很多文件被很少的文件分開),如果這個詞是常見的,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在文檔中生成了更有用的術語測量方法,因此您不會關注真正常見的術語(停用詞,「蛋」),也不會注意重要術語('芝麻菜')。
我發現了一個很棒的[博客](https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/)。它確實有幫助。 – divyum 2015-04-25 13:01:30