这个问题看上去仿佛很伟大,着实我要谈的是一个很简朴的题目。
有一篇很长的文章,我要用计较机提取它的要害词(Automatic Keyphrase extraction),完全不加以人工过问,叨教奈何才气正确做到?
这个题目涉及到数据发掘、文本处理赏罚、信息检索等许多计较机前沿规模,可是出乎料想的是,有一个很是简朴的经典算法,可以给出令人相等满足的功效。它简朴到都不必要高档数学,平凡人只用10分钟就可以领略,这就是我本日想要先容的TF-IDF算法。
让我们从一个实例开始讲起。假定此刻有一篇长文《中国的蜜蜂养殖》,我们筹备用计较机提取它的要害词。
一个轻易想到的思绪,就是找到呈现次数最多的词。假如某个词很重要,它应该在这篇文章中多次呈现。于是,我们举办"词频"(Term Frequency,缩写为TF)统计。
功效你必定猜到了,呈现次数最多的词是----"的"、"是"、"在"----这一类最常用的词。它们叫做"停用词"(stop words),暗示对找到功效毫无辅佐、必需过滤掉的词。
假设我们把它们都过滤掉了,只思量剩下的有现实意义的词。这样又会碰着了另一个题目,我们也许发明"中国"、"蜜蜂"、"养殖"这三个词的呈现次数一样多。这是不是意味着,作为要害词,它们的重要性是一样的?
显然不是这样。由于"中国"是很常见的词,相对而言,"蜜蜂"和"养殖"不那么常见。假如这三个词在一篇文章的呈现次数一样多,有来由以为,"蜜蜂"和"养殖"的重要水平要大于"中国",也就是说,在要害词排序上面,"蜜蜂"和"养殖"应该排在"中国"的前面。
以是,我们必要一个重要性调解系数,权衡一个词是不是常见词。假如某个词较量少见,可是它在这篇文章中多次呈现,那么它很也许就反应了这篇文章的特征,正是我们所必要的要害词。
用统计学说话表达,就是在词频的基本上,要对每个词分派一个"重要性"权重。最常见的词("的"、"是"、"在")给以最小的权重,较常见的词("中国")给以较小的权重,较少见的词("蜜蜂"、"养殖")给以较大的权重。这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的巨细与一个词的常见水平成反比。
知道了"词频"(TF)和"逆文档频率"(IDF)往后,将这两个值相乘,就获得了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。以是,排在最前面的几个词,就是这篇文章的要害词。
下面就是这个算法的细节。
第一步,计较词频。
思量到文章有黑白之分,为了便于差异文章的较量,举办"词频"尺度化。
可能
第二步,计较逆文档频率。
这时,必要一个语料库(corpus),用来模仿说话的行使情形。
假如一个词越常见,那么分母就越大,逆文档频率就越小越靠近0。分母之以是要加1,是为了停止分母为0(即全部文档都不包括该词)。log暗示对获得的值取对数。
第三步,计较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。这个值最高的文档就是与搜刮词最相干的文档。
TF-IDF算法的利益是简朴快速,功效较量切合现实环境。弱点是,纯真以"词频"权衡一个词的重要性,不足全面,偶然重要的词也许呈现次数并不多。并且,这种算法无法浮现词的位置信息,呈现位置靠前的词与呈现位置靠后的词,都被视为重要性沟通,这是不正确的。(一种办理要领是,对全文的第一段和每一段的第一句话,给以较大的权重。)
下一次,我将用TF-IDF团结余弦相似性,权衡文档之间的相似水平。
(完)
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!