文档章节

深度学习之文本摘要自动生成

图鸭科技研究员
 图鸭科技研究员
发布于 2017/12/06 13:41
字数 1957
阅读 711
收藏 12
点赞 1
评论 0

当我们点开某个网站或某个新闻APP的时候,经常能看到这样的题目:“14亿人都不知道的真相,历史的血泪……”、“删前速看!XXX视频流出”等,可是当我们点进去的时候,往往会发现,都是标题党,文章和内容完全不符合!

如果这时候有一种工具能先替我们阅读新闻,再提炼出关键内容,那么我们肯定不会再受到标题党的影响,这对我们的生活无疑会有非常大的便利。而这需要的就是“文本摘要自动生成”技术!

文本摘要充斥着我们生活的方方面面,往小了说,新闻关键词的提炼是文本摘要;往宽泛看,文本摘要也可以应用在像Google、百度等搜索引擎的结果优化中,真正实现搜索中的“所见即所得”,“Smarter & Faster”,再也不会翻好几页都找不到想要的信息了。

                     (Google开源的Textsum人类/机器摘要结果对比)

主流的文本摘要方式

目前主流的文本摘要自动生成有两种方式,一种是抽取式extractive,另一种是生成式 abstractive)。

抽取式顾名思义,就是按照一定的权重,从原文中寻找跟中心思想最接近的一条或几条句子。而生成式则是计算机通读原文后,在理解整篇文章意思的基础上,按自己的话生成流畅的翻译。

抽取式的摘要目前已经比较成熟,但是抽取质量及内容流畅度均差强人意。伴随着深度学习的研究,生成式摘要的质量和流畅度都有很大的提升,但目前也受到原文本长度过长、抽取内容不佳等的限制。

文本摘要的发展概况

抽取式摘要是一种比较成熟的方案,其中Text rank排序算法以其简洁、高效的特点被工业界广泛运用。大体思想是先去除文章中的一些停用词,之后对句子的相似度进行度量,计算每一句相对另一句的相似度得分,迭代传播,直到误差小于0.0001。再对上述得到的关键语句进行排序,便能得到想要的摘要。抽取式摘要主要考虑单词词频,并没有过多的语义信息,像“猪八戒”,“孙悟空”这样的词汇都会被独立对待,无法建立文本段落中的完整语义信息。

Text rank原理如上图所示,根据句子的相似性进行排序打分。)

生成式文本摘要主要依靠深度神经网络结构实现,2014年由Google Brain团队提出的Sequence-to-Sequence序列,开启了NLP中端到端网络的火热研究。Sequence-to-Sequence又称为编、解码器(EncoderDecoder)架构。其中EncoderDecoder均由数层RNNLSTM构成,Encoder负责把原文编码为一个向量CDecoder负责从这个向量C中提取信息,获取语义,生成文本摘要。

但是由于“长距离依赖”问题的存在,RNN到最后一个时间步输入单词的时候,已经丢失了相当一部分的信息。这时候编码生成的语义向量C同样也丢失了大量信息,就导致生成的摘要不够准确。

Bahdanau等人在14年发表的论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,第一次将Attention机制应用于NLP中。Attention机制是一种注意力(资源)分配机制,在某个特定时刻,总是重点关注跟它相关的内容,其他内容则进行选择性忽视。就像下图,在翻译“Knowledge”时,只会关注“知识”.这样的对齐能让文本翻译或者摘要生成更具针对性。

 

RNNLSTM单元,由于每个词是按顺序输入网络的,所以会记录文章的序列信息。因此,大部分的NLP任务,都是采用的RNN架构。但是这也限制了网络训练及摘要生成的速度,因为RNN必须一个个输入,一个个生成,无法并行计算。2016Facebook AI ResearchFAIR)发表了《A Convolutional Encoder Model for Neural Machine Translation》,对Encoder部分采用似乎不擅长处理序列信息的卷积网络(CNN)来实现,结果在翻译、摘要任务中,也达到了当年的最高水准;

