自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法

前三篇博客(一)、(二)、(三)总结了抽取式自动文摘的一些经典方法,传统抽取式自动文摘方法将文档简单地看作是一组文本单元(短语、句子等)的集合,忽略了文档所表达的全局语义,难免“断章取义”。随着算力的提升,深度学习在很多应用中非常的火热也取得了state-of-the-art的性能,因此,将神经网络模型引入自动文摘任务是理所当然的,将文档用神经网络模型进行表示被称为神经文档模型(neural document model),neural document model采用低维连续向量表示文档语义信息非常有效。这篇博客将介绍几种经典的neural document model。

1、DocRebuild

该模型是北京大学发表在COLING2016上的一篇文章中提出来的,通过一个neural document model将文档用摘要句进行重构,同时保证选取的摘要句最小化重构误差(construction error)。

An Unsupervised Multi-Document Summarization Framework Based on Neural Document Model
在模型中,文档集中每一篇文档用neural document model表示,然后取平均作为文档集内容的表示。文档集内容重构包括:1)选取摘要句,并将摘要句用文档模型进行表示。2)计算重构误差。因此,多文档摘要任务转化成最优化问题,目标函数是最小化重构误差,选择的摘要句需满足这个误差最小。下图展示了DocRebuild的框架:

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第1张图片

① neural document model是该框架的基础,直接决定了模型的性能。文中作者分别采用了两种非监督文档模型:Bag-of-Words(BoW)和Paragraph Vector(PV)。在BoW中,作者简单采用词袋模型,没有考虑单词之间的顺序和关系,每一个单词被表示成相应的word embedding,文档被表示成成单词向量的加权平均。PV模型是另一种文档模型,考虑了单词顺序。具体的可以参考word2vec和Paragraph Vector的论文。

② 在定义目标函数之前,需要定义如下符号: D = { d 1 , d 2 , … , d n } D=\{d_1,d_2,\dots,d_n\} D={d1,d2,,dn}表示多文档集, D D D中的文档都被处理成句子集合。 C = { s 1 , s 2 , … , s m } C=\{s_1,s_2,\dots,s_m\} C={s1,s2,,sm}表示候选句子集。 S = { s 1 ∗ , s 2 ∗ , … , s l ∗ } S=\{s_1^*,s_2^*,\dots,s_l^*\} S={s1,s2,,sl}表示摘要句子集,满足 S ⊂ C S\subset C SC ∣ S ∣ ≪ ∣ C ∣ |S|\ll |C| SC θ \theta θ表示摘要长度限制。重构误差通过摘要向量和文档向量之间的距离衡量:
min ⁡ S ⊂ C ∣ ∣ D M ( S ∗ ) − 1 n ∑ i = 1 n D M ( d i ) ∣ ∣ 2 2 s . t .   l e n ( S ∗ ) ≤ θ \begin{aligned} &\min_{S\subset C}\enspace ||DM(S^*)-\frac{1}{n}\sum_{i=1}^nDM(d_i)||_2^2\\ &s.t.\quad\: len(S^*)\leq\theta \end{aligned} SCminDM(S)n1i=1nDM(di)22s.t.len(S)θ

其中, D M DM DM表示文档模型处理过程, S ∗ S^* S表示 S S S相应的摘要序列, l e n ( S ∗ ) len(S^*) len(S)表示摘要序列的长度。

③ 选择最优摘要集是一个NP-hard问题,在文中,作者提出了两种策略用于句子选择的效率和有效性。
句子过滤 \quad 这个策略主要用于缩减搜索空间,通过过滤掉无关的噪声句,保留最有价值的句子作为候选句(candidate set),同时删除噪声句也有助于文档表示。具体地,作者首先对句子进行排序然后选取top-ranked句子作为候选。
BeamSearch Algorithm \quad 为了提高搜索效率,作者提出了BeamSearch算法,算法的伪代码如下:
自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第2张图片

2、NN-SE

该模型由Cheng和Lapata在ACL 2016上提出:Neural Summarization by Extracting Sentences and Words。该论文中既提出了句子基于句子抽取的模型NN-SE,也提出了基于单词抽取的模型NN-WE,本博客中只讨论NN-SE。在判断一个句子是否属于摘要句时,传统方法依靠的是人工构建的特征。这篇文章中,作者提出了一个基于神经网络和连续句子特征的数据驱动方法。基于神经网络的方法的核心是一个encoder-decoder结构,encoder读取源序列并编码成一个连续向量,然后decoder从中生成目标序列。在decoder阶段,注意力机制(attention mechanism)通常被用来定位焦点区域(locate the focus)。

问题描述 \quad 对一篇文档 D = { s 1 , s 2 , … , s m } D=\{s_1,s_2,\dots,s_m\} D={s1,s2,,sm},基于句子抽取的自动文摘希望选取一个包含 j j j个句子 ( j < m ) (j<m) (j<m)的子集形成摘要。我们可以对 D D D中每一个句子打分,然后预测一个标签 y L ∈ { 0 , 1 } y_L\in\{0,1\} yL{0,1}指示其是否属于摘要句。对于有监督学习,目标函数可以设定为最大化所有句子标签 y L = ( y L 1 , y L 2 , … , y L m ) \bold{y_L}=(y_L^1,y_L^2,\dots,y_L^m) yL=(yL1,yL2,,yLm)的似然
log ⁡ p ( y L ∣ D ; θ ) = ∑ i = 1 m log ⁡ p ( y L i ∣ D ; θ ) \log p(\bold{y_L}|D;\theta)=\sum_{i=1}^m\log p(y_L^i|D;\theta) logp(yLD;θ)=i=1mlogp(yLiD;θ)

