深度之眼Paper带读笔记NLP.19:指针生成网络

前言

Get To The Point:Summarization with Pointer-Generator Networks
融合seq2seq和pointer network的指针生成网络
作者:Abigail See
单位:Stanford University
发表会议及时间:ACL2017
在线LaTeX公式编辑器
a.Seq2seq
NLP中的一类任务就是序列生成,指的是让神经网络按序生成符合语法规则的自然语言文本。目前的序列生成任务大都基于seq2seq框架。掌握基础的seq2seq结构,以及在seq2seq中加入attention的改进版结构。
b. 文本摘要
文本摘要是目前很火热的研究方向,主要研究如何将长文本浓缩为短文本,涉及两类主要方法,第一类的抽取式摘要,第二类是生成式摘要。

第一课 论文导读

摘要简介

随着近几年文本信息的爆发式增长,人们每天接触到海量的文本信息,如新闻、博客、聊天、报告、论文、微博等。从大量文本信息中提取重要的内容,已成为我们的一个迫切需求,而自动文本摘要(automatic text summarization)则提供了一个高效的解决方案。
摘要是“一段从一份或多份文本中提取出来的文字,它包含了原文本中的重要信息,其长度不超过或远少于原文本的一半”。自动文本摘要旨在通过机器自动输出简洁、流畅、保留关键信息的摘要。
抽取式:抽取式摘要判断原文本中重要的句子,抽取这些句子成为一篇摘要。
生成式:应用先进的自然语言处理的算法,通过转述、同义替换、句子缩写等技术,生成更凝练简洁的摘要。
抽取必生成简单。

抽取式文本摘要

在抽取式摘要中,抽取一段文本中表示重点内容的单词子集,并结合起来生成摘要。我们可以将抽取式摘要看作是一支荧光笔-从源文本中抽取主要信息
在这里插入图片描述

基于TextRank的抽取式摘要

无监督
1.把所有文章整合成文本数据
2.把文本分割成单个句子
3.为每个句子生成向量表示
4.计算句子向量间的相似性并存放在矩阵中
5.将相似矩阵转换为以句子为节点、相似性得分为边的图结构,用于句子TextRank计算
6.一定数量的排名最高的句子构成最后的摘要。
在这里插入图片描述

基于聚类的抽取式摘要

无监督式抽取
1.将文章中的句子视为一个点,按照聚类的方式完成摘要。
2.将文章中的句子使用Skip thought vectors 进行编码,得到句子级别的向量表示。
3.使用K均值聚类进行句子聚类,得到N个类别。
4.最后从每个类别中,选择距离质心最近的句子,得到N个句子,作为最终摘要。
在这里插入图片描述

基于序列标注的抽取式摘要

有监督式抽取
1.为原文中的每一个句子打一个二分类标签(0或1),0代表该句不属于摘要,1代表该句属于摘要。最终摘要由所有标签为1的句子构成。
2.使用双向GRU分别建模词语级别和句子级别的表示
3.蓝色部分为词语级别表示,红色部分为句子级别表示,对于每一个句子表示,有一个0、1标签输出,指示其是否是摘要。
在这里插入图片描述

文本摘要发展历史

趋势:语义连贯性、灵活性
保证语法、句法正确
内容浓缩性
在这里插入图片描述

生成式摘要

序列到序列结构

生成式摘要实际上就是seq2seq模型。
Sequence-to-sequence(seq2seq)模型,顾名思义,其输入是一个序列,输出也是一个序列,例如输入是英文句子,输出则是翻译的中文。seq2seq 可以用在很多方面:机器翻译、QA系统、文档摘要生成、Image Captioning(图片描述生成器)。
下面两个图是最早期最简单的seq2seq模型:
在这里插入图片描述
在这里插入图片描述
加入注意力的序列到序列(Attention in seq2seq)
这里的每一个时刻的c是不一样的。
在这里插入图片描述
在这里插入图片描述
1.未登录词问题(OOV)
2.生成重复

两类方法对比

抽取式的摘要:可以无监督学习,从原文中选择句子。
优点:无监督进行,成本低;从原文中选择句子、保证语法正确
缺点:很不灵活、内容不一定精简
生成式的摘要:有监督方法训练,自动生成
优点:灵活性高,内容精简
缺点:不能解决未登录词问题、语法不一定正确
Pointer:如何结合两种方法?

前期知识储备

文本摘要
掌握文本摘要的任务,熟悉其发展历程
抽取式摘要
掌握TextRank的基本思想(很重要,面试常用)
生成式摘要
掌握加入注意力机制的序列到序列模型

