TF-IDF与余弦相似性的应用(三):自动摘要

标签: IT | 发表时间:2013-03-26 21:23 | 作者:阮一峰
出处:http://www.ruanyifeng.com/blog/

有时候,很简单的数学方法,就可以完成很复杂的任务。

这个系列的前两部分就是很好的例子。仅仅依靠统计词频,就能找出 关键词相似文章。虽然它们算不上效果最好的方法,但肯定是最简便易行的方法。

今天,依然继续这个主题。讨论如何通过词频,对文章进行 自动摘要(Automatic summarization)。

如果能从3000字的文章,提炼出150字的摘要,就可以为读者节省大量阅读时间。由人完成的摘要叫"人工摘要",由机器完成的就叫"自动摘要"。许多网站都需要它,比如论文网站、新闻网站、搜索引擎等等。2007年,美国学者的论文 《A Survey on Automatic Text Summarization》(Dipanjan Das, Andre F.T. Martins, 2007)总结了目前的自动摘要算法。其中,很重要的一种就是词频统计。

这种方法最早出自1958年的IBM公司科学家 H.P. Luhn的论文 《The Automatic Creation of Literature Abstracts》

Luhn博士认为,文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。"自动摘要"就是要找出那些包含信息最多的句子。

句子的信息量用"关键词"来衡量。如果包含的关键词越多,就说明这个句子越重要。Luhn提出用"簇"(cluster)表示关键词的聚集。所谓"簇"就是包含多个关键词的句子片段。

上图就是Luhn原始论文的插图,被框起来的部分就是一个"簇"。只要关键词之间的距离小于"门槛值",它们就被认为处于同一个簇之中。Luhn建议的门槛值是4或5。也就是说,如果两个关键词之间有5个以上的其他词,就可以把这两个关键词分在两个簇。

下一步,对于每个簇,都计算它的重要性分值。

以前图为例,其中的簇一共有7个词,其中4个是关键词。因此,它的重要性分值等于 ( 4 x 4 ) / 7 = 2.3。

