TF-IDF 值的计算与验证

TF-IDF(Term Frequency-Inverse Document Frequency)是一种衡量文档中词语重要性的重要方法,常用于信息检索和文本挖掘。它通过计算词语在文档中出现的频率(TF)和在所有文档中出现的频率(IDF)的乘积来确定词语的重要性。本文将探讨TF-IDF的计算方法,并展示如何使用Python的sklearn库中的TfidfVectorizer来计算TF-IDF值。

TF-IDF 计算方法

TF-IDF值的计算包括两个主要部分:词语频率(TF)和逆文档频率(IDF)。词语频率是指一个词语在特定文档中出现的次数,而逆文档频率是指一个词语在整个文档集合中出现的频率的倒数。TF-IDF值是TF和IDF的乘积,它反映了词语在文档中的重要性。

词语频率可以通过以下方式计算:

# 计算词语在文档中出现的次数 tf(t) = No. of times term 't' occurs in a document # 或者 tf(t) = (No. of times term 't' occurs in a document) / (No. Of terms in a document) # 或者 tf(t) = (No. of times term 't' occurs in a document) / (Frequency of most common term in a document)

sklearn的TfidfVectorizer默认使用第一种方法计算TF。

IDF的计算方法如下:

# 计算词语在所有文档中的出现频率 idf(t) = log_e[(1+n) / (1 + df(t))] + 1 # 默认smooth_idf=True # 或者 idf(t) = log_e[n / df(t)] + 1 # 当smooth_idf=False

其中n是文档总数,df(t)是包含词语t的文档数量。

TF-IDF值是词语在文档中的TF和IDF的乘积,计算公式如下:

# 计算TF-IDF值 tf-idf(t) = tf(t) * idf(t)

Python代码示例

from sklearn.feature_extraction.text import TfidfVectorizer doc1 = "petrol cars are cheaper than diesel cars" doc2 = "diesel is cheaper than petrol" doc_corpus = [doc1, doc2] vec = TfidfVectorizer(stop_words='english') matrix = vec.fit_transform(doc_corpus) print("Feature Names:", vec.get_feature_names_out()) print("Sparse Matrix:", matrix.shape, matrix.toarray())
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485