從詞袋到 tf-idf

複習一下文本處理的一些基本概念。

詞袋:Bag-of-words,基於單詞數量統計的 最簡單的文本特徵表示方法。對於文本數據,詞袋可以理解爲單詞數量的統計列表。

文本“it is a puppy and it is extremely cute”具有下圖中的詞袋錶示。原始文本是一個單詞序列,但詞袋中沒有任何序列,它只記錄每個單詞在文本中出現的次數。

n元詞袋:(bag-of-n-grams)是詞袋的一種自然擴展。n-gram(n 元詞)是由 n 個標記 (token)組成的序列。n-gram 能夠更多地保留文本中的初始序列結構。

1-gram 就是一個單詞(word),又稱爲一元詞(unigram)。經過 分詞(tokenization)之後,計數機制會將單獨標記轉換爲單詞計數,或將有重疊的序列 作爲 n-gram 進行計數。例如,句子“Emma knocked on the door”會生成 n-gram“Emma knocked”“knocked on”“on the”和“the door”。

tf-idf:在詞袋方法基礎上的一種簡單擴展,它表示詞頻 - 逆文檔頻率。

bow(w, d) = 單詞 w 在文檔 d 中出現的次數
tf-idf(w, d) = bow(w, d) * N / ( 單詞 w 出現在其中的文檔數量 )

N 是數據集中的文檔總數。分數 N / ( 單詞 w 出現在其中的文檔的數量 ) 就是所謂的逆文檔 頻率。如果一個單詞出現在很多文檔中,那麼它的逆文檔頻率就接近於 1。如果一個單詞 只出現在少數幾個文檔中,那麼它的逆文檔頻率就會高得多。

如果將 tf-idf 定義爲:
tf-idf(w, d) = bow(w, d) * log(N / 單詞 w 出現在其中的文檔數量 )

那麼就可以有效地將一個幾乎出現在所有單個文檔中的單詞的計數歸零,而一個只出現在 少數幾個文檔中的單詞的計數將會被放大。

 

 

 

參考:《精通特徵工程》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章