CH2-NLG应用之【摘要生成】


任务:给定输入文本 x x ,输出也是一段文本 y y ,但是长度更短,而且包含了输入文本的主要信息。

摘要可以是单文档的,也可以是多文档

  • 单文档是说从一个文档中生成一个摘要
  • 多文档是说从多个文档 x 1 , . . . , x n x_1,...,x_n 中抽出一个摘要。通常这些文档在内容上是有重合的,比如新闻对同一事件的报道。

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-gram的长度, R e f e r e n c e S u m m a r i e s Reference Summaries 表示参考摘要(标准), C o u n t m a t c h ( g r a m n ) Count_{match}(gram_n) 表示候选摘要和参考摘要中同时出现n-gram的个数, C o u n t ( g r a m n ) Count(gram_n) 则表示参考摘要中出现的n-gram个数。

  从上述公式也可以看出“召回”的含义,分子可以看作“检出的相关文档数目”,即系统生成摘要与标准摘要相匹配的N-gram个数,分母可以看作“相关文档数目”,即标准摘要中所有的N-gram个数。

虽然ROUGEBLEU 两者都是基于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.
  这里, r r 为参考翻译的句子长度, c c 是机器翻译出来的句子长度。如果 c r c \le 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针对的则考量精确度。一般来说,在机器翻译任务中,我们更看重的是翻译的准确与否
  • ROUGEBLEU都基于n-gram,但是前者是针对每一个$n$都会计算,而后者则是分别计算然后取一个平均或其他方式的综合计算。常用的ROUGE分值如下:

1.5 基于神经网络的摘要生成

2015年,首次提出利用seq2seq做摘要生成的论文,并将单文档生成式摘要视为机器翻译任务,如此一来便可以使用seq2seq+attention机制的机器翻译方法。

在这之后,无数学者对此不断改进:

  • copy机制更加灵活、简单
  • 使用分层或者多级联的注意力机制
  • 从全局或者更高纬度上进行内容选择
  • 利用增强学习方式直接最大化ROUGE或者其他指标(注意这里指标需要是离散的,比如长度)??存疑
  • pre-neural的方法应用到neural系统中,比如基于图算法的内容选择

更多阅读:

摘要生成方面的论文、数据集及代码清单

2018年的一篇关于基于神经网络实现摘要生成的综述

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 distributionvocabulary distribution,不过同时,也会计算一个$0-1$产生概率 , p g e n p_{gen} ,表示从 vocabulary 中产生一个单词的概率,相应的 1 p g e n 1-p_{gen} 就是从输入中 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}^{*} , w s w_{s} , w x w_x 是向量, b p t r b_{ptr} 是标量,这些参数都是学习得到的。 σ \sigma s i g m o i d sigmoid 函数。 p g e n p_{gen} 可以看做是一种控制开关,可以soft的在两种模式之间切换生成一个词的方式:是从词表中以 P v o c a b P_{vocab} 的概率采样,还是对注意力分布 a t a_{t} 进行采样,这样相当于直接从输入中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}

  如果 w w 是OOV,那么 P v o c a b = 0 P_{vocab}=0 ,如果 w w 没有在输入中出现,那么 i : w i = w a i t = 0 \sum_{i:w_{i}=w}a_{i}^{t}=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),


最后将两种方法联合使用,得到了最好的效果。

参考资料

徐阿衡

常见NLP评估方法大整理

发布了120 篇原创文章 · 获赞 35 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/u012328476/article/details/104100535
今日推荐