TF IDF原理與實踐

2021-10-02 20:21:09 字數 2417 閱讀 5480

在資訊檢索中,tf-idf(詞頻-逆文件頻率)是一種統計方法,用以評估乙個單詞在乙個文件集合或語料庫中的重要程度。經常被用作資訊檢索、文字挖掘以及使用者模型的權重因素。tf-idf的值會隨著單詞在文件**現的次數的增加而增大,也會隨著單詞在語料庫**現的次數的增多而減小。tf-idf是如今最流行的詞頻加權方案之一。

tf-idf的各種改進版本經常被搜尋引擎用作在給定使用者查詢時對文件的相關性進行評分和排序的主要工具。tf-idf可以成功地用於各種主題欄位的停用詞過濾,包括文字摘要和分類。

tf-idf實際上是:tf * idf。主要思想是:如果某個詞或短語在一篇文章**現的頻率高(即tf高),並且在其他文章中很少出現(即idf高),則認為此詞或者短語具有很好的類別區分能力,適合用來分類。

通俗理解tf-idf就是:tf刻畫了詞語t對某篇文件的重要性,idf刻畫了詞語t對整個文件集的重要性。

tf(term frequency,詞頻)表示乙個給定詞語t在一篇給定文件d**現的頻率。tf越高,則詞語t對文件d來說越重要,tf越低,則詞語t對文件d來說越不重要。那是否可以以tf作為文字相似度評價標準呢?答案是不行的,舉個例子,常用的中文詞語如「我」,「了」,「是」等,在給定的一篇中文文件**現的頻率是很高的,但這些中文詞幾乎在每篇文件中都具有非常高的詞頻,如果以tf作為文字相似度評價標準,那麼幾乎每篇文件都能被命中。

對於在某一文件 dj 裡的詞語 ti 來說,ti 的詞頻可表示為:

其中 ni,j 是詞語 ti 在文件 dj 中的出現次數,分母則是在檔案 dj 中所有詞語的出現次數之和。

注意,這裡除了文件總詞數作為分母,只是做了乙個標準化,因為有的文章長,有的文章短,出現100次的不一定算多,出現3次的不一定就少。有時候也用其他作為分母進行標準化。

idf(inverse document frequency,逆向檔案頻率)的主要思想是:如果包含詞語t的文件越少,則idf越大,說明詞語t在整個文件集層面上具有很好的類別區分能力。idf說明了什麼問題呢?還是舉個例子,常用的中文詞語如「我」,「了」,「是」等在每篇文件中幾乎具有非常高的詞頻,那麼對於整個文件集而言,這些詞都是不重要的。對於整個文件集而言,評價詞語重要性的標準就是idf。

某一特定詞語的idf,可以由總檔案數除以包含該詞語的檔案數,再將得到的商取對數得到:

其中 |d| 是語料庫中所有文件總數,分母是包含詞語 ti 的所有文件數。

在scikit-learn的tfidftransformer()方法中,如果宣告tfidftransformer(smooth_idf=false),那麼idf的計算就變為:

對idf的理解:語料庫的文件總數實際上是乙個詞分布的可能性大小,n篇文件,有n種可能。包含詞ti的文件數m,表示詞ti的真實分布有m個「可能」。那麼log(n/m) = log(n) - log(m)就可以表示詞ti在m篇文件中的出現,導致的詞ti分布可能性的減少(即資訊增益),這個值越小,表示詞ti分布越散,我們認為乙個詞越集**現在某一類文件,它對這類文件的分類越有貢獻,那麼當乙個詞分布太散了,那他對文件歸類的作用也不那麼大了。

**實現:

#td_idf

tf_dic=

from sklearn.feature_extraction.text import tfidfvectorizer

for feat in

['xy_3'

,'v']:

corpus=

[' '

.join(datai[feat]

.map

(str))

for name,datai in data.groupby(

'ship')]

tfidf = tfidfvectorizer(min_df =

10, max_df =

0.9)

#返回稀疏矩陣

tf_idf_array=tfidf.fit_transform(corpus)

tf_dic[f'_tf'

]=tf_idf_array.toarray(

)#tsen降維

from sklearn.manifold import tsne

for feat in

['xy_3'

,'v']:

if feat in

['xy_3']:

tsne=tsne(n_components=3)

else

: tsne=tsne(n_components=1)

one_hots=tsne.fit_transform(tf_dic[f'_tf'])

for i in

range

(len

(one_hots[0]

)): data_label[f'label_tf__'

]=one_hots[

:,i]

tf idf 原理及實踐

也就是詞頻啦,即乙個詞在文 現的次數 如果乙個詞越常見,那麼分母就越大,逆文件頻率就越小越接近0。分母之所以要加1,是為了避免分母為0 即所有文件都不包含該詞 log表示對得到的值取對 用統計學語言表達,就是在詞頻的基礎上,要對每個詞分配乙個 重要性 權重 這個詞越常見 給予較小的權重,較少見的詞 ...

TFIDF演算法原理

概念 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資訊探勘的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會...

TF IDF原理簡介

tf idf term frequency inverse document frequency 是一種用於 資訊檢索 與文字挖掘 的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個 語料庫中的其中乙份 檔案的重要程度。字詞的重要性隨著它在檔案 現的次數成 正比增加,但同...