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}
S1→L。输出是全部句子的子集
S
=
{
S
^
i
∣
S
^
i
∈
D
}
\mathcal{S}=\left\{\hat{S}_{i} | \hat{S}_{i} \in \mathcal{D}\right\}
S={S^i∣S^i∈D},用来训练的人工摘要为
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^i∣S^i∈D}∣S∣≤l
其中的
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=[h1(j),hnj(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) (s1,s2,…,sL)和 ( s ← 1 , s ← 2 , … , s ← L ) (\overleftarrow{s}_1,\overleftarrow{s}_2,\ldots,\overleftarrow{s}_L) (s1,s2,…,sL)。合并得到每个句子的文档级表示 s i = [ s → i , s ← i ] s_i = [\overrightarrow{s}_i,\overleftarrow{s}_i] si=[si,si]。
2.2 打分与句子选择
为了能够利用上已经选择的句子的信息,使用GRU进行处理。假如说上一个抽取的句子是
S
[
t
−
1
]
S_{[t-1]}
S[t−1],则当前步的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[t−1],ht−1)
每个句子的分数可以按照下面计算:
δ
(
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]=Si∈Dargmaxδ(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(St−1∪{Si})−r(St−1)
其中
S
t
−
1
\mathbb{S}_{t-1}
St−1是之前选择了的句子们,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(P∥Q)
3 总结
这个模型Encoder没什么特点,但是他通过MLP网络来学习ROUGE F1的评分,把打分和句子选择整合在了同一个网络中,最终训练出来的模型就会通过选择不同的句子得到尽可能高的Rouge评分。
这篇论文我总是觉得怪怪的,因为训练模型能够计算Rouge分数,但是却没有将标准摘要传入模型,仅仅凭借原文来计算Rouge是不是有点勉强,也可能是这一部分没有在论文中描述。