TF IDF的神秘面紗

2021-10-06 15:33:57 字數 2115 閱讀 4136

tf-idf演算法:可以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案**現的次數成正比增加,但同時會隨著它在語料庫**現的頻率成反比下降。主要思想是:如果某個詞或短語在一篇文章**現的頻率tf高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類,也就可以作為文字的關鍵字。

1.tf(term frequency)詞頻統計:文件最有意義的詞語應該是那些在文件**現頻率高,而在整個文件集合的其他文件**現頻率少的詞語,因此引入tf,計算單詞的詞頻。

2.idf(inverse document frequency)逆文字頻度:乙個單詞出現的文字頻數越小,它區別不同類別文字的能力就越大。因此引入了逆文字頻度idf的概念。

如果乙個詞越常見,那麼分母就越大,逆文件頻率就越小越接近0,說明這個詞不那麼重要。分母之所以要加1,是為了避免分母為0。

tf和idf的乘積作為特徵空間座標系的取值測度。使用idf作為權重乘以tf,實現對單詞權重的調整,調整權值的目的在於突出重要單詞,抑制次要單詞。tf-idf值與該詞的出現頻率成正比,與在整個語料庫中的出現次數成反比

4.求出關鍵字

計算出文章中每個詞的tf-idf值之後,進行排序,選取其中值最高的幾個作為關鍵字。

5.計算文章的相似性

如果你還是沒有理解的話,那就看看下面這個例子吧:

就是在詞頻的基礎上,要對每個詞分配乙個權重。最常見的詞("的"、"是"、"在")給予最小的權重,較常見的詞("中國")給予較小的權重,較少見的詞("水稻"、"種殖")給予較大的權重。這個權重叫做"逆文件頻率"(idf)。

sklearn中tf-idf權重計算方法主要用到兩個類:countvectorizer和tfidftransformer。

countvectorizer類會將文字中的詞語轉換為詞頻矩陣,例如矩陣中包含乙個元素a[i][j],它表示j 詞在i類文字下的詞頻。它通過fit_transform函式計算各個詞語出現的次數,通過toarray()可看到詞頻矩陣的結果。

tfidftransformer用於統計vectorizer中每個詞語的tf-idf值

from sklearn.feature_extraction.text import countvectorizer

from sklearn.feature_extraction.text import tfidftransformer

x_train = ['tf-idf 主要 思想 是','演算法 乙個 重要 特點 可以 脫離 語料庫 背景',

'如果 乙個 網頁 被 很多 其他 網頁 鏈結 說明 網頁 重要']

#將文字中的詞語轉換為詞頻矩陣,矩陣元素a[i][j] 表示j詞在i類文字下的詞頻

vectorizer = countvectorizer(max_features = 10)

#計算每乙個詞語出現的次數 fit_transform()方法用於計算每乙個詞語出現的次數

x = vectorizer.fit_transform(x_train)

#計算每乙個詞語的tf-idf權值

transformer = tfidftransformer()

tf_idf = transformer.fit_transform(x)

#檢視資料結構將tf-idf矩陣抽取出來,元素a[i][j]表示j詞在i類文字中的tf-idf權重

x_train_weight = tf_idf.toarray()

print('輸出x_train文字變數:')

print(x_train_weight)

輸出結果:

杜拜(一)神秘面紗

杜拜 一 神秘面紗 去杜拜,原本應該算是乙個意外,從開始說去到行程的結束不到乙個月的時間,真算是,想要去,便去了,這也算是我人生中的乙個異數。仔細想想,我這個人的毛病真的不少 從我自己早就承認了的虛榮 浮躁 不專心,我發現,還要新增乙個三心二意。原本聽說 gg 要去杜拜作展覽,我便說,我也要去。算下...

揭開信貸神秘面紗

貸款信用保險是指保險人對銀行或其他金融機構與企業之間的借貸合同進行擔保,以承保借款人信譽風險的保險。在貸款信用保險中,貸款方 即債權人 是投保人。但保單簽發後,貸款方即成為被保險人。當企業無法歸還貸款時,債權人可以從保險那裡獲得補償。貸款人在獲得保險人的補償後,必須將債權轉讓給保險人,由保險人向借款...

揭開Zookeeper神秘面紗

zookeeper是乙個開源的分布式的,為分布式應用提供協調服務的apache專案。hadoop 和hbase的重要元件。它是乙個為分布式應用 提供一致性服務 的軟體,提供的功能包括 配置維護 網域名稱服務 分布式同步 組服務 等。1 zookeeper 乙個領導者 leader 多個跟隨者 fol...