NN-SE的关键成分包括一个基于神经网络的层次文档读取器(document reader)和一个基于注意力的层次内容抽取器(content extractor)。层次结构天然符合文档由单词、句子、段落甚至更大的单元合成。

Document Reader

作者首先采用一个单层卷积神经网络(CNN)和max-pooling操作获得句子级的向量表示。之后,采用一个标准的循环神经网络(RNN)建立文档向量表示。Convolutional Sentence Encoder \quad 采用CNN进行句子表示主要有两个原因:①单隐层神经网络能够高效训练(没有长期依赖);②CNN已经被成功地应用到句子级的分类任务中。假设 d d d表示word embedding的维度, s = ( w 1 , … , w n ) s=(w_1,\dots,w_n) s=(w1,,wn)表示文档中的句子,因此一个句子可以表示成一个稠密矩阵 W ∈ R n × d W\in \mathbb{R}^{n\times d} WRn×d。接着就可以采用一个宽度为 c c c的卷积核 K ∈ R c × d K\in \mathbb{R}^{c\times d} KRc×d
f j i = tanh ⁡ ( W j : j + c − 1 ⊗ K + b ) f_j^i=\tanh(W_{j:j+c-1}\otimes K+b) fji=tanh(Wj:j+c1K+b)

其中 ⊗ \otimes 表示矩阵的哈达马积(乘积)并求和所有元素。 f j i f_j^i fji表示第 i i i个特征图的第 j j j个元素, b b b是偏置。采用最大池化操作获得一个单一特征(第 i i i个特征):
s i , K = max ⁡ j f j i s_{i,K}=\max_jf_j^i si,K=jmaxfji

实践中,在每个卷积核上,作者采用多个特征图计算了 d d d个特征,作为句子向量。同时,作者也采用了多个不同宽度的卷积核得到多个句子向量。最后,这些句子向量累加作为最终的句子表示。如下图sentence encoder阶段所示

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第3张图片

Recurrent Document Encoder \quad 在文档级别,作者采用了一个循环神经网络组合句子向量序列为一个文档向量。循环神经网络作者采用的是LSTM,假设一篇文档表示为 d = ( s 1 , … , s m ) d=(s_1,\dots,s_m) d=(s1,,sm),在 t t t时刻隐藏层 h t h_t ht计算如下:
[ i t f t o t c ^ t ] = [ σ σ σ tanh ⁡ ] W ⋅ [ h t − 1 s t ] \begin{bmatrix} i_t \\ f_t \\ o_t \\ \hat{c}_t \end{bmatrix}= \begin{bmatrix} \sigma \\ \sigma \\ \sigma \\ \tanh \end{bmatrix}W\cdot \begin{bmatrix} h_{t-1} \\ s_t \end{bmatrix} itftotc^t=σσσtanhW[ht1st]

c t = f t ⊙ c t − 1 + i t ⊙ c ^ t c_t=f_t\odot c_{t-1}+i_t\odot\hat{c}_t ct=ftct1+itc^t

h t = o t ⊙ tanh ⁡ ( c t ) h_t=o_t\odot\tanh(c_t) ht=ottanh(ct)

Sentence Extractor

在标准的sequence-to-sequence模型中,注意力机制作为生成下一个输出的一个中间环节,用来决定哪一块输入区域需要更加关注。相反地,本文中的句子抽取器(sentence extractor)在读入句子之后直接抽取显著的句子,抽取器是另一个循环神经网络,用来对句子进行标注,抽取器不仅考虑了每个句子的相关性,同时也考虑句子之间的冗余性。document reader和sentence extractor的完整结构如下图所示

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第4张图片

在决定下一个标注时,同时考虑文档编码和之前句子的标签。假设encoder的隐藏层状态为 ( h 1 , … , h m ) (h_1,\dots,h_m) (h1,,hm),抽取器的隐藏层状态为 ( h ˉ 1 , … , h ˉ m ) (\bar{h}_1,\dots,\bar{h}_m) (hˉ1,,hˉm)
h ˉ t = L S T M ( p t − 1 s t − 1 , h ˉ t − 1 ) \bar{h}_t=LSTM(p_{t-1}s_{t-1},\bar{h}_{t-1}) hˉt=LSTM(pt1st1,hˉt1)

p ( y L ( t ) = 1 ∣ D ) = σ ( M L P ( h ˉ t : h t ) ) p(y_L(t)=1|D)=\sigma(MLP(\bar{h}_t:h_t)) p(yL(t)=1D)=σ(MLP(hˉt:ht))