第二课论文精读

了解Pointer network
了解模型的设计动机,以及加入pointer和Coverage机制后对模型的影响

动机

就是上面对比抽取式的摘要和生成式的摘要方法中提出来的:
如何结合两种方法。

模型

基线模型

这个文章对比的基线模型实际上就是在导读中提到的基于Attention的seq2seq模型。左下角的Source Text就是输入文档,对其编码得到隐状态,还有一个解码端(右下角黄色部分),解码端会根据当前时刻的输出(图中是Germany)计算下一个时刻的输出是什么,是用当前时刻的输出隐状态当做query,来和输入的隐状态算一个attention,得到一个表示,这个表示就是输出对输入内容的一个感知,然后进行解码。具体公式如下:
e i t = v T t a n h ( W h h i + W s s t + b t ) e_i^t=v^Ttanh(W_hh_i+W_ss_t+b_t) eit=vTtanh(Whhi+Wsst+bt)
a t = s o f t m a x ( e t ) a_t=softmax(e_t) at=softmax(et)
h t ∗ = ∑ i a i t h i h_t^*=\sum_ia_i^th_i ht=iaithi
P v o c a b = s o f t m a x ( V ′ ( V [ s t ; h t ∗ ] + b ) + b ′ ) P_{vocab}=softmax(V'(V[s_t;h_t^*]+b)+b') Pvocab=softmax(V(V[st;ht]+b)+b)
P ( w ) = P v o c a b ( w ) P(w)=P_{vocab}(w) P(w)=Pvocab(w)
l o s s t = − l o g ( P ( w ∗ ) ) loss_t=-log(P(w^*)) losst=log(P(w))
l o s s = 1 T ∑ t = 0 T l o s s t loss=\frac{1}{T}\sum_{t=0}^{T}loss_t loss=T1t=0Tlosst
其中 s t s_t st是当前时刻要解码的隐状态
s i s_i si是输入端的第i个词的隐状态
需要计算的是当前时刻t的输入端的第i个词对当前时刻的贡献度为多少,计算方式是把 s t s_t st s i s_i si按第一个公式中的分别乘上一个矩阵然后相加,求tanh后结果是一个向量,然后再和 v T v^T vT做点积得到一个值,这个值就是贡献值。
P v o c a b P_{vocab} Pvocab维度是词表大小。
在这里插入图片描述
原文的基线模型提取摘要的实例:
Original Text(truncated): lagos, nigeria(cnn)a day after winning nigeria’s presidency, muhammadu buhari told cnn’s christiane amanpour that he plans to aggressively fight corruption that has long plagued nigeria and go after the root of the nation’s unrest. buhari said he’ ll"rapidly give attention"to curbing violence in the northeast part of nigeria, where the terrorist group boko haram operates. by cooperating with neighboring nations chad, cameroon and niger, he said his administration is confident it will be able to thwart criminals and others contributing to nigeria’s instability.for the first time in nigeria’s history, the opposition defeated the ruling party in democratic elections. buhari defeated incumbent goodluck jonathan by about 2 million votes, according to nigeria’s independent national electoral commission. the win comes after a long history of military rule, coups and botched attempts at democracy in africa’s most populous nation.

Baseline Seq2Seq +Attention: UNK UNK says his administration is confident it will be able to destabilize nigeria’s economy. UNK says his administration is confident it will be able to thwart criminals and other nigerians.he says the country has long nigeria and nigeria’s economy.

指针网络

解决未登录词问题,未登录词肯定在原文中出现过。作者就想把这些词从原文中copy过来,而不是从有限的词表中进行解码,具体做法如下,前面的计算三个小步骤都一样,然后计算一个生成器概率 p g e n p_{gen} pgen,这个概率是指 h t ∗ h_t^* ht是从decoder端解码还是直接从原文输入把词拿过来。第四个公式中 x t x_t xt表示的是当前时刻的输入词。
第五个公式中的 1 − p g e n 1-p_{gen} 1pgen代表直接copy原文的概率,乘上的是attention的得分。
e i t = v T t a n h ( W h h i + W s s t + b t ) e_i^t=v^Ttanh(W_hh_i+W_ss_t+b_t) eit=vTtanh(Whhi+Wsst+bt)
a t = s o f t m a x ( e t ) a_t=softmax(e_t) at=softmax(et)
h t ∗ = ∑ i a i t h i h_t^*=\sum_ia_i^th_i ht=iaithi
p g e n = σ ( w h ∗ T h t ∗ + W s T s t + W x T x t + b p t r ) p_{gen}=\sigma(w_{h^*}^Th_t^*+W_s^Ts_t+W_x^Tx_t+b_{ptr}) pgen=σ(whTht+WsTst+WxTxt+bptr)
P ( w ) = p g e n P v o c a b ( w ) + ( 1 − p g e n ) ∑ i : w i = w a i t P(w)=p_{gen}P_{vocab}(w)+(1-p_{gen})\sum_{i:w_i=w}a_i^t P(w)=pgenPvocab(w)+(1pgen)i:wi=wait
l o s s t = − l o g ( P ( w ∗ ) ) loss_t=-log(P(w^*)) losst=log(P(w))
l o s s = 1 T ∑ t = 0 T l o s s t loss=\frac{1}{T}\sum_{t=0}^{T}loss_t loss=T1t=0Tlosst
在这里插入图片描述

