NeuSum: 利用神经网络整合打分与句子选择进行文本摘要

Neural Document Summarization by Jointly Learning to Score and Select Sentences

Zhou, Q. , Yang, N. , Wei, F. , Huang, S. , & Zhao, T. . (2018). Neural Document Summarization by Jointly Learning to Score and Select Sentences. Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers).

论文地址:https://aclweb.org/anthology/P18-1061

论文代码: https://github.com/magic282/NeuSum Pytorch实现

1 概述

这篇论文讲的是一个使用神经网络来进行抽取式(Extractive)文本摘要的方法。以往的抽取式摘要,句子打分以及选择是独立的两个部分,作者在将打分以及选择联合在一起训练模型,将他们的信息关联起来取得了较好的成绩。

2 问题描述

抽取式摘要直接从原文本中选择合适的句子放在一起作为摘要输出,其问题就是给定一个输入文档 D = ( S 1 , S 2 , … , S L ) \mathcal{D}=\left(S_{1}, S_{2}, \ldots, S_{L}\right) D=(S1,S2,,SL), 其中包含 L L L个句子 S 1 → L S_{1\to L} S1L。输出是全部句子的子集 S = { S ^ i ∣ S ^ i ∈ D } \mathcal{S}=\left\{\hat{S}_{i} | \hat{S}_{i} \in \mathcal{D}\right\} S={S^iS^iD},用来训练的人工摘要为 S ∗ S^* S,并定义一个打分函数 f f f,则抽取式摘要的训练就是求下面的优化问题:
arg ⁡ max ⁡ S f ( S )  s.t.  S = { S ^ i ∣ S ^ i ∈ D } ∣ S ∣ ≤ l \begin{array}{ll}{\underset{\mathcal{S}}{\arg \max }} & {f(\mathcal{S})} \\ {\text { s.t. }} & {\mathcal{S}=\left\{\hat{S}_{i} | \hat{S}_{i} \in \mathcal{D}\right\}} \\ & {|\mathcal{S}|} { \leq l}\end{array} Sargmax s.t. f(S)S={S^iS^iD}Sl
其中的 l l l是输出摘要的句子数量限制。

2 模型

首先将原始文本通过一个层次的Encoder(句子级和文档级),

在这里插入图片描述

2.1 Encoder

2.1.1 Sentence Encode

首先将输入的文档 D = ( S 1 , S 2 , … , S L ) \mathcal{D}=\left(S_{1}, S_{2}, \ldots, S_{L}\right) D=(S1,S2,,SL)的每个句子 S j = ( x 1 ( j ) , x 2 ( j ) , … , x n j ( j ) ) S_{j}=\left(x_{1}^{(j)}, x_{2}^{(j)}, \ldots, x_{n_{j}}^{(j)}\right) Sj=(x1(j),x2(j),,xnj(j))输入一个双向GRU网络(初始状态设为0),得到句子的向量表示 s ~ j = [ h ← 1 ( j ) , h → n j ( j ) ] \widetilde{s}_{j}=[\overleftarrow{h}_{1}^{(j)},\overrightarrow{h}_{n_{j}}^{(j)}] s j=[h 1(j),h nj(j)]

2.1.2 Document Encode

将句子级编码后的表示 ( s ~ 1 , s ~ 2 , … , s ~ L ) \left(\widetilde{s}_{1}, \widetilde{s}_{2}, \ldots, \widetilde{s}_{L}\right) (s 1,s 2,,s L)作为输入传入另一个双向GRU网络,得到双向的hidde state ( s ⃗ 1 , s ⃗ 2 , … , s ⃗ L ) \left(\vec{s}_{1}, \vec{s}_{2}, \ldots, \vec{s}_{L}\right) (s 1,s 2,,s L) ( s ← 1 , s ← 2 , … , s ← L ) (\overleftarrow{s}_1,\overleftarrow{s}_2,\ldots,\overleftarrow{s}_L) (s 1,s 2,,s L)。合并得到每个句子的文档级表示 s i = [ s → i , s ← i ] s_i = [\overrightarrow{s}_i,\overleftarrow{s}_i] si=[s i,s i]

2.2 打分与句子选择