其中, M L P MLP MLP是一个多层神经网络,输入为 h ˉ t \bar{h}_t hˉt h t h_t ht的拼接, p t − 1 p_{t-1} pt1表示extractor多大程度上认为前一个句子应该被抽取。在实践中,模型的训练和测试存在一个矛盾:在训练阶段,我们知道前一个句子的真实标签 p t − 1 p_{t-1} pt1,然而在测试阶段, p t − 1 p_{t-1} pt1是未知的,需要预测的。这个矛盾会造成预测误差的快速积累,特别是当错误发生在标注的早期。为了解决这个问题,作者采用了curriculum learning strategy:在训练的开始时,当 p t − 1 p_{t-1} pt1没有正确预测,就将其改为正确的标签。

SummaRuNNer

SummaRuNNer由Nallapati等人在AAAI 2017上提出:SummaRuNNer: A Recurrent Neural Network based Sequence Model for Extractive Summarization of Documents。该模型既包含抽取式方法(SummaRuNNer)也包含生成式方法(SummaRuNNer-abs),本博客只讨论抽取式方法(SummaRuNNer)。作者将抽取式摘要看作是一个序列分类问题,采用GRU作为基本序列分类器的基本模块,GRU是一个包含两个门的循环神经网络:更新门 u u u和重置门 r r r,公式描述如下:
u j = σ ( W u x x j + W u h h j − 1 + b u ) r j = σ ( W r x x j + W r h h j − 1 + b r ) h j ′ = tanh ⁡ ( W h x x j + W h h ( r j ⊙ h j − 1 ) + b h ) h j = ( 1 − u j ) ⊙ h j ′ + u j ⊙ h j − 1 \begin{aligned} u_j&=\sigma(W_{ux}x_j+W_{uh}h_{j-1}+b_u)\\ r_j&=\sigma(W_{rx}x_j+W_{rh}h_{j-1}+b_r)\\ h_j^{'}&=\tanh(W_{hx}x_j+W_{hh}(r_j\odot h_{j-1})+b_h)\\ h_j&=(1-u_j)\odot h_j^{'}+u_j\odot h_{j-1} \end{aligned} ujrjhjhj=σ(Wuxxj+Wuhhj1+bu)=σ(Wrxxj+Wrhhj1+br)=tanh(Whxxj+Whh(rjhj1)+bh)=(1uj)hj+ujhj1

其中, W W W b b b是GRU-RNN的参数, h j h_j hj是时刻 t t t的实值隐藏层向量, x j x_j xj是相应的输入向量, ⊙ \odot 是哈达马积(乘积)。下图展示了模型框架图:

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第5张图片

模型由一个两层的bi-directional GRU-RNN组成,第一层RNN操作在单词级,计算每个单词的隐藏层状态表示;第二层RNN操作在句子级,输入为word-level层的隐藏层向量经平均池化(average pooling)、首尾拼接而成的向量,得到的隐藏层向量作为文档中句子的表示。最后,sentence-level层隐藏层向量同样先经过平均池化、首尾拼接,然后再经过一个非线性变换,最终的结果作为整个文档的表示:
d = tanh ⁡ ( W d 1 N d ∑ j = 1 N d [ h j f , h j b ] + b ) d=\tanh(W_d\frac{1}{N_d}\sum_{j=1}^{N_d}[h_j^f,h_j^b]+b) d=tanh(WdNd1j=1Nd[hjf,hjb]+b)