覆盖率机制Coverage mechanism

解决decoder产生重复的片段句子。之前已经关注过某个词,那么当前则少关注一点这个词,以形成语义的多样化。具体做法是用 c t = ∑ t ′ = 0 t − 1 a t ′ c^t=\sum_{t'=0}^{t-1}a^{t'} ct=t=0t1at来计算当前时刻的之前所有时刻(t-1)该词被关注过的权重(得分或次数),并把该权重作为decoder的计算的一个输入(即: w c c i t w_cc_i^t wccit),来隐含的实现该功能。
e i t = v T t a n h ( W h h i + W s s t + w c c i t + b t ) e_i^t=v^Ttanh(W_hh_i+W_ss_t+w_cc_i^t+b_t) eit=vTtanh(Whhi+Wsst+wccit+bt)
a t = s o f t m a x ( e t ) a^t=softmax(e^t) at=softmax(et)
h t ∗ = ∑ i a i t h i h_t^*=\sum_ia_i^th_i ht=iaithi
p g e n = σ ( w h ∗ T h t ∗ + w s T s t + w x T x t + b p t r ) p_{gen}=\sigma(w_{h^*}^Th_t^*+w_s^Ts_t+w_x^Tx_t+b_{ptr}) pgen=σ(whTht+wsTst+wxTxt+bptr)
P ( w ) = p g e n P v o c a b ( w ) + ( 1 − p g e n ) ∑ i : w i = w a i t P(w)=p_{gen}P_{vocab}(w)+(1-p_{gen})\sum_{i:w_i=w}a_i^t P(w)=pgenPvocab(w)+(1pgen)i:wi=wait
l o s s t = − l o g ( P ( w ∗ ) ) loss_t=-log(P(w^*)) losst=log(P(w))
l o s s − 1 T ∑ t = 0 T l o s s t loss-\frac{1}{T}\sum_{t=0}^{T}loss_t lossT1t=0Tlosst
以上两个机制:指针网络和覆盖率机制实际上是独立的。作者还发现,如果对loss加上约束,收敛得会更加好。
c o n v l o s s t = ∑ i m i n ( a i t , c i t ) convloss_t=\sum_imin(a_i^t,c_i^t) convlosst=imin(ait,cit)
l o s s t = − l o g ( P ( w ∗ ) ) + λ c o n v l o s s t loss_t=-log(P(w^*))+\lambda convloss_t losst=log(P(w))+λconvlosst

实验结果

在这里插入图片描述
其中的lead-3是新闻语料,新闻一般前面三句话是最重要的,最能概括新闻主旨的句子。
在这里插入图片描述
接前面抽取摘要的例子,用本文方法抽取的结果不在出现UNK词。而且第二抽取结果中出现了两处完全相同的短语,在最后的结果中也没有了(避免重复表达)
Pointer-Gen: muhammadu buhari says he plans to aggressively fight corruption in the northeast part of nigeria. he says he’ ll "rapidly give at-tention"to curbing violence in the northeast part of nigeria. he says his administration is confident it will be able to thwart criminals.
Pointer-Gen +Coverage: muhammadu buhari says he plans to aggressively fight corruption that has long plagued nigeria. he says his administration is confident it will be able to thwart criminals. the win comes after a long history of military rule, coups and botched attempts at democracy in africa’s most populous nation.

讨论和总结

A.提出一种新的摘要生成方法
1.指针网络解决未登陆词
2.覆盖率机制解决了词重复出现问题
B.性能提升十分明显
C.对后续工作有很大启发:实验分析十分详尽

作业

为了加入pointer,作者进行了哪些改进?
如果让你来设计pointer,你还有哪些设计方式?

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值