TF IDF介紹及Python實現文字聚類

2021-09-24 15:19:14 字數 2409 閱讀 4934

tf-idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中

乙份檔案的重要程度。字詞的重要性隨著它在檔案**現的次數成正比增加,但

同時會隨著它在語料庫**現的頻率成反比下降。tf-idf 加權的各種形式常被搜

索引擎應用,作為檔案與使用者查詢之間相關程度的度量或評級。除了 tf-idf 以外,

網際網路上的搜尋引擎還會使用基於鏈結分析的評級方法,以確定檔案在搜尋結果

**現的順序。

詞頻(term frequency, tf)指的是某乙個給定的詞語在該檔案**現的次數。這個數字

通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的檔案。(同乙個詞語

在長檔案裡可能會比短檔案有更高的詞頻,而不管該詞語重要與否。)

逆向檔案頻率 (inverse document frequency, idf)idf 的主要思想是:如果包含詞條 t 的文件

越少, idf 越大,則說明詞條具有很好的類別區分能力。某一特定詞語的 idf,可以由總檔案

數目除以包含該詞語之檔案的數目,再將得到的商取對數得到。

接下來,使用tf-idf方法結合kmeans聚類嘗試乙個文字聚類實驗,使用的為乙個json檔案,內含檔案序號及文字內容。

# python3.6.4

from sklearn import cluster

from sklearn.feature_extraction.text import countvectorizer

from sklearn.feature_extraction.text import tfidftransformer

def execute_cluster(tokens_list):

tolist={}

dict=load_array('testdoc.json')

for item in dict:

tolist[item[1]]=item[0]

clusters_list=

toklist=

toklist2=

for stoken in tokens_list: #根據tolist替換原詞數字號得到序號--文字詞集的矩陣

stopid=stoken['docid']

stoptoken=stoken['tokenids']

strtok=

for item in stoptoken:

print(toklist) #這裡 tolist 需符合傳入格式要求

vectorizer = countvectorizer() #countvectorizer 會將文字中的詞語轉換為詞頻矩陣

cpmat = vectorizer.fit_transform(toklist)

vectorizer.fit(toklist)

word = vectorizer.get_feature_names()

print(word)

#print(cpmat)

transformer = tfidftransformer() #該類會統計每個詞語的 tf-idf 權值

retfidf = transformer.fit_transform(cpmat) #得到文字 tfidf 矩陣

print(retfidf)

tfidf_train=retfidf.toarray() #調整格式方便傳入

print(tfidf_train)

km = cluster.kmeans(n_clusters=65, random_state=100,max_iter=500)

#放入上矩陣進行 kmeans 聚類

c=km.fit(tfidf_train)

t = c.labels_ # t 儲存每個樣本所屬的簇

print(t)

print("*******************************")

clusters_list= #將結果存入 cluster_list 中

con=0

for tt in t:

cc = {}

topics_list = load_array(train_topics_file)

cc['docid'] = tokens_list[con]['docid']

cc['cluster'] = tt

con+=1

print(clusters_list)

print(type(tokens_list), type(tokens_list[0]), list(tokens_list[0].items())) #僅用於

驗證資料格式

return clusters_list #返回最終聚類結果

簡單理解TFIDF及其演算法python實現

通俗來講tf idf就是考慮單詞的重要性。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。tf idf term frequency inverse document frequency 是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙...

TF IDF解釋及應用

tf 該詞在某篇文件中出現的頻率,tf w,d 值越大,表明該詞在文件中的重要性越高 idf 單詞普遍性的度量,如果該值越小,則該詞認為非常普遍,如果該值很大,則認為該詞在其他文件中很少出現,可以用該詞來進行分類。應用 1 搜尋引擎 tf idf q,d sum 3 找出相似文章 生成兩篇文章各自的...

tf idf 原理及實踐

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