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表示對得到的值取對 用統計學語言表達,就是在詞頻的基礎上,要對每個詞分配乙個 重要性 權重 這個詞越常見 給予較小的權重,較少見的詞 ...