文本摘要-Text Summarization

开头先放两篇文章,也是本文的主体内容,这两篇论文都是focus on the sentence-level summarization:

[1] A Neural Attention Model for Abstractive Sentence Summarization

[2] Abstractive Sentence Summarization with Attentive Recurrent Neural Networks

自从论文Neural machine translation by jointly learning to align and translate.第一次在NLP任务中使用了encoder-decoder+attention模型,NLP各界都开始广泛试用。

实际上encoder-decoder和attention都是一种思想,并没有具体的结构限制。下面我们将看到完全不同于seq2seq的encoder-decoder模型。

paper one

——A Neural Attention Model for Abstractive Sentence Summarization

1.问题定义:

我们的目标是输入一个句子x,然后输出一个更短的句子y作为x的摘要。因此问题定义如下:

《文本摘要-Text Summarization》

其中Y定义为长度为N的所有可能的句子,当我们获得的摘要y是来自集合Y,那么我们认为这个摘要系统是abstractive的。

extractive(抽取式的)自动摘要问题定义如下:

《文本摘要-Text Summarization》

和之前的主要区别就在于,其摘要y中的词汇,都是来自输入x的。

在抽取式的基础上,当输出y中的词序也要和输入保持一致时:

《文本摘要-Text Summarization》
《文本摘要-Text Summarization》

就得到了句子压缩任务(相当于再原句中删除不重要的词)。

虽然说生成词本身是个困难的过程,但是没有硬性条件的限制也让abstractive的摘要可以适应更广泛的场景。

2.优化目标:

目标函数实际上就是Negative Log-Likelihood(NLL),因此表现为加和形式,decoder中生成摘要单词的条件是encoder的输出和当前生成词的窗口词向量,具体如下:

《文本摘要-Text Summarization》

其中yc为当前词yi的上下文定义为:

《文本摘要-Text Summarization》

其窗口大小为C,于可能出现的i-C<1的情况,在句子前padding几个开始符号<s>。yc其实相当于NNLM中的N-gram,具体参考Bengio的神经概率语言模型。

考虑到summary 的log条件概率:

《文本摘要-Text Summarization》

在当前词之与之前C个上下文词有关的markov假设下,我们可以近似的等效:

《文本摘要-Text Summarization》

可以发现,如果去掉x,那么就这个摘要的优化函数就退化成了语言模型。我们可以实际上也可以看到,其实各种文本任务的目标函数都是类似的,语言模型的条件约束形式。

3.model:

本文使用的也是encoder-decoder的思想,整体框架如下:

《文本摘要-Text Summarization》

encoder部分文章选择了3种encoder,decoder部分文章选择的是NNLM。

encoder:

1)Bag-of-Words Encoder

词袋模型是最简单的一个模型,将输入的句子用词袋模型降维到H,生成一个word embedding层。模型如下:

《文本摘要-Text Summarization》

其中F是embedding矩阵负责将原本one-hot的向量,转变为H维的dense represention,P就是对M个输入进行了简单的相加求平均。词袋模型并不会考虑词序的关系,效果并不会太好。

2)Convolutional Encoder

通过卷积来对输入进行编码,模型如下:

《文本摘要-Text Summarization》
《文本摘要-Text Summarization》

其中矩阵F是输入句子的word embedding矩阵,Q包括了一系列过滤层,并且采用了最大池化技术来处理。

CNN通过结合word embedding将句子表示成一个matrix,通过不同尺寸的卷积核来filter出句子中的feature,本质上和N-gram一样,N-gram的N就是卷积核的尺寸,构建出多种feature maps,然后max pooling,然后filter,然后pooling,最终采用一个MLP得出结果。

3)Attention-Based Encoder

前2种encoder实际上都没有使用yc的信息,之后使用的attention model则会使用yc的信息,模型结构如下:

《文本摘要-Text Summarization》

转换为数学表达如下:

《文本摘要-Text Summarization》

这个模型和词袋模型较为类似,F和G都是embedding矩阵,负责将输入x和context yc转变为dense。

我们可以来小推一下(知乎的公式编辑实在是不会用各位看官将就下)。

右侧部分生成attention向量:

《文本摘要-Text Summarization》 是C*V的矩阵embedding后, 是C*D的矩阵同时y’c全部展开就变为1*CD。

x为M*V,embedding后的x~为M*H,因此P为H*CD。之后得到M*1的向量,经过softmax之后,我们得到了M个不同位置的输入词对应的权重,也就是attention向量。

左侧部分:

x~为M*H,然后通过一个长度为2Q+1的平滑窗,对前后不同词的向量求平均,得到该位置的平均词向量,当Q为0时就是不采取平滑操作。

最后,将平滑过的向量x-和得到的attention向量p相乘,我们就得到了encoder的输出 。

decoder:

decoder的本质就是一个神经网络语言模型,本文用了2003年Bengio提出的NNLM,模型如下:

《文本摘要-Text Summarization》
《文本摘要-Text Summarization》

待求的参数是word embedding矩阵E,输入层到隐藏层的权重矩阵U,隐藏层到decoder输出层的权重矩阵V,encoder输出层到decoder输出层的权重矩阵W。本质上来说,其实就是一个神经网络多分类器,输入是encoder的向量和yc产生的向量,输出就是对词表V进行多分类。

4.Generating Summaries

文章采用beam search 算法生成。具体就不仔细展开了。

饭后甜点 paper two

——Abstractive Sentence Summarization with Attentive Recurrent Neural Networks

有了上一篇论文的基础之后,下面这篇比较简单,主要就是吧decoder部分改成了RNN的decoder。

问题定义:

参考上一篇论文

优化目标:

两篇paper都是采用NLL,但不同的是第二篇paper目标函数条件概率中的条件与第一篇不同,本文采用decoder是RNN而不是之前的带窗的一个全连接神经网络,因此其条件概率表示为所有上文,而不是一个窗口内的上文。

《文本摘要-Text Summarization》

model:

还是属于基本的encoder-decoder模型,只不过encoder是使用的CNN,decoder使用的RNN。

1)encoder

输入句子每个词最终的embedding是各词的embedding与各词位置的embedding之和:

《文本摘要-Text Summarization》

其中xi是词的embedding,li是位置的embedding,都是d维。经过一层卷积处理得到aggregate vector:

《文本摘要-Text Summarization》

每个输入的词xi都会得到一个聚合的embedding向量zi,包含了位置以及内容信息。

然后使用得到的zi向量,和rnn的ht计算出attention的权重:

《文本摘要-Text Summarization》

最后我们将attention权重和词的embedding向量相乘,计算得到这段输入序列的encoder结果的ct即:

《文本摘要-Text Summarization》

2)decoder

decoder的部分是一个RNNLM,这里的RNN Hidden Layer使用的是LSTM单元。decoder的输出由下式计算:

《文本摘要-Text Summarization》

其中c(t)是encoder的输出,h(t)是RNN隐藏层,由下式计算:

《文本摘要-Text Summarization》

和rnn-decoder的经典结构一样,隐藏层的单元有两种思路,一种是常规的Elman RNN,一种是LSTM。

句子级别的自动摘要基本介绍完毕了,各位看官是觉得有用的话别忘了点个赞支持一下哟~

    原文作者:柳枫
    原文地址: https://zhuanlan.zhihu.com/p/27767338
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