TF-IDF项目 P2 算法计算公式和关键词提取功能介绍
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://edu.ichenhua.cn/edu/note/551
版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!