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

TF-IDF与余弦相似性的应用 TF-IDF算法的优点是简单快速,结果比较符合实际情况 立即下载

FROM: http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html

作者: 阮一峰

日期: 2013年3月26日

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

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

今天,依然继续这个主题。讨论如何通过词频,对文章进行自动摘要(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算法自动提取关键词。 今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,”Google新闻”在主新闻下方,还提供多条相似的新闻。 为了找出相似的文章,需要用到”余弦相似性”(cosine similiarity)。下面,我举一个例子来说明,什么是”余弦相似性”。 为了简单起见,我们先从句子着手。   句子A:我喜欢看电视,不喜欢看电影。   句子B:我不喜欢看电视,也不喜欢看电影。 请问怎样才能计算上面两句话的相似程度? 基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手 立即下载

相关推荐

UG NX与PLC-1500的在环虚拟测试

TIA、PLCSIM、NetToPLCsim、KEPServerEX以及UG NX的在环虚拟测试

lvtlvtlvtlvt的博客 4220

TF-IDF算法

文章来源本文章是汇总阮一峰的博客,通俗易懂,值得关注应用  提取一篇文章的关键词。一篇文章关键词特性是:在文章中出现的频率高,但是一般场景中并非常见。基本介绍  TF—term frequency,词频;   IDF—Inverse Document Frequency,逆文档频率,其大小与词语在一般场景中常见程度成反比,及一般场景出现频率越低,其值越大;   综上,如果一篇文章中如果某个词语出

beirdu的专栏 349

编程小白的自学笔记四(正则表达式模块search函数)

本文仅仅简单介绍了search的使用,供小白学习探讨。

m0_49914128的博客 2322

自动摘要生成技术

一、概念 二、Extractive抽取式算法 - TextRank 1、TextRank算法提取关键词 2、TextRank算法提取关键词短语 3、TextRank算法生成摘要 1)文本相似度 - BM25算法 4、TextRank算法优势 5、TextRank算法存在的问题及解决策略 三、Abstractive抽取式算法 1、seq2seq + attent...

hlang8160的博客 2万+

树莓派与OpenCV实现人脸识别(OpenCV安装篇)

主要看了以下两位博客的文章完成的,也遇到了不少的坑,在这里一一填补说明。 链接: https://blog.youkuaiyun.com/weixin_42163073/article/details/107308759. 链接: https://blog.youkuaiyun.com/weixin_42573595/article/details/108526850. 树莓派与OpenCV实现人脸识别(OpenCV安装篇)一、材料准备:二、系统烧录三、安装OpenCV依赖项四、下载OpenCV-4.3.0五、为OpenCV配置P

weixin_45880057的博客 1万+

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港 前脚刚走,后脚又来,山姆大叔又来刷存在感,2020年7月28日,USS Ronald Reagan流窜在我国东海海区被卫星拍了下来: 2020年8月1日,最新卫星图像显示USS Ronald Reagan已经返回母港日本横须贺:距离其出港(2020年6月8日)已经过去了快两个月 然而事情并没有到此结束,“America”级#两#栖#攻#击#舰#(LHA-6)选择在 “八.一” 这个特殊的日子前后出港颇具挑衅的味道。 根据2020年

qq_46071146的博客 1565

自然语言处理(NLP)—— 自动摘要

它的第一种方法是基于理解的,受认知科学和人工智能的启发。在这个方法中,我们首先建立文本的语义表示,这可以理解为文本中的概念和它们之间关系的网络。然后,我们对这个语义表示进行简化处理,并从简化的内容中生成摘要。构建语义表示可能非常耗时和成本高昂,因为它需要深入理解文本中的每一个概念及其关系。在简化阶段决定什么是重要的可能非常微妙,因为这需要区分文本中的核心内容和次要信息。在整个处理过程中需要保持对原始信息层次的认识,不可以在简化或泛化的过程中失去重要信息。

weixin_65190179的博客 1928

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1005

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

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

weixin_34861702的博客 222

AI小智语音服务架构与嵌入式成本优化实践

语音交互系统是智能硬件的核心能力,其本质是端云协同的实时数据处理链路,涵盖音频采集、流式传输、语义理解与语音合成四大技术环节。原理上需严格划分物理层(确定性音频I/O)、协议层(WebSocket/Range可靠性通信)和语义层(ASR/LLM/TTS职责解耦),以保障低延迟与高可用。技术价值在于通过VAD前置过滤、分块下载、Token截断等嵌入式级优化,显著降低云端调用成本与网络开销。典型应用场景包括儿童故事机、智能音箱、教育机器人等对响应速度、音色自然度和单次交互成本敏感的AI小智设备。本文聚焦火山引擎

weixin_30653091的博客 352

Centos7 yum 报错「Errno 256」No more mirrors to try 解决方法

首先该问题的出现是由于网络的震荡导致,这是重点。(1)将源更换成阿里云的官方源,步骤参考如上(2)同时将zabbix的官方源更换成阿里云里面的zabbix镜像源,因为zabbix官方源根本网络不通,因为国家防火墙的拦截,导致网络不通。这是阿里源的zabbix镜像地址: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/修改系统中早期生成的zabbix.repo文件,如下:主要是把baseurl替换成阿里云的zabbix镜像地址即可。

专注基础架构领域 3875
上一篇: TF-IDF与余弦相似性的应用(二):找出相似文章
下一篇: 虚数的意义
凌风探梅
博客等级 码龄19年 2575粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值