TF-IDF算法:提取关键词

想要提取一篇文章的关键词,最直接的思维方式就是出现的越频繁的词就意味着越重要,但停用词需要除外。一篇文章中出现最多的就是停用词,只有避开这些无用的词,才能有效进行关键词打分。
停用词:出现次数最多的词是----"的"、"是"、"在"----这一类最常用的词。它们叫做"停用词"(stop words),表示对找到结果毫无帮助、必须过滤掉的词。
TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

  • TF("词频",Term Frequency):词条在文档中出现的频率。

TF词频计算公式.png

tf参数:
n i, j:是该词文件d j中出现次数,分母是在文件d j中所有字词的出现次数之和

  • IDF(逆文档频率)公式:
    如果一个词越常见,那么分母就越大,逆文档频率就越小越接近0。分母之所以要加1,是为了避免分母为0(即所有文档都不包含该词)。log表示对得到的值取对数。

idf逆文档频率计算公式.png

idf参数:
|D|: 语料库(corpus,用来模拟语言的使用环境)中的文件总数,
|{j : t i ∈ d j}| :包含词语t i的文件数目(即n i, ≠0的文件数目),如果该词语不在语料库中,就会导致被除数为零,因此一般情况下使用:1+|{j : t i ∈ d j}|

  • TF-IDF分数公式:
    TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。排在最前面的几个词就是这篇文章的关键词。
tf-idf计算公式.png

TF-IDF = 词频(TF) x 逆文档频率(IDF)

  • 示例
    现有一篇科技评论文章,假定该文长度为1000个词,"芯片"、"汽车"、"无人驾驶"各出现20次,则这三个词的"词频"(TF)都为0.02。然后,搜索Google发现,包含"的"字的网页共有250亿张,假定这就是中文网页总数。包含"芯片"的网页共有62.3亿张,包含"汽车"的网页为0.484亿张,包含"无人驾驶"的网页为0.973亿张。则它们的逆文档频率(IDF)和TF-IDF如下:
包含该词的文档数 IDF TF-IDF
芯片 62.3 0.603 0.0121
汽车 0.484 2.713 0.054
无人驾驶 0.973 2.410 0.0482

从上表可见,"汽车"的TF-IDF值最高,"无人驾驶"其次,"芯片"最低。(如果还计算"的"字的TF-IDF,那将是一个极其接近0的值。)所以,如果只选择一个词,"汽车"就是这篇文章的关键词。

除了自动提取关键词,TF-IDF算法还可以用于许多别的地方。比如,信息检索时,对于每个文档,都可以分别计算一组搜索词("芯片"、"汽车"、"无人驾驶")的TF-IDF,将它们相加,就可以得到整个文档的TF-IDF。这个值最高的文档就是与搜索词最相关的文档。

TF-IDF算法的优点是简单快速,结果比较符合实际情况。缺点是,单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这是不正确的。(一种解决方法是,对全文的第一段和每一段的第一句话,给予较大的权重。)

你可能感兴趣的:(TF-IDF算法:提取关键词)