NLP 如何理解TF IDF?

2021-09-26 18:24:05 字數 3458 閱讀 3188

tf-idf(term frequency–inverse document frequency)是一種統計方法,用來衡量字詞對於文字的重要程度。字詞的重要性隨著它在當前文字**現的頻率成正比,隨著它在語料庫中其他文字**現的頻率成反比,因此td-idf也經常被用來提取文字的特徵。

本文主要講解什麼是tf-idf以及tf-idf提取詞向量的實現過程。

tf * idf=\frac *log\frac

$$

tf顧名思義就是詞頻,即

tf=

某詞wi

在文字d

i中出現

的次數文

本di中

出現的詞

數tf =\frac

tf=文字d

i​**

現的詞數

某詞wi

​在文字

di​中

出現的次

數​

表示某詞在乙個文字**現的頻率,一般而言,某詞在文字**現的頻率越高,那麼可以認為該詞對於文字的重要程度比較高(當然,類似於啊/了/的之類的停用詞不算,本次討論的詞中假設已經去除了停用詞),比如在本篇文章中反覆提到tf,那麼可以直觀的認可tf對於本文的重要性。但是…但是…請考慮如下場景:

有三個文字d1、

d2、d

3d_1、d_2、d_3

d1​、d2

​、d3

​構成乙個語料庫d

dd,需要提取每乙個文字的特徵,假設

w1、

w2經常

在d1中

出現

w1、w2經常在d_1**現

w1、w2經

常在d1

​**現

w 1、

w3經常

在d2中

出現

w1、w3經常在d_2**現

w1、w3經

常在d2

​**現

w 3、

w4經常

在d3中

出現

w3、w4經常在d_3**現

w3、w4經

常在d3

​**現

按照tf的理論:

w1、

w2對於

d1比較

重要

w1、w2對於d_1比較重要

w1、w2對

於d1​

比較重要

w 1、

w3對於

d2比較

重要

w1、w3對於d_2比較重要

w1、w3對

於d2​

比較重要

w 3、

w4對於

d3比較

重要

w3、w4對於d_3比較重要

w3、w4對

於d3​

比較重要

那麼問題來了 w2只

對d1比

較重要,

也就是w

2具有唯

一性,可

以較好的

作為d1

的特徵,

w2只對d_1比較重要,也就是w_2具有唯一性,可以較好的作為d_1的特徵,

w2只對d1

​比較重

要,也就

是w2​

具有唯一

性,可以

較好的作

為d1​

的特徵,

而 w2

對d1和

d2都比

較重要,

都可以作

為d1和

d2的特

徵,即沒

有體現其

特別之處

而w_2對d_1和d_2都比較重要,都可以作為d_1和d_2的特徵,即沒有體現其特別之處

而w2​對d

1​和d

2​都比

較重要,

都可以作

為d1​

和d2​

的特徵,

即沒有體

現其特別

之處,那這樣w2w2

w2還能作為特徵詞嗎?能!那如何處理這種腳踏兩隻船的情況呢?權重!沒毛病,就是權重,也就是下文的idf。

idf((inverse document frequency),叫做逆文件頻率,用來衡量詞在語料庫中的常見程度。通俗的來講,就是衡量詞在語料庫中的權重,比如上文提到腳踏兩隻船的傢伙,權重就可以少一點,更為甚者,就更少一點,反之,如果一夫一妻的,作為嘉獎,給予最大權重,算是滿分。下面亮出公式:

idf

=log

語料庫的

所有文件

數包含某

詞wi的

文件數+

1idf=log\frac

idf=lo

g包含某

詞wi​

的文件數

+1語料

庫的所有

文件數​

如果乙個詞在本文**現,在其他文中也出現,那麼它的權重就會隨著其他文**現的次數增加而降低

做乙個平滑處理,防止包含某詞的文件數為0,數學中分母為0是不允許的

關於這個問題idf的提出者沒有給出理論的解釋,有點小尷尬。從資訊理論的角度解釋,這裡有篇文章可以參考

以tf-idf方式提取詞向量

from sklearn.feature_extraction.text import tfidfvectorizer

corpus =

['我們 去 唱歌'

,'我們 去 爬山'

,'小名 喜歡 打球'

]tfidf_vector = tfidfvectorizer(

)x = tfidf_vector.fit_transform(corpus)

print

(x.toarray())

'''[[0.79596054 0. 0. 0.60534851 0. 0. ]

[0. 0. 0. 0.60534851 0. 0.79596054]

[0. 0.57735027 0.57735027 0. 0.57735027 0. ]]

'''

NLP之tfidf作詞向量

from sklearn.feature extraction.text import tfidfvectorizer def cutword con1 jieba.cut 今天很殘酷,明天更殘酷,後天很美好,但絕對大部分是死在明天晚上,所以每個人不要放棄今天。con2 jieba.cut 我們看到...

TF IDF的簡單理解

1 tf idf簡介 tf term frequency 詞頻,指的是給定乙個詞在該文件 現的次數 idf inverse document frequency 逆文件頻率 可以簡單的理解成 乙個詞語在一篇文章 現的次數越多,同時在其他的所有文件 現的次數越少,越能夠代表該文章 2 tf idf計算...

生動理解TF IDF演算法

tf idf有兩層意思,一層是 詞頻 term frequency,縮寫為tf 另一層是 逆文件頻率 inverse document frequency,縮寫為idf 假設我們現在有一片長文叫做 量化系統架構設計 詞頻高在文章中往往是停用詞,的 是 了 等,這些在文件中最常見但對結果毫無幫助 需要...