自然语言处理 | (9)基于TF-IDF的文本关键词抽取原理

原文链接:TF-IDF关键词提取

目录

1.问题背景

2.TF-IDF算法思想

3.TF-IDF算法细节

4.TF-IDF的应用与评价


1.问题背景

有一篇很长的文章,我们要用计算机提取他的关键词(Automatic Keyphrase extraction),完全不加人工干预,如何才能正确做到?

这个问题涉及到数据挖掘、文本处理、信息检索等很多计算机前沿领域,但是出乎意料的是,有一个非常简单的经典算法,可以给出令人相当满意的结果。他简单到都不需要高等数学,普通人只用10分钟就可以理解,他就是TF-IDF算法。让我们从一个实例开始讲起。假设现在有一篇长文《中国的蜜蜂养殖》,我们准备用计算机提取他的关键词。

 

2.TF-IDF算法思想

一个简单的思路是,找到出现次数最多的词。如果某个词很重要,他应该在这篇文章中多次出现。于是,我们进行词频统计(Term Frequency, TF).

结果出现次数最多的词是"的","是","在"---这一类常用的词。他们叫做停用词(stop words),表示对找到结果毫无帮助、必须过滤掉的词。

假设我们把他们都过滤掉了,只考虑剩下的有实际意义的词。这样又会遇到另一个问题,我们可能发现"中国"、"蜜蜂"、"养殖"这三个词出现的次数一样多。这是不是意味着,作为关键词,他们的重要性是一样的?

显然不是这样。因为"中国"是很常用的词,相对而言,"蜜蜂"和"养殖"不那么常见。如果这三个词在一片文章中出现的次数一样多,有理由认为,"蜜蜂"和"养殖"的重要程度要大于"中国",也就是说,在关键词排序上面,"蜜蜂"和"养殖"应该排在"中国"前面。

所以我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是他在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。

用统计学语言表达,就是在词频的基础上,要对每个词分配一个"重要性"权重。最常见的词("的","是","在")给予最小的权重,较常见的词(“中国")给予较小的权重,较少见的词("蜜蜂"、"养殖")基于较大的权重。这个权重叫做"逆文档频率"(Inverse Document Frequency, IDF),他的大小与一个词的常见程度成反比(一个词越常见,他的IDF越小)。

知道了词频(TF)和逆文档频率(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词 对文章的重要性越高,他的TF-IDF值就越大。所以排在最前面的几个词就是这篇文章的关键词。

 

3.TF-IDF算法细节

  • 第一步计算词频(TF)

考虑到文章有长度之分,为了便于不同文章的比较,进行词频标准化:

 

  • 第二步计算逆文档频率(IDF)

这时,需要一个语料库(corpus),用来模拟语言的使用环境:

如果一个词越常见,包含他的文档数越多,那么分式就越接近于1,逆文档频率就越小越接近0. 分母加1是为了避免分母为0(所有的文档都不包含这个词). log表示对得到的值取对数(可以认为是以e为底).

 

  • 第三步计算TF-IDF

可以看到,TF-IDF与一个词在文档中出现的次数成正比,与该词在整个语言/语料库中出现的次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。

 

还是以《中国的蜜蜂养殖》为例,假设该文长度为1000个词,"中国","蜜蜂","养殖"各出现20次,则这三个词的词频(TF)是0.02。然后,Google搜索发现,包含"的"字的网页共有250亿张,假设这是中文网页的总数/语料库文档总数。包含"中国"的网页/包含"中国"的文档数共有62.3亿张,包含"蜜蜂"的网页/包含"蜜蜂"的文档数为0.484亿张,包含"养殖"的网页/包含"养殖"的文档数为0.973亿张。则他们的逆文档频率(IDF)和TF-IDF如下:

 

从上表可见,"蜜蜂"的TF-IDF值最高,"养殖"其次,"中国"最低。(如果还计算"的"字的TF-iDF,那将是一个及其接近于0的值,所以在使用TF-IDF之前可以先去掉停用词(TF很高,但IDF很低,总体TF-IDF值很低),也可以不去。最好是去掉。)。所以,如果只选择一个词,"蜜蜂"就是这篇文章的关键词。

 

4.TF-IDF的应用与评价

除了自动提取关键词之外,TF-IDF算法还可以用于许多别的地方。比如,信息检索时,对于每个文档,都可以分别计算一组搜索词("中国","蜜蜂","养殖")的TF-IDF,将它们相加,就可以得到整个文档的TF-IDF。这个值最高的文档就是与搜索词最相关的文档。

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值