TF IDF的原理和實現

2021-09-29 10:54:39 字數 2275 閱讀 7214

1、tf-idf原理

是term frequency - inverse document frequency的縮寫,即「詞頻-逆文字頻率」。它由兩部分組成,tf和idf

tf也就是我們前面說到的詞頻,我們之前做的向量化也就是做了文字中各個詞的出現頻率統計,並作為文字特徵

idf,即「逆文字頻率」,幾乎所有文字都會出現的"的"其詞頻雖然高,但是重要性卻應該比詞頻低的"西瓜"和「中國」要低

考慮到文章有長短之分,為了便於不同文章的比較,進行"詞頻"標準化,即歸一化,所以除以總詞數或者最多的詞數

如果乙個詞越常見,那麼分母就越大,逆文件頻率就越小越接近0。分母之所以要加1,是為了避免分母為0(即所有文件都不包含該詞)。log表示對得到的值取對數。

tf_idf(x)=tf(x)∗idf(x)

2、**實現

from collections import counter

import numpy as np

"""這裡一行代表一篇文章

"""# 1、語料庫

corpus = [

'在 降維 過程 中 可以 使用 類別 的 先驗 知識 經驗,而 像 pca 這樣的 無監督學習 則 無法使用 類別 先驗 知識',

'lda 在 樣本 分類 資訊 依賴 均值 而 不是 方差 的 時候,比 pca 之類的 演算法 較優',

'cbow 模型 的 訓練 輸入 是 某乙個 特徵詞 的 上下文 相關的 詞 對應的 詞向量',

'比如 文字 中 出現 體育 主題 的 概率 肯定 比 哲學 主題 的 概率 要 高,這點 **於 我們 的 先驗 知識。具體 我們 以後 的 文章 再 討論'

]# 3、統計詞頻

word_fre = # [詞彙, 個數]

artilen = # 每篇文章切詞長度

for i in range(len(word_list)):

# 列印每一篇文章出現的詞彙

# print(list(set(word_list[i])))

# 4、計算每個詞彙的tf

def count_tf(word_fre, artilen):

# 初始化乙個列表,四個元素:詞彙、歸一化tf值、出現的文章數、idf值、tf_idf值

tf = [[[0, 0, 0, 0, 0] for _ in range(len(word_fre[i]))] for i in range(len(word_fre))]

for i in range(len(word_fre)):

for j in range(len(word_fre[i])):

# word_fre[i][j][1] = word_fre[i][j][1]/artilen[i]

tf[i][j][1] = np.divide(word_fre[i][j][1],artilen[i])

tf[i][j][0] = word_fre[i][j][0]

return tf

tf_word = count_tf(word_fre, artilen)

# for i in range(4):

#     print(tf_word[i])

tf_word = num_worc_in_article(tf_word, word_list)

# 6、統計idf

def count_idf(tf_word):

for i in range(len(tf_word)):

for j in range(len(tf_word[i])):

tf_word[i][j][3] = np.log(np.divide(len(tf_word), tf_word[i][j][2]))

return tf_word

tf_word = count_idf(tf_word)

# 7、tf_idf

def count_tf_idf(tf_word):

for i in range(len(tf_word)):

for j in range(len(tf_word[i])):

tf_word[i][j][4] = np.multiply(tf_word[i][j][1], tf_word[i][j][3])

return tf_word

print(count_tf_idf(tf_word))

TF IDF的原理概述

今天來說一下什麼是tf idf,我記得這個東西從2017年開始就一直纏繞著我,今天我把它撕扯下來,拼湊著這樣的一篇趣文,我想看過之後,大家就算沒學過高等數學,那麼對於它的原理也會了然於胸了。為了能以一種接地氣的方式表達出它的原理,本文幾乎不涉及複雜的數學公式,儘管那些公式在我看來是那麼的富有美感 一...

TFIDF演算法原理

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

TF IDF原理簡介

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