论文笔记 --《Bottom-Up Abstractive Summarization》

1,011 阅读5分钟

来源: EMNLP 2018
关键词:NLG,Bottom-Up, Text-Summarization


1.背景及问题描述(Abstract)

文本摘要是需要从长文本上生成内容相关的文本摘要。 基于神经网络的生成式文本摘要发方法可以生成非常通顺的结果,但是他们却不擅长进行内容选择(content selection)。本篇论文引入一个简单的内容选择器(content selector),首先来决定文档中哪部分是有效的,然后只需要在这部分句子上做生成摘要。实验表明,这种方法可以提升句子压缩的质量,同时产生流畅的摘要。并且,这种两部走的办法要比end-to-end的模型要简单和高效。 此外,内容选择器(content selector)的训练只需要非常少的句子就能取得比较好的效果,所以迁移到其他模型是非常容易的。

2.已有的解决方案

目前生成式文本摘要表现比较好的模型是使用 pointer-generator models实现的end-to-end模型。

3.解决方案概述

作者提出的 Bottom-Up方案就是将一般的end-to-end模型分两部走,第一步从长文档中选择可能相关的部分,然后在选择的部分执行常规的摘要模型。作者的思路是从CV中得到的,在做物体识别时,先在图像上画框确定范围,然后只需要关注在这个框里面。

其中内容选择器的实现就是看作一个序列标注问题(sequence-tagging problem),作者只使用Elmo词向量就可以实现超过 60% recall 和50% precision的模型。

把第一步的结果引入到后面的摘要模型中,只需要使用masking机制来限制从原文中copy单词。

图2

1.Bottom-Up Attention

首先定义文本摘要的一般定义:对于文本对(X,Y)(X,Y),其中,xXx\in{X}表示source 序列x1,...,xnx_1,...,x_nyYy\in{Y}表示生成的摘要序列y1,...,ymy_1,...,y_m,其中m<<nm << n

作者是把内容选择当作序列标注问题来处理,那么第一步就是需要构造标注数据。作者的处理办法是,文本摘要数据集通常是文档-摘要对,所以作者将摘要与文档对其来构造监督数据。 详细的,对于文档中的token xix_i被选中,当:

  1. 它在一段尽可能长的子序列s=xij:i:i+ks=x_{i-j:i:i+k}中,同时 sxs\in{x}并且sys\in{y}
  2. 前面不存在与ss相等的序列。

构造好训练数据之后,就是训练一个常规的序列标注模型,作者输入使用ELMo训练一个双层的LSTM模型,然后计算每个位置被选中的概率。

2.Bottom-Up Copy Attention

作者发现encoder直接对原本编码可以有更好的效果。所以,在训练阶段,分别训练pointer-generator model 和内容选择器 。在推理阶段,首先计算source中所有token的选择概率q1:nq_{1:n},然后用它来影响copy模型中的copy概率,使得没有被选中的token不会被copy。令ajia^i_j表示在step j对source中iword的copy概率,经过调整之后的概率为,其中ϵ\epsilon是一个阈值,取值在0.1-0.2之间:

公式1

这里注意,因为调整之后的概率分布不再正确,需要重新归一化。

3.End-to-End 方案

“两步走”的思路虽然很简单也很有效,但是作者还是尝试了在一个模型中训练,猜想标准的copy模型可以与内容选择期一起训练的。作者设定了三种模式:

  1. 只有mask。
  2. 多任务学习。使用共享的encoder同时训练序列标注任务和文本摘要任务。但是在预测阶段还是“两步走”的策略。
  3. 交叉训练。在训练过程中,直接将copy概率ajia^i_j与选择概率qiq_i相乘。

4.推理阶段

对于目前长文档的生成网络主要的两个问题:1.生成错误的长度。2.重复词。作者在得分函数中引入两个惩罚:长度惩罚lp(lengthpenalty)lp (length penalty)和覆盖惩罚cp(coveragepenalty)cp(coverage penalty)s(x,y)=logp(yx)/lp(x)+cp(x;y)s(x,y) = \log{p(y|x)}/lp(x) + cp(x;y)

其中,长度惩罚lp(lengthpenalty)lp (length penalty)是为了鼓励产生更长的序列,需要在beam search阶段考虑进去。 2021-01-22 14-22-36屏幕截图.png-7.1kB

覆盖惩罚cp(coveragepenalty)cp(coverage penalty)用来防止过度的重复,作者引入了一种新的方法:

2021-01-22 14-24-25屏幕截图.png-17.1kB

4.结果分析

2021-01-22 14-26-28屏幕截图.png-255.1kB

上图是在CNN-DM上的实验表明:

  1. 作者设计的是那种end-to-end方案没有一种是有效的。
  2. 本文提出的“两步走”的Bottom-Up方法对结果提升比较明显。
  3. 用交叉熵训练的模型好于使用强化学习训练的模型。

2021-01-22 14-30-15屏幕截图.png-58.9kB

上图是内容选择器的训练结果,实验结果表明只需要很少的,大于1000条,句子就能取得不错的效果。

2021-01-22 14-33-11屏幕截图.png-51.5kB

上图是在原始了Point-generator模型基础上,在Inference阶段测试三种惩罚策略的效果,可以发现三种惩罚都非常有效,同时提升三个指标。同时这也表明,原始了Point-generator模型已经可以很好的来解决文本摘要问题,如果在预测阶段加一些处理就更好了!

5.创新点或贡献

  1. 本文提出了一种简单但是有效的内容选择模型来处理文本摘要问题。
  2. 作者发现采用“两部走”的bottom-up方法更有效。
  3. 作者提出的方法对数据依赖很低( data-efficiency),可以很容器迁移到其他数据集中。
  4. 作者介绍了两种惩罚策略,并证明非常有效。

6.个人思考

本篇论文基础模型还是Pointer-Generator Network,非常实用性的改进,主要有三点可以考虑使用:

  1. 使用bottom-up的思路 + “两部走”的策略
  2. 在beam-search阶段加入长度惩罚可以生成更长更丰富的结果序列。
  3. 新的覆盖惩罚用来处理重复问题。