其中, h j f h_j^f hjf h j b h_j^b hjb分别代表第 j j j个句子的前向、后向隐藏层状态, N d N_d Nd表示文档句子数目, [ ] [] []表示向量拼接操作。在分类时,每个句子会按序输入分类器:
P ( y j = 1 ∣ h j , s j , d ) = σ ( W c h j # ( c o n t e n t ) + h j T W s d # ( s a l i e n c e ) − h j T W r tanh ⁡ ( s j ) # ( n o v e l t y ) + W a p p j a # ( a b s . p o s . i m p . ) + W r p p j r # ( r e l . p o s . i m p . ) + b ) # ( b i a s t e r m ) \begin{aligned} P(y_j=1|h_j,s_j,d)=\sigma( W_ch_j&\quad\quad \#(\mathrm{content})\\ +h_j^TW_sd&\quad\quad \#(\mathrm{salience})\\ -h_j^TW_r\tanh(s_j)&\quad\quad \#(\mathrm{novelty})\\ +W_{ap}p_j^a&\quad\quad \#(\mathrm{abs.\enspace pos.\enspace imp.})\\ +W_{rp}p_j^r&\quad\quad \#(\mathrm{rel.\enspace pos.\enspace imp.})\\ +b)&\quad\quad \#(\mathrm{bias\enspace term})\\ \end{aligned} P(yj=1hj,sj,d)=σ(Wchj+hjTWsdhjTWrtanh(sj)+Wappja+Wrppjr+b)#(content)#(salience)#(novelty)#(abs.pos.imp.)#(rel.pos.imp.)#(biasterm)

其中, y j ∈ { 0 , 1 } y_j\in \{0,1\} yj{0,1},指示第 j j j个句子是否属于文摘句, h j h_j hj是sentence-level隐藏层前向、后向( h j f , h j b h_j^f,h_j^b hjf,hjb)状态的拼接, s j s_j sj是摘要的动态表示,指示在第 j j j个句子时,目前摘要的表示,换句话说, s j s_j sj是到句子 j − 1 j-1 j1为止,sentence-level隐藏层状态 h i h_i hi的加权求和,权重是他们相应属于摘要句的概率:
s j = ∑ i = 1 j − 1 h i P ( y i ∣ h i , s i , d ) s_j=\sum_{i=1}^{j-1}h_iP(y_i|h_i,s_i,d) sj=i=1j1hiP(yihi,si,d)

W a p p j a W_{ap}p_j^a Wappja W r p p j r W_{rp}p_j^r Wrppjr分别表示句子 j j j相对于文档的绝对重要度和相对重要度, p j a p_j^a pja p j r p_j^r pjr分别表示绝对位置、相对位置嵌入(position embedding),也是模型的参数。训练的目标是最小化负对数似然(negative log-likehood):
l ( W , b ) = − ∑ d = 1 N ∑ j = 1 N d ( y j d log ⁡ P ( y j d = 1 ∣ h j d , s j d , d d ) ) + ( 1 − y j d ) log ⁡ ( 1 − P ( y j d = 1 ∣ h j d , s j d , d d ) ) l(W,b)=-\sum_{d=1}^N\sum_{j=1}^{N_d}(y_j^d\log P(y_j^d=1|h_j^d,s_j^d,d_d))+(1-y_j^d)\log(1-P(y_j^d=1|h_j^d,s_j^d,d_d)) l(W,b)=d=1Nj=1Nd(yjdlogP(yjd=1hjd,sjd,dd))+(1yjd)log(1P(yjd=1hjd,sjd,dd))

SWAP-NET

SWAP-NET模型由Jadhav和Rajan在ACL 2018上提出:Extractive Summarization with SWAP-NET: Sentences and Words from Alternating Pointer Networks。该模型创新性的使用一个两层的pointer network建模关键词和显著句之间的相关关系,SWAP-NET既能识别显著句也能识别关键词,然后将两者结合形成抽取式摘要。在我们的常识中,显著句中通常包含关键词,因此,SWAP-NET在选择句子时考虑了关键词的作用,这在以前的工作中是没有尝试的。作者通过一个two-level的encoder-decoder建模这种相互作用,一个用于words,一个用于sentences,同时,作者采用pointer-network建模注意力机制,用于从标注数据中学习重要的词和句子。decoder采用switch mechanism选择单词或句子,最终的摘要由选择的单词和句子综合而成。

输入文档 D D D可以写成句子的集合 s 1 , … , s N s_1,\dots,s_N s1,,sN或者单词的集合 w 1 , … , w n w_1,\dots,w_n w1,,wn。假设重要单词和句子序列是 V = v 1 , … , v m V=v_1,\dots,v_m V=v1,,vm,其中 v j v_j vj既可以是句子也可以是单词。因此,训练目标可以写作( M M M是模型参数):
P ( V ∣ M , D ) = ∏ j p ( v j ∣ v 1 , … , v j − 1 , M , D ) P(V|M,D)=\prod_jp(v_j|v1,\dots,v_{j-1},M,D) P(VM,D)=jp(vjv1,,vj1,M,D)

SWAP-NET中,作者采用pointer-network表示注意力机制。对于一个包含 n n n个向量的序列 X = x 1 , … , x n X=x_1,\dots,x_n X=x1,,xn以及其indices序列 R = r 1 , … , r m R=r_1,\dots,r_m R=r1,,rm r i ∈ [ 1 , n ] r_i\in [1,n] ri[1,n],pointer network是一个encoder-decoder结构,目标是最大化 p ( R ∣ X ; θ ) = ∑ j = 1 m p θ ( r j ∣ r 1 , … , r j − 1 , X ; θ ) p(R|X;\theta)=\sum_{j=1}^mp_\theta(r_j|r_1,\dots,r_{j-1},X;\theta) p(RX;θ)=j=1mpθ(rjr1,,rj1,X;θ),假设encoder和decoder的隐藏层状态分别是 ( e 1 , … , e n ) (e_1,\dots,e_n) (e1,,en) ( d 1 , … , d m ) (d_1,\dots,d_m) (d1,,dm),attention vector在第 j j j次输出时计算如下:
u i j = v T tanh ⁡ ( W e e i + W d d j ) , i ∈ ( 1 , … , n ) α i j = s o f t m a x ( u i j ) , i ∈ ( 1 , … , n ) u_i^j=v^T\tanh(W_ee_i+W_dd_j),\enspace i\in(1,\dots,n)\\ \alpha_i^j=\mathrm{softmax}(u_i^j),\enspace i\in(1,\dots,n) uij=vTtanh(Weei+Wddj),i(1,,n)αij=softmax(uij),i(1,,n)

注意力机制帮助pointer network选出输入向量中概率最高的那个,因此,在解码阶段,能够有效地pointing输入:
p ( r j ∣ r 1 , … , r j − 1 , X ) = s o f t m a x ( u j ) p(r_j|r_1,\dots,r_{j-1},X)=\mathrm{softmax}(u^j) p(rjr1,,rj1,X)=softmax(uj)

下图展示了SWAP-NET的模型架构

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第6张图片

E W \mathrm{EW} EW是单词编码器, E S \mathrm{ES} ES是句子编码器, D W \mathrm{DW} DW是单词解码器, D S \mathrm{DS} DS是句子解码器,输入文档包含单词 [ w 1 , … , w 5 ] [w_1,\dots,w_5] [w1,,w5]、句子 [ s 1 , s 2 ] [s_1,s_2] [s1,s2],目标摘要序列是 w 2 , s 1 , w 5 w_2,s_1,w_5 w2,s1,w5。下面具体介绍每一个模块

Encoder E W \quad\mathrm{EW} EW是一个bi-directional LSTM, E S \mathrm{ES} ES是一个LSTM。在输入之前,每一个单词被表示成一个 K K K维向量 x i x_i xi(例如:word2vec),word embedding x i x_i xi然后被BiLSTM编码成 e i \mathbf{e_i} ei,最后一个隐藏层状态被用来表示整个句子,随后被 E S \mathrm{ES} ES编码 E k = L S T M ( e k l , E k − 1 ) \mathbf{E_k}=\mathrm{LSTM}(e_{k^l},E_{k-1}) Ek=LSTM(ekl,Ek1),其中 k l k^l kl k k k个句子的是最后一个单词的下标, E k E_k Ek是第 k k k个隐状态。

Decoder D W \quad\mathrm{DW} DW D S \mathrm{DS} DS都是LSTM,每一个decoder分别对句子和单词进行pointing,因此可以认为每次decoder的输出是输入encoder的序列的一个下标。假设 m m m是每一个decoder的解码步骤数, D S \mathrm{DS} DS生成的下标序列为 T 1 , … , T m T_1,\dots,T_m T1,,Tm T j ∈ { 1 , … , N } T_j\in \{1,\dots,N\} Tj{1,,N} D W \mathrm{DW} DW生成的下标序列为 t 1 , … , t m t_1,\dots,t_m t1,,tm t j ∈ { 1 , … , n } t_j\in \{1,\dots,n\} tj{1,,n}

Networks details \quad 在第 j j j个解码步骤,采用一个binary switch Q j Q_j Qj决定是选择句子还是单词, Q j = 0 Q_j=0 Qj=0表示选择单词, Q j = 1 Q_j=1 Qj=1表示选择句子。具体地,首先定义 h j \mathbf{h_j} hj H j \mathbf{H_j} Hj分别表示 D W DW DW D S DS DS j j j个隐藏层状态:
h j = L S T M ( h j − 1 , a j − 1 , ϕ ( A j − 1 ) ) H j = L S T M ( H j − 1 , A j − 1 , ϕ ( a j − 1 ) ) h_j=LSTM(h_{j-1},a_{j-1},\phi(A_{j-1}))\\ H_j=LSTM(H_{j-1},A_{j-1},\phi(a_{j-1})) hj=LSTM(hj1,aj1,ϕ(Aj1))Hj=LSTM(Hj1,Aj1,ϕ(aj1))

其中, a j = ∑ i = 0 n α i j w e i a_j=\sum_{i=0}^n\alpha_{ij}^we_i aj=i=0nαijwei A j = ∑ k = 0 N α k j s E k A_j=\sum_{k=0}^N\alpha_{kj}^sE_k Aj=k=0NαkjsEk ϕ \phi ϕ表示非线性变换,作者采用的是 tanh ⁡ \tanh tanh,用来联系word-level encodings与sentence decoder,sentence-level encodings与word decoder。

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第7张图片

j j j个解码步骤的switch概率 p ( Q j ∣ v < j , D ) p(Q_j|v_{<j},D) p(Qjv<j,D)计算概率如下:
p ( Q j = 1 ∣ v < j , D ) = σ ( w Q T ( H j − 1 , A j − 1 , ϕ ( h j − 1 , a j − 1 ) ) ) p ( Q j = 0 ∣ v < j , D ) = 1 − p ( Q j = 1 ∣ v < j , D ) \begin{aligned} p(Q_j=1|v_{<j},D)&=\sigma(w_Q^T(H_{j-1},A_{j-1},\phi(h_{j-1},a_{j-1})))\\ p(Q_j=0|v_{<j},D)&=1-p(Q_j=1|v_{<j},D) \end{aligned} p(Qj=1v<j,D)p(Qj=0v<j,D)=σ(wQT(Hj1,Aj1,ϕ(hj1,aj1)))=1p(Qj=1v<j,D)

其中, w Q w_Q wQ是模型参数, σ \sigma σ是sigmoid函数, ϕ \phi ϕ tanh ⁡ \tanh tanh函数。然后定义 α k j s = p ( T j = k ∣ v < j , Q j = 1 , D ) \alpha_{kj}^s=p(T_j=k|v_{<j},Q_j=1,D) αkjs=p(Tj=kv<j,Qj=1,D)表示在第 j j j个解码步骤选择第 k k k个句子的概率, α i j w = p ( t j = i ∣ v < j , Q j = 0 , D ) \alpha_{ij}^w=p(t_j=i|v_{<j},Q_j=0,D) αijw=p(tj=iv<j,Qj=0,D)表示在第 j j j个解码步骤选择第 i i i个单词的概率,计算公式分别如下:

α i j w = s o f t m a x ( v t T ϕ ( w h h j + w t e i ) ) α k j s = s o f t m a x ( V T T ϕ ( W H H j + W T E k ) ) \alpha_{ij}^w=\mathrm{softmax}(v_t^T\phi(w_hh_j+w_te_i))\\ \alpha_{kj}^s=\mathrm{softmax}(V_T^T\phi(W_HH_j+W_TE_k)) αijw=softmax(vtTϕ(whhj+wtei))αkjs=softmax(VTTϕ(WHHj+WTEk))

v t , w h , w t , V T , W H , W T v_t,w_h,w_t,V_T,W_H,W_T vt,wh,wt,VT,WH,WT是模型参数,最后, v j v_j vj由如下公式确定:
v j = { k = arg ⁡ max ⁡ k p k j s if  max ⁡ k p k j s > max ⁡ i p i j w i = arg ⁡ max ⁡ i p i j w if  max ⁡ i p i j w > max ⁡ k p k j s v_j = \begin{cases} k=\arg \max_kp_{kj}^s &\text{if } \max_kp_{kj}^s>\max_ip_{ij}^w \\ i=\arg\max_ip_{ij}^w &\text{if } \max_ip_{ij}^w>\max_kp_{kj}^s \end{cases} vj={k=argmaxkpkjsi=argmaxipijwif maxkpkjs>maxipijwif maxipijw>maxkpkjs

p k j s = α k j s p ( Q j = 1 ∣ v < j , D ) , p i j w = α i j w p ( Q j = 0 ∣ v < j , D ) . p_{kj}^s=\alpha_{kj}^sp(Q_j=1|v_{<j},D),\\ p_{ij}^w=\alpha_{ij}^wp(Q_j=0|v_{<j},D). pkjs=αkjsp(Qj=1v<j,D),pijw=αijwp(Qj=0v<j,D).

损失函数定义为:
l j = − log ⁡ ( p k j s q j s + p i j w q j w ) − log ⁡ p ( Q j ∣ v < j , D ) l_j=-\log(p_{kj}^sq_j^s+p_{ij}^wq_j^w)-\log p(Q_j|v_{<j},D) lj=log(pkjsqjs+pijwqjw)logp(Qjv<j,D)

在每一个解码步骤中,如果第 j j j个输出是单词,则 q j w = 1 , q j s = 0 q_j^w=1,q_j^s=0 qjw=1,qjs=0;如果第 j j j个输出是句子,则 q j w = 0 , q j s = 1 q_j^w=0,q_j^s=1 qjw=0,qjs=1。最终的摘要是由句子组成,因此需要确定每个句子的重要度:
I ( s k ) = α k j s + λ ∑ w i ∈ s k α i l w I(s_k)=\alpha_{kj}^s+\lambda\sum_{w_i\in s_k}\alpha_{il}^w I(sk)=αkjs+λwiskαilw

在实验中,作者将 λ \lambda λ设置为1,最终的摘要由三句得分最高的句子组成。

NEUSUM

该模型同样发表在ACL 2018:Neural Document Summarization by Jointly Learning to Score and Select Sentences。句子打分和句子抽取是抽取式文摘系统的两个主要步骤,传统的方法将这两个过程独立开来,分别考虑。这篇论文中,作者提出了一个端到端(end-to-end)的神经网络框架联合学习句子打分和句子抽取。首先通过一个多层encoder得到句子表示,然后sentence extractor逐一抽取摘要句。抽取过程中,sentence extractor读入最新被抽取的句子,产生一个新的句子抽取状态,以此作为剩余句子的相对重要度得分。

对于包含 L L L个句子的文档 D = ( S 1 , S 2 , … , S L ) \mathcal{D}=(S_1,S_2,\dots,S_L) D=(S1,S2,,SL),抽取式摘要试图找出 D \mathcal{D} D的一个子集 S = { S ^ i ∣ S ^ i ∈ D } \mathcal{S}=\{\hat{S}_i|\hat{S}_i\in \mathcal{D}\} S={S^iS^iD}作为摘要。在训练阶段,参考摘要 S ∗ \mathcal{S}^* S以及摘要 S \mathcal{S} S相对于评估函数 r ( ⋅ ) r(\cdot) r()的得分 r ( S ∣ S ∗ ) r(\mathcal{S}|\mathcal{S}^*) r(SS)是已知的。训练目标是学习一个打分函数 f ( S ) f(\mathcal{S}) f(S)能够在测试阶段找出最佳摘要:
arg ⁡ max ⁡ S f ( S ) s . t . S = { S ^ i ∣ S ^ i ∈ D } ∣ S ∣ ≤ l . \begin{aligned} \arg \max_{\mathcal{S}}&\quad f(\mathcal{S})\\ s.t.&\quad \mathcal{S}=\{\hat{S}_i|\hat{S}_i\in \mathcal{D}\}\\ &\quad |\mathcal{S}|\leq l. \end{aligned} argSmaxs.t.f(S)S={S^iS^iD}Sl.

其中, l l l是输出摘要的长度限制。在之前state-of-the-art的工作中,句子抽取策略主要是 MMR \text{MMR} MMR ILP \text{ILP} ILP。论文中,作者借用 MMR \text{MMR} MMR的思想:在给定已抽取句子的情况下,选择能最大化相对收益的句子。因此,模型训练的目标就是学得这个收益打分函数。更进一步,作者采用 ROUGE F1 \text{ROUGE F1} ROUGE F1作为评估函数 r ( ⋅ ) r(\cdot) r(),因此,模型需要学得 ROUGE F1 \text{ROUGE F1} ROUGE F1收益:
g ( S t ∣ S t − 1 ) = r ( S t − 1 ∪ S t ) − r ( S t − 1 ) g(S_t|\Bbb{S}_{t-1})=r(\Bbb{S}_{t-1}\cup{S_t})-r(\Bbb{S}_{t-1}) g(StSt1)=r(St1St)r(St1)

其中, S t − 1 \Bbb{S}_{t-1} St1是已经选择的句子集合,省略了 r ( ⋅ ) r(\cdot) r()中的条件 S ∗ \mathcal{S*} S。在每一个时刻 t t t,摘要系统选择能最大化 ROUGE F1 \text{ROUGE F1} ROUGE F1收益的句子,直至达到句子数目限制。下图展示了NEUSUM的架构:

自动文摘(Automatic document summarization)方法综述(四)——基于神经网络的(neural summarization)方法_第8张图片

Document Encoding \quad 作者采用一个层次化文档编码器表示文档中的句子,分为sentence-level encoding和document-level encoding。sentence-level encoding读取第 j j j个输入句子 S j = ( x 1 ( j ) , … , x n j ( j ) ) S_j=(x_1^{(j)},\dots,x_{n_j}^{(j)}) Sj=(x1(j),,xnj(j)),采用BiGRU得到句子表示 s ~ j \widetilde{s}_j s j, 其中GRU定义如下:
z i = σ ( W z [ x i , h i − 1 ] ) r i = σ ( W r [ x i , h i − 1 ] ) h ~ i = tanh ⁡ ( W h [ x i , r i ⊙ h i − 1 ] ) h i = ( 1 − z i ) ⊙ h i − 1 + z i ⊙ h ~ i \begin{aligned} z_i&=\sigma(W_z[x_i,h_{i-1}])\\ r_i&=\sigma(W_r[x_i,h_{i-1}])\\ \widetilde{h}_i&=\tanh(W_h[x_i,r_i\odot h_{i-1}])\\ h_i&=(1-z_i)\odot h_{i-1}+z_i\odot \widetilde{h}_i \end{aligned} zirih ihi=σ(Wz[xi,hi1])=σ(Wr[xi,hi1])=tanh(Wh[xi,rihi1])=(1zi)hi1+zih i

W z , W r , W h W_z,W_r,W_h Wz,Wr,Wh是权值矩阵。BiGRU由一个前向GRU和一个反向GRU组成,前向GRU从左向右读入word embedding,得到隐状态序列 ( h → 1 ( j ) , … , h → n j ( j ) ) (\overrightarrow{h}_1^{(j)},\dots,\overrightarrow{h}_{n_j}^{(j)}) (h 1(j),,h nj(j));反向GRU从右向左读入word embedding,得到另一个隐状态序列 ( h ← 1 ( j ) , … , h ← n j ( j ) ) (\overleftarrow{h}_1^{(j)},\dots,\overleftarrow{h}_{n_j}^{(j)}) (h 1(j),,h nj(j))
h → i ( j ) = G R U ( x i ( j ) , h → i − 1 ( j ) ) h ← i ( j ) = G R U ( x i ( j ) , h ← i + 1 ( j ) ) \overrightarrow{h}_i^{(j)}=GRU(x_i^{(j)},\overrightarrow{h}_{i-1}^{(j)})\\ \overleftarrow{h}_i^{(j)}=GRU(x_i^{(j)},\overleftarrow{h}_{i+1}^{(j)})\\ h i(j)=GRU(xi(j),h i1(j))h i(j)=GRU(xi(j),h i+1(j))

sentence level表示 s ~ j \widetilde{s}_j s j是最后一个前向GRU与最后一个反向GRU隐状态的拼接:
s ~ j = [ h → 1 ( j ) h ← n j ( j ) ] \widetilde{s}_j=\begin{bmatrix} \overrightarrow{h}_1^{(j)} \\ \overleftarrow{h}_{n_j}^{(j)} \end{bmatrix} s j=[h 1(j)h nj(j)]

同样,document level encoder采用另一个BiGRU,输入为 ( s ~ 1 , … , s ~ L ) (\widetilde{s}_1,\dots,\widetilde{s}_{L}) (s 1,,s L),前向GRU和反向GRU分别得到两个因状态序列 ( s → 1 , … , s → L ) (\overrightarrow{s}_1,\dots,\overrightarrow{s}_L) (s 1,,s L) ( s ← 1 , … , s ← L ) (\overleftarrow{s}_1,\dots,\overleftarrow{s}_L) (s 1,,s L),document level表示 s i s_i si同上:
s i = [ s → i s ← j ] {s}_i=\begin{bmatrix} \overrightarrow{s}_i \\ \overleftarrow{s}_j \end{bmatrix} si=[s is j]

Joint Sentence Scoring and Selection \quad 给定前一个选择句子 S ^ t − 1 \hat{S}_{t-1} S^t1,sentence extractor通过给剩余句子打分的形式决定下一个要选择的句子 S ^ t \hat{S}_t S^t。在对句子打分时,同时考虑其重要度和已经输出的摘要。因此,作者采用另一个GRU作为recurrent unit用来记住已经输出的摘要,采用一个多层感知机(MLP)对句子打分。具体来说,GRU接受前一个选择的句子 S ^ t − 1 \hat{S}_{t-1} S^t1的document level表示 s t − 1 s_{t-1} st1作为输入,产生当前隐藏层状态 h t h_t ht。句子打分器是一个两层的MLP,输入是当前隐藏层状态 h t h_t ht以及 s i s_i si,输出是 S i S_i Si的得分 δ ( S i ) \delta(S_i) δ(Si)
h t = G R U ( s t − 1 , h t − 1 ) δ ( S i ) = W s tanh ⁡ ( W q h t + W d s i ) h_t=GRU(s_{t-1},h_{t-1})\\ \delta(S_i)=W_s\tanh(W_qh_t+W_ds_i) ht=GRU(st1,ht1)δ(Si)=Wstanh(Wqht+Wdsi)

其中, W s , W q , W d W_s,W_q,W_d Ws,Wq,Wd是网络参数,当选择第一个句子时,作者对GRU隐藏层状态 h 0 初 始 化 如 下 h_0初始化如下 h0
h 0 = tanh ⁡ ( W m s ← 1 + b m ) S 0 = Ø s 0 = 0 \begin{aligned} h_0&=\tanh(Wm\overleftarrow{s}_1+b_m)\\ S_0&=\text{\O}\\ s_0&=\bf{0} \end{aligned} h0S0s0=tanh(Wms 1+bm)=Ø=0

对所有句子打分完成后,选择收益值最大的那个:
S ^ t = arg ⁡ max ⁡ S i ∈ D δ ( S i ) \hat{S}_t=\arg\max_{S_i\in \mathcal{D}}\delta(S_i) S^t=argSiDmaxδ(Si)

Objective Function \quad 作者采用最优化模型预测 P P P与标注训练数据 Q Q Q之间的KL-散度。首先对 δ ( S i ) \delta(S_i) δ(Si)归一化得到预测分布 P P P:
P ( S ^ t = S i ) = exp ⁡ ( δ ( S i ) ) ∑ k = 1 L exp ⁡ ( δ ( S i ) ) P(\hat{S}_t=S_i)=\frac{\exp(\delta(S_i))}{\sum_{k=1}^L\exp(\delta(S_i))} P(S^t=Si)=k=1Lexp(δ(Si))exp(δ(Si))

考虑到标注数据中 F 1 \mathcal{F1} F1收益值可能是负值,作者采用 M i n − M a x N o r m a l i z a t i o n Min-Max Normalization MinMaxNormalization将收益值调整到 [ 0 , 1 ] [0,1] [0,1]
g ( S i ) = r ( S t − 1 ∪ { S i } ) − r ( S t − 1 ) g ~ ( S i ) = g ( S i ) − min ⁡ ( g ( S ) ) max ⁡ ( g ( S ) ) − min ⁡ ( g ( S ) ) g(S_i)=r(\Bbb{S}_{t-1}\cup \{S_i\})-r(\Bbb{S}_{t-1})\\ \widetilde{g}(S_i)=\frac{g(S_i)-\min(g(S))}{\max(g(S))-\min(g(S))} g(Si)=r(St1{Si})r(St1)g (Si)=max(g(S))min(g(S))g(Si)min(g(S))

然后采用一个附加temperature τ \tau τ s o f t m a x \mathrm{softmax} softmax操作生成标注数据的分布 Q Q Q作为训练目标,tempature τ \tau τ是一个平滑因子
Q ( S i ) = exp ⁡ ( τ g ~ ( S i ) ) ∑ k = 1 L exp ⁡ ( τ g ~ ( S i ) ) Q(S_i)=\frac{\exp(\tau\widetilde{g}(S_i))}{\sum_{k=1}^L\exp(\tau\widetilde{g}(S_i))} Q(Si)=k=1Lexp(τg (Si))exp(τg (Si))

因此,最小化 K L KL KL损失函数 J J J
J = D K L ( P ∣ ∣ Q ) J=D_{KL}(P||Q) J=DKL(PQ)

总结

基于neural document model的方法,通常将摘要任务看作是一个序列标注问题,采用seq2seq的模式进行求解,首先采用 ( B i ) L S T M (Bi)LSTM (Bi)LSTM ( B i ) G R U (Bi)GRU (Bi)GRU循环神经网络或者 C N N CNN CNN等对句子编码,得到document-level的句子表示,然后同样采用 R N N RNN RNN进行句子抽取(输出该句子是否属于文摘句),在解码过程中通常也会加入注意力机制。

参考文献

[1] An Unsupervised Multi-Document Summarization Framework Based on Neural Document Model.
[2] Neural Summarization by Extracting Sentences and Words.
[3] SummaRuNNer: A Recurrent Neural Network based Sequence Model for Extractive Summarization of Documents.
[4] Extractive Summarization with SWAP-NET: Sentences and Words from Alternating Pointer Networks.
[5] Neural Document Summarization by Jointly Learning to Score and Select Sentences.

你可能感兴趣的:(自动文摘,深度学习,NLP)