为了能够利用上已经选择的句子的信息,使用GRU进行处理。假如说上一个抽取的句子是 S [ t − 1 ] S_{[t-1]} S[t1],则当前步的hidden state为:
h t = G R U ( s [ t − 1 ] , h t − 1 ) h_{t}=\mathrm{GRU}\left(s_{[t-1]}, h_{t-1}\right) ht=GRU(s[t1],ht1)
每个句子的分数可以按照下面计算:
δ ( S i ) = W s tanh ⁡ ( W q h t + W d s i ) \delta\left(S_{i}\right)=\mathbf{W}_{s} \tanh \left(\mathbf{W}_{q} h_{t}+\mathbf{W}_{d} s_{i}\right) δ(Si)=Wstanh(Wqht+Wdsi)
当选择第一个句子的时候,init state为 h 0 = tanh ⁡ ( W m s ‾ 1 + b m ) h_{0}=\tanh \left(\mathbf{W}_{m} \overline{s}_{1}+b_{m}\right) h0=tanh(Wms1+bm),并令 s [ 0 ] = 0 s_{[0]}=0 s[0]=0,这样就可以计算当前每个选择每个句子得到的得分,那么接下来选择分数最大的即可作为时间t选择的句子:
S ^ [ t ] = arg ⁡ max ⁡ S i ∈ D δ ( S i ) \hat{S}_{[t]}=\underset{S_{i} \in \mathcal{D}}{\arg \max } \delta\left(S_{i}\right) S^[t]=SiDargmaxδ(Si)

2.3 损失函数

论文中使用相对熵(Kullback-Leibler Divergence,KL散度),比较模型打分分布与Rouge F1打分分布之间的差距。

上一小节得到的分数经过Softmax可以得到其分布:
P ( S ^ t = S i ) = exp ⁡ ( δ ( S i ) ) ∑ k = 1 L exp ⁡ ( δ ( S k ) ) P\left(\hat{S}_{t}=S_{i}\right)=\frac{\exp \left(\delta\left(S_{i}\right)\right)}{\sum_{k=1}^{L} \exp \left(\delta\left(S_{k}\right)\right)} P(S^t=Si)=k=1Lexp(δ(Sk))exp(δ(Si))
文本摘要一般使用Rouge来衡量模型性能,论文使用Rouge F1 Score作为基本的分数 r ( . ) r(.) r(.)。并使用gain value(也就是添加某个句子后,Rouge F1分数增加了多少)如下:
g ( S i ) = r ( S t − 1 ∪ { S i } ) − r ( S t − 1 ) g\left(S_{i}\right)=r\left(\mathbb{S}_{t-1} \cup\left\{S_{i}\right\}\right)-r\left(\mathbb{S}_{t-1}\right) g(Si)=r(St1{Si})r(St1)
其中 S t − 1 \mathbb{S}_{t-1} St1是之前选择了的句子们,Rouge是与标准摘要比较得到的分数,这里省略了这个参数。然后对其标准化:
g ~ ( S i ) = g ( S i ) − min ⁡ ( g ( S ) ) max ⁡ ( g ( S ) ) − min ⁡ ( g ( S ) ) \widetilde{g}\left(S_{i}\right)=\frac{g\left(S_{i}\right)-\min (g(S))}{\max (g(S))-\min (g(S))} g (Si)=max(g(S))min(g(S))g(Si)min(g(S))
同样将这个分数经过Softmax得到其分布,其中 τ \tau τ为平滑因子:
Q ( S i ) = exp ⁡ ( τ g ~ ( S i ) ) ∑ k = 1 L exp ⁡ ( τ g ~ ( S k ) ) Q\left(S_{i}\right)=\frac{\exp \left(\tau \widetilde{g}\left(S_{i}\right)\right)}{\sum_{k=1}^{L} \exp \left(\tau \widetilde{g}\left(S_{k}\right)\right)} Q(Si)=k=1Lexp(τg (Sk))exp(τg (Si))
最终得到损失函数:
J = D K L ( P ∥ Q ) J=D_{K L}(P \| Q) J=DKL(PQ)

3 总结

这个模型Encoder没什么特点,但是他通过MLP网络来学习ROUGE F1的评分,把打分和句子选择整合在了同一个网络中,最终训练出来的模型就会通过选择不同的句子得到尽可能高的Rouge评分。

这篇论文我总是觉得怪怪的,因为训练模型能够计算Rouge分数,但是却没有将标准摘要传入模型,仅仅凭借原文来计算Rouge是不是有点勉强,也可能是这一部分没有在论文中描述。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值