通俗來講tf-idf就是考慮單詞的重要性。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。
tf-idf(term frequency–inverse document frequency)是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。tf意思是詞頻(term frequency)指的是某乙個給定的詞語在該檔案**現的次數,idf意思是逆文字頻率指數(inverse document frequency)是乙個詞語普遍重要性的度量。。
tf-idf的計算公式分三步走:
其統計公式如下:
優點:能過濾掉一些常見的卻無關緊要的詞語,同時保留影響整個文字的重要詞語。
# -*- coding: cp936 -*-
import jieba
import jieba.posseg as pseg
import os
import sys
from sklearn import feature_extraction
from sklearn.feature_extraction.text import tfidftransformer
from sklearn.feature_extraction.text import countvectorizer
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
from numpy import *
fr = open('你的文字名.txt')
fr_list = fr.read()
datalist = fr_list.split('\n')
data =
for oneline in datalist:
#將得到的詞語轉換為詞頻矩陣
freword = countvectorizer()
#統計每個詞語的tf-idf權值
transformer = tfidftransformer()
#計算出tf-idf(第乙個fit_transform),並將其轉換為tf-idf矩陣(第二個fit_transformer)
tfidf = transformer.fit_transform(freword.fit_transform(data))
#獲取詞袋模型中的所有詞語
word = freword.get_feature_names()
#得到權重
weight = tfidf.toarray()
tfidfdict = {}
for i in range(len(weight)):
for j in range(len(word)):
getword = word[j]
getvalue = weight[i][j]
if getvalue != 0:
if tfidfdict.has_key(getword):
tfidfdict[getword] += string.atof(getvalue)
else:
tfidfdict.update()
sorted_tfidf = sorted(tfidfdict.iteritems(),
key = lambda d:d[1],reverse = true)
fw = open('result.txt','w')
for i in sorted_tfidf:
fw.write(i[0] + '\t' + str(i[1]) +'\n')
TF IDF及其演算法
概念 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資訊探勘的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會...
TF IDF及其演算法
概念 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資訊探勘的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會...
TF IDF及其演算法
tf idf及其演算法 概念 tf idf term frequency inverse document frequency 是一種用於資訊檢索與資訊探勘的常用加權技術。tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案中出現的...