TF-IDF(term frequency–inverse document frequency,词频-逆文档频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。

TF-IDF是一种统计方法,用以评估某个词对于语料库中某一份文档的重要程度。某个词的重要性随着它在文档中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

TF-IDF的主要思想是:如果某个单词在某一份文档中出现的频率越高,并且在其他文档中很少出现,则认为这个词对当前这篇文档越重要,越能代表当前这篇文档的关键信息。

举例说明

请凭直觉,分别指出以下两个句子的关键词。

corpus = [
   'my dog sat on my bed',
   'my cat sat on my knees',
]

计算公式

1、计算TF(词频)

TF(词频),表示某个词在文本中出现的频率,考虑到句子有长有短,需要进行标准化。

TF = 某个词在文本中出现的次数 / 句子的总词数

例如:TF(dog) = [1/6, 0/6]

2、计算IDF(逆文档频率)

某个词的IDF(逆文档频率)值,跟它在整个语料库中出现的次数成反比,越常见IDF值越小。

IDF = log(语料库句子总数 / (包含该词的文档数 + 1))

分母加1,是为了避免所有文档都不包含这个词时,分母为0报错的问题。但这个加1,会导致另外一个问题,在后面介绍。

例如:IDF(dog) = log(2/(1+1))

3、计算TF-IDF

TF-IDF = TF * IDF

计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词,就是关键词提取的过程。

我们这个项目的目标是关键词检索,并不是关键词提取,但关键词提取也是TD-IDF算法的一个重要运用,所以也顺便讲一下这个过程,大家也要掌握。

例如:TF-IDF(dog) = [0, 0]

算到这里,可能有同学已经意识到了一个问题,既然TF-IDF算法能提取关键词,那为什么不论dog在有没有出现,最终计算出的tfidf值都为0。这个问题,我们暂时搁置,放到下节课学完 TF-IDF算法的代码实现之后,再来解决。

本文链接:http://www.ichenhua.cn/edu/note/551

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!