20175月,还是FAIR,发布了《Convolutional Sequence to Sequence Learning》,第一次实现了EncoderDecoder都采用CNN单元,使得网络在训练阶段,可以并行计算,效率进一步提升。同时引入了Multi-step Attention(多跳注意),相比之前只在最后一层生成翻译时往回看,多跳注意使得Decoder阶段生成每一层的语义向量时都往回看,进一步提升了准确度。同时还有一些其他的Trick:引入单词的位置信息,残差网络,计算Attention时候对高层语义信息和低层细节信息,兼收并取等。最后在生成翻译和摘要时,速度相比之前最快的网络,提升了近9倍。同时在WMT-14英德、英法两项的单模型训练结果中,BLEU得分达到了25.1640.46,其中英法翻译也是迄今为止的最高得分。

时隔一个月,176月,Google团队发布了名为《Attention Is All You Need》的文章,即不用CNNRNN单元,只用Self-AttentionEncoder-Decoder Attention,就完全实现了端到端的翻译任务。并且在WMT-14英德、英法翻译任务中,BLEU值达到了28.441.0的高分。因为同样可以并行计算,模型的训练及生成速度也有所提升。Self-Attention相比于之前的模型更加关注句子的内部结构,也就是word-pairs的信息,附图是论文中Attention可视化的结果,可以发现仅在源文端,模型便学习到了“making more difficult”的word-pairs信息。

同理对目标端,模型也会单独学习句子的内部结构信息。之后利用Encoder-Decoder Attention建立源文和目标词组、句子的对应关系。相比于FAIR 的卷积模型到很高层才能看到句子的完整信息,Self-Attention在第一层便巧妙地建立了每个词和整个句子的联系,同时位置编码采用三角函数的相对位置法表示,理论上可以泛化到训练中未见过的更长长度句子的翻译中。目前Self-Attention仅用在了翻译任务中,但这样的思想,在文本摘要自动生成的任务中,也是可以参照的。

(Google Transformer模型的拆解)

总结:

从传统的Textrank抽取式,到深度学习中采用RNNCNN单元处理,再引入AttentionSelf-Attention、机器生成摘要的方式,这些跟人类思维越来越像,都建立在对整段句子的理解之上。与此同时生成摘要的效果,也常常让我们惊艳。

但文本摘要自动生成依然还有很多难题,比如如果段落太长,那么机器对段落的理解时间就要很长, 而过长的时间会导致机器对段落信息的记忆的损失。而且深度学习非常依赖有标签的样本,标注工作也是一笔非常大的开销。

总的来说,文本摘要自动生成是个非常具有前景但也非常具有挑战性的技术。

 

联系我们,关注图鸭微信公众号

© 著作权归作者所有

共有 人打赏支持
图鸭科技研究员

图鸭科技研究员

粉丝 29
博文 15
码字总数 28198
作品 1
闵行
干货|当深度学习遇见自动文本摘要,seq2seq+attention

