TF-IDF
TF-IDF是什麼
TF-IDF為Term Frequency-Inverse Document Frequency的縮寫。
所以TF-IDF用來做什麼
顧名思義,他是用來計算一個詞在一整組文件中所出現的頻率,而計算詞頻可以進一步用來反映對於某份文件而言,哪些關鍵字是比較重要的(這裡的預設是,一個詞越常出現,它在文件中就越重要)。而TF-IDF加強版的算法。但什麼叫加強版?對哪種普通版本的加強?
先說普通版本的詞頻計算
最直接計算詞頻的方式,就是用一詞在所有文件中出現的次數,去除以所有文件的詞彙量總和。這樣的想法當然達成了計算該詞在所有文件裡出現頻率的目的。到這裡我們完成的是TF-IDF的前半部——詞頻(Term Frequency)沒錯。
可是卻沒有考量到不同詞的特性
雖然可以用程式去跑一整組文件裡每個詞的在所有文件中的出現頻率,但這樣的做法忽略了一個事實:有些常用詞幾乎會在所有文件中大量出現,像是「這個」、「的」…等,所以這幾個常用詞的TF會非常高。如此一來便不能用來反映屬於每份文件中最具特色的詞是什麼。
所以要想個方法可以降低常用詞詞頻的干擾
這時候我們就要想辦法利用加權的方式,讓一些常用詞的權數小一點,讓一些真正特殊的詞的權重高一點,才能算出對我們有意義的結果。
但我們要怎麼知道哪些詞是常用詞、哪些不是?第一種做法是先去找出一張中文常用詞列表就完成了。但這個做法是靜態的,一切都是那張列表說了算,無法反映我們手頭上文件的真實狀況。
因此這時有了第二種做法,要求出在我們手上的文件中哪些是常用詞,可以用「手上的文件中有該詞出現的文件總數」除以「手上的文件總數」,像是「的」這個詞,我想幾乎所有的文件都會出現這個詞,因此用「手上的文件中有『的』出現的文件總數」除以「手上的文件總數」,應該會趨近於1。
還記得我們的目的嗎?我們想要降低「的」這個超級常用詞的權數,所以我們把它倒過來(所以叫做Inverse),作為權數,去乘上前面已經算好的TF,就完成了TF-IDF的計算。