Python建模与NLPAI论文阅读笔记自然语言处理(NLP)

文本摘要-A Neural Attention Model fo

2019-08-11  本文已影响1人  sinnamm

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.文本摘要分类

文本摘要的目标是给定一段文本x,有M个词,输出文本摘要y,长度为NN<M。文本摘要有三种实现方式:


虽然生成式的摘要提取方式较为困难,但缺乏硬约束,系统可以自由地生成语句,使得它适合更广泛的数据集。本文就是一篇生成式的文章,目标就是找到使得分函数最优的结果:
logp(y|x;\theta) \approx \sum_{i=0}^{N-1} logp(y_i+1|x,y_c;\theta)
其中y_c是一个窗口c内的上文内容:
y_c=y_[i-c+1,...i]

3.模型结构

模型结构如a所示,红色框的部分可以当做Encoder模块,是一个NNLM(Neural Network Language Model),enc是含有Attention机制的Decoder模块,内部结构如图b所示。


ABS模型结构图

3.1Decoder

Decoder模块实质是一个Neural Language Model,其中y_c是窗口c内Decoder已经得到的上下文,E是一个Embedding Matrix,计算过程如下所示:

p(y_{i+1}|y_c,x,\theta) \propto exp(Vh+Wenc(e,y_c)),
y_c=y_[i-c+1,...i]
h=tanh(U\widetilde{y}_c)
\widetilde{y}_c=[Ey_{i-c+1},...,Ey_i],

其中\widetilde{y}_c可以理解为y_c的向量形式,经过一层的非线性变换,激活函数为tanh函数得到h

3.2 Encoder

Encoder部分主要是为了编码输入文本,作者介绍了三种实现方式:

其中F是Embedding Matrix

这里的G和F都是分别是输入和输出的Embedding Matrix,P是需要训练的attention参数,p是attention得到的权重向量。
这里有个小处理, \widetilde{x}_i是经过局部归一化后的向量,Q是一个平滑窗口,这里我理解的是窗口Q内的x_i的词向量按位求平均。

4 训练及优化

4.1 数据处理

作者使用的是Gigaword数据作为训练集,测试集作者使用的是DUC-2014以及Gigaword随机保留的子集。
在训练之前,作者对数据进行了以下处理:

4.2 优化

每篇文章的第一句话以及每篇文章的标题配对组成输入文摘对,对于给定的输入文摘对(x^1,y^1),...,(x^j,y^j),优化函数为:
NLL(\theta)=-\sum_{j=1}^{J}logp(y^j|x^j;\theta)=-\sum_{j=1}^{J}\sum_{i=1}^{N-1}logp(y_{i+1}^j|x^j,y_c;\theta)

5.结论

最终的实验结果如下,作者提出的ABS模型在两个测试集上都获得了state of art的好成绩:


实验结果

总结:本文基于机器翻译的最新发展,Encoder-Decoder架构以及Attention的提出,提出了一种基于Attention的生成式模型。是神经网络用语生成式模型的开篇之作。文章的模型结构并不复杂,推荐阅读。

上一篇 下一篇

猜你喜欢

热点阅读