文章目录
任务:给定输入文本 x x x,输出也是一段文本 y y y,但是长度更短,而且包含了输入文本的主要信息。
摘要可以是单文档的,也可以是多文档。
- 单文档是说从一个文档中生成一个摘要
- 多文档是说从多个文档 x 1 , . . . , x n x_1,...,x_n x1,...,xn中抽出一个摘要。通常这些文档在内容上是有重合的,比如新闻对同一事件的报道。
1.1 单文档数据集介绍
在单文档摘要生成任务中,不同的数据集来源不同,数据集中文本的长度和风格也不一样。一些常用的数据集及任务如下表所示:
数据集 | 输入 | 输出 | 备注 |
---|---|---|---|
Gigaword | 每一篇新闻报道的第一句或者前两句话 | 新闻标题。 | 该任务也称为 句子压缩 |
LCSTS(微博中文) | 段落 | 句子摘要 | |
NYT, CNN/DailyMail | 新闻 | (多)句子摘要 | |
Wikihow | 整个how-to类型的文章 | 句子摘要 |
句子简写也是一种NLG的应用,但是和摘要生成还是略有不同,主要是以更短、更简单的方式对源句子进行改写。
这类任务也有自己的数据集:
数据集 | 输入 | 输出 |
---|---|---|
Simple Wikipedia | 标准对的Wikipedia句子 | 简版 |
Newsela | 新闻 | 适于儿童阅读版 |
1.2 摘要生成两大策略
-
抽取式:从源句子中选择若干部分组成摘要,一般来说比较简单,但也有局限性(不能组成段落)
-
生成式:用语言模型来生成文本,一般来说更难,但是生成的文字更像人写的。
1.3 Pre-neural 摘要
这种摘要生成方式大多是抽取式生成,主要分为三个模块:
- 内容选择:选择哪些句子
- 信息排序:将选择的句子进行排序
- 句子实现:对句子进行一些编辑操作,比如简化、去冗余、连贯性处理等
流程图如下所示:
Pre-neural 中内容选择的算法
-
句子打分策略可以参考:关键词出现情况,比如利用
tf-idf
进行打分;其他特征,如句子在文档中出现的位置 -
基于图的算法:将文档视为句子的集合(节点),句子之间用边连。 边的权重正比于句子相似性,利用图算法找到图的中心节点及对应的句子。
1.4 评价指标
摘要生成任务常用ROUGE(Recall-Oriented Understudy for Gisting Evaluation)进行衡量评价,其数学公式如下:
这里,
n
n
n表示n-gram
的长度,
R
e
f
e
r
e
n
c
e
S
u
m
m
a
r
i
e
s
Reference Summaries
ReferenceSummaries表示参考摘要(标准),
C
o
u
n
t
m
a
t
c
h
(
g
r
a
m
n
)
Count_{match}(gram_n)
Countmatch(gramn)表示候选摘要和参考摘要中同时出现n-gram
的个数,
C
o
u
n
t
(
g
r
a
m
n
)
Count(gram_n)
Count(gramn)则表示参考摘要中出现的n-gram
个数。
从上述公式也可以看出“召回”的含义,分子可以看作“检出的相关文档数目”,即系统生成摘要与标准摘要相匹配的N-gram
个数,分母可以看作“相关文档数目”,即标准摘要中所有的N-gram
个数。
虽然ROUGE
和BLEU
两者都是基于n-gram重合度的评价指标,但是而这还是有区别的:
ROUGE
没有brevity penalty
(简称BP
),而BLEU
是有这一项的。先回顾一下BLEU
的计算方式:将翻译结果与其相对应的几个参考翻译作比较,算出一个综合分数,分数越高说明机器翻译得越好。可以看到,如果我的翻译结果比较短,大部分的结果都会出现在参考翻译中,反而会更容易得到一个高精度的评价值。为了避免这种情况,会在评价指标中一个调整因子:
B
P
=
{
1
if
c
>
r
e
1
−
r
/
c
if
c
≤
r
B P=\left\{\begin{array}{ll}{1} & {\text { if } c>r} \\ {e^{1-r / c}} & {\text { if } c \le r}\end{array}\right.
BP={1e1−r/c if c>r if c≤r
这里,
r
r
r为参考翻译的句子长度,
c
c
c是机器翻译出来的句子长度。如果
c
≤
r
c \le r
c≤r, 得分就会乘以一个比1小的数,就是“惩罚因子”。可以看到这种评价方式 不关心语法,只关心内容分布,适用于衡量数据集量级的表现,在句子级别的表现不佳。
“BLEU is designed to approximate human judgement at a corpus level, and performs badly if used to evaluate the quality of individual sentences.”——wikipedia
ROUGE
只针对召回进行考量,而BLEU
针对的则考量精确度。一般来说,在机器翻译任务中,我们更看重的是翻译的准确与否ROUGE
和BLEU
都基于n-gram
,但是前者是针对每一个$n$
都会计算,而后者则是分别计算然后取一个平均或其他方式的综合计算。常用的ROUGE
分值如下:
1.5 基于神经网络的摘要生成
2015年,首次提出利用seq2seq
做摘要生成的论文,并将单文档生成式摘要视为机器翻译任务,如此一来便可以使用seq2seq+attention机制
的机器翻译方法。
在这之后,无数学者对此不断改进:
- 让
copy
机制更加灵活、简单 - 使用分层或者多级联的注意力机制
- 从全局或者更高纬度上进行内容选择
- 利用增强学习方式直接最大化
ROUGE
或者其他指标(注意这里指标需要是离散的,比如长度)??存疑 - 将
pre-neural
的方法应用到neural
系统中,比如基于图算法的内容选择
更多阅读:
1.5.1 copy机制
Seq2seq+attention
的方法可以很好的保证输出文本的流畅性,但是不能保证在细节方面的准确性。而copy
机制通过attention
可以保证词或者短语这些关键点准确的出现在输出文本中,这对于摘要生成是非常重要的。引入copy
机制还让我们可以同时使用抽取、生成的方法进行NLG。
copy机制的若干变种:
- Language as a Latent Variable: Discrete Generative Models for Sentence
Compression, Miao et al, 2016 https://arxiv.org/pdf/1609.07317.pdf - Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond,
Nallapati et al, 2016 https://arxiv.org/pdf/1602.06023.pdf - Incorporating Copying Mechanism in Sequence-to-Sequence Learning, Gu et al,
2016 https://arxiv.org/pdf/1603.06393.pdf
这里以Summarization with Pointer-Generator Networks给大家举例说明copy
机制原理。
上图展示了的是解码器在第三个时间步,预测Germany beat
后面一个单词的情况,像基础的seq2seq+attention模型一样,我们会计算一个 attention distribution
和 vocabulary distribution
,不过同时,也会计算一个$0-1$
产生概率 ,
p
g
e
n
p_{gen}
pgen,表示从 vocabulary
中产生一个单词的概率,相应的
1
−
p
g
e
n
1-p_{gen}
1−pgen 就是从输入中 copy
一个单词的概率
p_{\mathrm{gen}}=\sigma\left(w_{h^{*}}^{T} h_{t}^{*}+w_{s}^{T} s_{t}+w_{x}^{T} x_{t}+b_{\mathrm{ptr}}\right)
其中 w h ∗ w_{h}^{*} wh∗, w s w_{s} ws, w x w_x wx是向量, b p t r b_{ptr} bptr是标量,这些参数都是学习得到的。 σ \sigma σ是 s i g m o i d sigmoid sigmoid函数。 p g e n p_{gen} pgen可以看做是一种控制开关,可以soft的在两种模式之间切换生成一个词的方式:是从词表中以 P v o c a b P_{vocab} Pvocab的概率采样,还是对注意力分布 a t a_{t} at进行采样,这样相当于直接从输入中copy一个词
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)+\left(1-p_{g e n}\right) \sum_{i: w_{i}=w} a_{i}^{t} P(w)=pgenPvocab(w)+(1−pgen)i:wi=w∑ait
如果 w w w是OOV,那么 P v o c a b = 0 P_{vocab}=0 Pvocab=0,如果 w w w 没有在输入中出现,那么 ∑ i : w i = w a i t = 0 \sum_{i:w_{i}=w}a_{i}^{t}=0 ∑i:wi=wait=0。这样就可以避免OOV的问题,而之前模型都是将词限制在预设定的词表中。
copy
机制的不足:
TODO,还没有看懂
1.6 内容选择的优化
pre-neural
的摘要生成系统中,会通过将整个NLG分为三个阶段:写什么、怎么写、优化。在标准的seq2seq+attention
的摘要生成系统中,会将“写什么”和“优化”糅杂在一起完成:在解码的每一个时间步中,会进行词粒度
(word-level)的内容选择。但是这样的方式其实效果会很差,因为缺乏全局的选择策略。
一种改进方式是自底向上的摘要生成!
论文提到的方法很简单,
在内容选择阶段利用序列标注模型对每个word词打标签:包含还是不包含;在自底向上的注意力阶段,如果一个词被打上不包含的标签,那么模型就不会对齐进行attention操作。
这种方法简单有效,可以有效避免对长句子的过渡copy问题。
1.7 和增强学习的联手
2017年,提出了一篇利用深度增强网络进行抽取式摘要生成的[论文]( https://arxiv.org/pdf/1705.04304.pdf
34 Blog post: https://www.salesforce.com/products/einstein/ai-research/tl-dr-reinforced-model-abstractive-summarization/)
核心观点是利用增强学习直接优化ROUGE-L
.而传统的最大似然(MaximumLikelihood,简称ML)的训练方法不能直接优化该函数是因为函数不可导。
一个有趣的现象是,利用RL
替代ML
之后,ROUGE
得分变高了(table1,2),
但是人工评分变低了(table5),
最后将两种方法联合使用,得到了最好的效果。