1. 总述
【论文名称】A Neural Attention Model for Abstractive Sentence Summarization
【论文地址】https://arxiv.org/pdf/1509.00685.pdf
【开源model代码】https://github.com/facebookarchive/NAMAS
【发表时间】2015-09
【主要内容】本文是采用的生成式的方式解决文本摘要任务,主要使用Attention+LM构建摘要提取模型。
2.文本摘要分类
文本摘要的目标是给定一段文本,有个词,输出文本摘要,长度为,。文本摘要有三种实现方式:
Abstractive: arbitary transformation
生成式,从源文档中抽取句子并进行改写,形成摘要。
Extractive: deletion and reordering
抽取式,摘要句子完全从源文档中抽取形成。
,其中Compressive: deletion-only
压缩,通过对源文本的删除操作产生目标文本。
,其中,且
虽然生成式的摘要提取方式较为困难,但缺乏硬约束,系统可以自由地生成语句,使得它适合更广泛的数据集。本文就是一篇生成式的文章,目标就是找到使得分函数最优的结果:
其中是一个窗口c内的上文内容:
3.模型结构
模型结构如a所示,红色框的部分可以当做Encoder模块,是一个NNLM(Neural Network Language Model),enc是含有Attention机制的Decoder模块,内部结构如图b所示。
3.1Decoder
Decoder模块实质是一个Neural Language Model,其中是窗口c内Decoder已经得到的上下文,E是一个Embedding Matrix,计算过程如下所示:
其中可以理解为的向量形式,经过一层的非线性变换,激活函数为tanh函数得到h
3.2 Encoder
Encoder部分主要是为了编码输入文本,作者介绍了三种实现方式:
-
Bag-of-Words Encoder
词袋模型是最简单的一个模型,这个方式将输入的句子用词袋模型降维到H,但是却忽略了词与词之间的顺序。公式表示为:
其中F是Embedding Matrix
Convolutional Encoder
通过卷积来对输入进行编码,改善了Bag-of-Words的不足,允许单词之间相互影响,但是没有使用上下文Attention-Based Encoder
Bag-of-words缺少语序信息,Convolutional又需要编码整个序列(长序列不友好),所以根据Bahdanau Attention机制,提出一种Encoder方式,具体实现方式是:
这里的G和F都是分别是输入和输出的Embedding Matrix,P是需要训练的attention参数,p是attention得到的权重向量。
这里有个小处理, 是经过局部归一化后的向量,Q是一个平滑窗口,这里我理解的是窗口Q内的的词向量按位求平均。
4 训练及优化
4.1 数据处理
作者使用的是Gigaword数据作为训练集,测试集作者使用的是DUC-2014以及Gigaword随机保留的子集。
在训练之前,作者对数据进行了以下处理:
- 删除没有结束符的文摘对
- 删除标题署名和其他无关标志
- 删除问号、冒号等标点符号
- PTB词语拆分
- 大写转小写
- 数字替换成特殊符号
- 出现次数小于5的词替换成<unk>
- 移除DUC评价时用过的文章
4.2 优化
每篇文章的第一句话以及每篇文章的标题配对组成输入文摘对,对于给定的输入文摘对,优化函数为:
5.结论
最终的实验结果如下,作者提出的ABS模型在两个测试集上都获得了state of art的好成绩:
总结:本文基于机器翻译的最新发展,Encoder-Decoder架构以及Attention的提出,提出了一种基于Attention的生成式模型。是神经网络用语生成式模型的开篇之作。文章的模型结构并不复杂,推荐阅读。