TF-IDF学习笔记 什么是 TF-IDF?

TF-IDF 是一种用于信息检索与文本挖掘的常用加权技术。它采用一种统计方法,根据字词的在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。

TF-IDF 的思想很简单:如果某个单词或短语在一篇文章中出现的频率 TF 高,并且在其他文章中很少出现,那么认为这个词或者短语具有很好的区分能力,适合用来对这篇文章进行分类。

如何计算 TF-IDF?

TF-IDF 由两部分组成:TF 和 IDF。下面分别介绍这两个部分的计算方法。

计算 TF

TF(Term Frequency,词频)指的是某一个给定的词语在该文件中出现的次数。它可以简单地表示为:

TF(t) = (词语 t 在文档中出现的次数) / (文档中词语总数)

也就是说,TF(t) 表示在文档中词语 t 出现的频率。

计算 IDF

IDF(Inverse Document Frequency词语相似度计算方法,逆文档频率)的主要思想是,如果包含词条 t 的文档越少,则说明词条具有很好的类别区分能力。IDF 的定义为:

IDF(t) = log_e(文档总数 / 包含词语 t 的文档数)

其中 e 为自然常数,文档总数指的是语料库中文档的总数。如果某个词语只出现在一个文档中,那么该词语的 IDF 值为 log_e(文档总数),即它的权重非常高;如果某个词语在所有的文档中都出现过,那么它的 IDF 值为 log_e(1)=0,即它在这个语料库中没有任何区分能力。

计算 TF-IDF

将 TF 和 IDF 相乘,得到 TF-IDF:

TF-IDF(t) = TF(t) * IDF(t)

TF-IDF(t) 表示词语 t 在文档中的重要程度,是 TF 和 IDF 的乘积。值得注意的是,TF-IDF 的值越大,表示词语 t 在该文档中越重要。

TF-IDF 的应用

TF-IDF 在文本挖掘中被广泛应用,常见的应用场景包括:

文章关键词提取

可以统计文章中每个词语的 TF-IDF 值,选取 TF-IDF 值最高的几个词语作为关键词。

文章分类

可以使用多个文章对应的词语的 TF-IDF 值构成一个向量,再使用分类算法对文章进行分类。

相似文章检索

可以使用文章对应的词语的 TF-IDF 值计算文章之间的相似度,找出和当前文章相似的文章。

网页搜索引擎

可以使用搜索关键词所对应的词语的 TF-IDF 值计算网页的相关度词语相似度计算方法,将相关度高的网页排在搜索结果的前面。

总结

TF-IDF 是一种常用的文本挖掘技术,它可以提取文章的关键词、分类文章、检索相似文章以及网页搜索等。掌握 TF-IDF 技术,有助于我们更好地进行文本挖掘和信息检索工作。

# 计算词频TF
def calc_tf(word, doc):
    return doc.count(word) / len(doc)
# 计算逆文档频率IDF
def calc_idf(word, docs):
    return math.log(len(docs) / (sum(1 for doc in docs if word in doc)))
# 计算TF-IDF
def calc_tfidf(word, doc, docs):
    return calc_tf(word, doc) * calc_idf(word, docs)