随着近几年文本信息的爆发式增长,人们每天能接触到海量的文本信息,如新闻、博客、聊天、报告、论文、微博等。从大量文本信息中提取重要的内容,已成为我们的一个迫切需求,而自动文本摘要(...

mbx8x9u
05/29
0
0
腾讯知文团队 3 篇 IJCAI 2018 一作长文解读

雷锋网(公众号:雷锋网) AI 科技评论按:本文经微信公众号“腾讯知文”授权转载。 备受关注的人工智能领域顶级国际会议 IJCAI,2018 年将于 7 月 13 日至 19 日在瑞典斯德哥尔摩举行。IJCAI...

奕欣
04/20
0
0
IJCAI 2018 | 腾讯知文等提出新型生成式摘要模型:结合主题信息和强化训练生成更优摘要

  选自arXiv   作者:Li Wang、Junlin Yao、Yunzhe Tao、Li Zhong、Wei Liu、Qiang Du   机器之心编译   参与:Panda      让机器能根据文章的主题思想生成人类能够读懂的文本摘...

机器之心
05/18
0
0
机器翻译不可不知的Seq2Seq模型

前 言 Seq2Seq,全称Sequence to Sequence。它是一种通用的编码器——解码器框架,可用于机器翻译、文本摘要、会话建模、图像字幕等场景中。Seq2Seq并不是GNMT(Google Neural Machine Trans...

机器学习算法工程师
05/19
0
0
DL的实践变革之路 盘点TOP15的典型应用

  【IT168 资讯】深度学习正在改变我们看待技术的方式。人工智能(AI)及其分支机构(即机器学习(ML)和深度学习)目前有很多值得的兴奋点。      凭借大量的计算能力,机器现在可以实时识别...

it168网站
04/28
0
0
孔晓泉:自然语言处理应用和前沿技术回顾

  雷锋网(公众号:雷锋网)AI 研习社按:伴随着近几年的机器学习的热潮,自然语言处理成为了目前炙手可热的研究方向,同时也是 Google、Microsoft、Facebook、Baidu、Alibaba 等各大公司投入...

中国机器人
06/06
0
0
GAN要取代深度学习了?请不要慌!

计算机视觉顶会盛会CVPR 2018召开在即,从官方现在接收的论文类型来看,这届会议展现出了一个奇怪的现象:生成对抗网络GAN,正在成为新的“深度学习”。MMP,深度学习还没学会,难道我又要被...

【方向】
06/09
0
0
使用深度学习检测DGA(域名生成算法)——LSTM的输入数据本质上还是词袋模型

from:http://www.freebuf.com/articles/network/139697.html DGA(域名生成算法)是一种利用随机字符来生成C&C域名,从而逃避域名黑名单检测的技术手段。例如,一个由Cryptolocker创建的DGA...

桃子红了呐
2017/11/17
0
0
孔晓泉:自然语言处理应用和前沿技术回顾 | 分享总结

雷锋网(公众号:雷锋网) AI 研习社按:伴随着近几年的机器学习的热潮,自然语言处理成为了目前炙手可热的研究方向,同时也是 Google、Microsoft、Facebook、Baidu、Alibaba 等各大公司投入巨...

刘鹏
06/04
0
0
水军要失业?AI刷好评泛滥后,我们还凭什么相信网络口碑?

  如今,随着网上各类信息平台的发展丰富,很多用户在消费的时候已经习惯先看看网上的评论。比如,在网上购买一件衣服,除了会阅读商家的商品描述,还会浏览以往购买者留下的评论;再如,外...

深度学习
2017/12/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【面试题】盲人坐飞机

有100位乘客乘坐飞机,其中有一位是盲人,每位乘客都按自己的座位号就坐。由于盲人看不见自己的座位号,所以他可能会坐错位置,而自己的座位被占的乘客会随便找个座位就坐。问所有乘客都坐对...

garkey
今天
0
0
谈谈神秘的ES6——(二)ES6的变量

谈谈神秘的ES6——(二)ES6的变量 我们在《零基础入门JavaScript》的时候就说过,在ES5里,变量是有弊端的,我们先来回顾一下。 首先,在ES5中,我们所有的变量都是通过关键字var来定义的。...

JandenMa
今天
1
0
arts-week1

Algorithm 594. Longest Harmonious Subsequence - LeetCode 274. H-Index - LeetCode 219. Contains Duplicate II - LeetCode 217. Contains Duplicate - LeetCode 438. Find All Anagrams ......

yysue
今天
0
0
NNS拍卖合约

前言 关于NNS的介绍,这里就不多做描述,相关的信息可以查看NNS的白皮书http://doc.neons.name/zh_CN/latest/nns_background.html。 首先nns中使用的竞价货币是sgas,关于sgas介绍可以戳htt...

红烧飞鱼
今天
1
0
Java IO类库之管道流PipeInputStream与PipeOutputStream

一、java管道流介绍 在java多线程通信中管道通信是一种重要的通信方式,在java中我们通过配套使用管道输出流PipedOutputStream和管道输入流PipedInputStream完成线程间通信。多线程管道通信的...

老韭菜
今天
0
0
用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
今天
1
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
今天
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部