然后,找出包含分值最高的簇的句子(比如5句),把它们合在一起,就构成了这篇文章的自动摘要。具体实现可以参见 《Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites》(O'Reilly, 2011)一书的第8章,python代码见 github

Luhn的这种算法后来被简化,不再区分"簇",只考虑句子包含的关键词。下面就是一个例子(采用伪码表示),只考虑关键词首先出现的句子。

  Summarizer(originalText, maxSummarySize):

    // 第一步,计算原始文本的词频,生成一个数组,比如[(10,'the'), (3,'language'), (8,'code')...]
    wordFrequences = getWordCounts(originalText)

    // 过滤掉停用词,数组变成[(3, 'language'), (8, 'code')...]
    contentWordFrequences = filtStopWords(wordFrequences)

    // 按照词频进行排序,数组变成['code', 'language'...]
    contentWordsSortbyFreq = sortByFreqThenDropFreq(contentWordFrequences)

    // 将文章分成句子
    sentences = getSentences(originalText)

    // 选择关键词首先出现的句子
    setSummarySentences = {}
    foreach word in contentWordsSortbyFreq:
      firstMatchingSentence = search(sentences, word)
      setSummarySentences.add(firstMatchingSentence)
      if setSummarySentences.size() = maxSummarySize:
        break

    // 将选中的句子按照出现顺序,组成摘要
    summary = ""
    foreach sentence in sentences:
      if sentence in setSummarySentences:
        summary = summary + " " + sentence

    return summary

类似的算法已经被写成了工具,比如基于Java的 Classifier4J库的 SimpleSummariser模块、基于C语言的 OTS库、以及基于classifier4J的 C#实现python实现

(完)

文档信息

相关 [tf idf 余弦] 推荐:

TF-IDF与余弦相似性的应用(三):自动摘要

- - 阮一峰的网络日志
有时候,很简单的数学方法,就可以完成很复杂的任务. 这个系列的前两部分就是很好的例子. 仅仅依靠统计词频,就能找出 关键词和 相似文章. 虽然它们算不上效果最好的方法,但肯定是最简便易行的方法. 讨论如何通过词频,对文章进行 自动摘要(Automatic summarization). 如果能从3000字的文章,提炼出150字的摘要,就可以为读者节省大量阅读时间.

TF-IDF与余弦相似性的应用(二):找出相似文章

- - 阮一峰的网络日志
上一次,我用 TF-IDF算法自动提取关键词. 今天,我们再来研究另一个相关的问题. 有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章. 比如,"Google新闻"在主新闻下方,还提供多条相似的新闻. 为了找出相似的文章,需要用到 "余弦相似性"(cosine similiarity).

TF-IDF与余弦相似性的应用(一):自动提取关键词

- - 阮一峰的网络日志
这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才能正确做到. 这个问题涉及到数据挖掘、文本处理、信息检索等很多计算机前沿领域,但是出乎意料的是,有一个非常简单的经典算法,可以给出令人相当满意的结果.

Lucene TF-IDF 相关性算分公式

- - 鲁塔弗的博客
Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序. TF:词频,IDF:逆向文档频率,TF-IDF是一种统计方法,或者被称为 向量空间模型,名字听起来很复杂,但是它其实只包含了两个简单规则. 某个词或短语在一篇文章中出现的次数越多,越相关. 整个文档集合中包含某个词的文档数量越少,这个词越重要.

关键词权重计算算法:TF-IDF

- - 标点符
TF-IDF(Term Frequency–Inverse Document Frequency)是一种用于资讯检索与文本挖掘的常用加权技术. TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度. 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降.

文档的词频-反向文档频率(TF-IDF)计算

- - CSDN博客推荐文章
TF-IDF反映了在文档集合中一个单词对一个文档的重要性,经常在文本数据挖据与信息. 在一份给定的文件里, 词频(termfrequency-TF)指的是某一. 个给定的词语在该文件中出现的频率. 逆向文件频率(inversedocument frequency,. IDF)是一个词语普遍重要性的度量.

NLP----关键词提取算法(TextRank,TF/IDF)

- - IT瘾-geek
参考书目:python自然语言处理实战——核心技术与算法. 基本思想:TF是计算一个词在一篇文档中出现的频率,IDF是一个词在多少篇文档中出现过,显然TF越高证明这个词在这篇文章中的代表性就越强,而INF越低则证明这个词在具有越强的区分能力. 因此中和这两个数,就能较好地算出文档的关键词. |D_i|是文档中出现词i的文档数量,|D|是文档数.

IDF前瞻:Ivy Bridge的GPU和TDP

- 洞箫 - cnBeta.COM
将于当地时间本周二在旧金山开幕的Intel开发者论坛大会IDF 2011上,定于2012年3月或4月发布的下一代CPU"Ivy Bridge"具体细节将得到揭晓. 在大会开幕前,著名硬件网站Anandtech的站长已经掌握了Ivy Bridge两方面的具体规格:集成的新一代GPU和可变TDP.

行货SanDisk闪迪TF存储卡16GB(Class4),119元包邮

- qlzzy - 什么值得买
SanDisk闪迪TF(microSDHC)存储卡,16GB容量,Class4级别,写入速度超过4MB/S,适合在智能手机中使用. SanDisk的卡性能/寿命/价格比较平衡. 天极商城目前的价格是127元包邮,其他渠道报价普遍在139/149. 不含发票的话可以再减8块,119元包邮,近期较难看到的价格,每人限购一件,需在线支付.

SanDisk 闪迪 TF存储卡16GB(Class4),109元包邮

- Glen - 什么值得买
SanDisk闪迪TF(microSDHC)存储卡,16GB容量,Class4级别,适合手机、mp4及android平板电脑,SanDisk的卡性能/寿命/价格比较平衡. 天极商城特价109元包邮(不带票),价格低于主流B2C商城且使用顺丰发货,送货速度及服务有一定的保障.