摘要
时间线摘要的目标是获得沿时间线的事件演变轨迹,而现有的时间线摘要方法均是基于抽取的方法。在本文中,我们提出了生成式时间线摘要的任务,该任务倾向于简明地解释时间戳事件中的信息。与传统的文档摘要不同,时间线摘要需要对输入事件的时间序列信息进行建模,并按时间顺序汇总重要事件。为了解决这一挑战,我们提出了一种基于memory的时间线摘要模型(MTS)。具体而言,我们提出了一个时间事件存储器来建立时间线,并使用事件在该时间线上的时间位置来指导生成过程。此外,在每个解码步骤中,我们将事件级别的信息合并到单词级别的注意中,以避免事件之间的混淆。在大规模的真实数据集上进行了广泛的实验,结果表明MTS在自动评估和人工评估方面都达到了最先进的性能。
1.介绍
时间线摘要的目标是获得沿时间线的事件演变轨迹。现有的时间线摘要方法,例如s [Li and Li, 2013; Ren et al., 2013]均是基于抽取的方法。但是,这些方法依赖于人为设计的特征,并不像生成方法那样灵活。在此,我们提出了生成式的时间线摘要任务,旨在简明地解释输入文章中的事件信息。表1中显示了一个示例案例,其中的文章由不同时期内的艺人事件组成,摘要正确地按顺序总结了来自输入文章的重要事件。
随着神经网络的发展,生成式的摘要方法最近被证明是有用的。但是,与传统的文档摘要不同,时间线摘要数据集由一系列带有时间戳的事件组成,因此对于时间线摘要模型而言,捕获此时间序列信息以更好地指导事件顺序生成至关重要。此外,如表1中的示例所示,糟糕的摘要会混淆名人的出生地和住所,第一张专辑和最畅销专辑。正如我们在实验中发现的那样,这种不一致问题是摘要任务中一个普遍面对的问题。
为了解决上述挑战,我们提出了一个基于存储器的时间线摘要(MTS)模型。具体来说,我们首先使用带有选择性阅读单元的事件嵌入模块来嵌入所有事件。然后,我们提出了一种存储时间序列信息的键值存储模块,以指导摘要生成过程。具体地说,存储模块中的键是表示时间序列信息的时间位置嵌入,而值是对应的事件表示。所有的键一起形成一个时间线,我们使用事件在时间轴上的时间位置来指导生成过程。最后,在每个解码步骤中,我们引入事件级注意力,并使用它来确定单词级注意力,以避免事件之间的混淆。
总体而言,我们的贡献可以总结如下:
- 我们提出了生成式的时间线摘要任务。
- 为了解决此任务,我们首先提出一个时间事件存储模型,以建模时间序列信息,用于指导事件顺序生成。
- 在每个解码步骤中,我们合并事件级信息以帮助确定单词级的注意力,以便生成的摘要可以避免事件之间的混淆。
- 我们还发布了第一个实际的大规模时间线摘要数据集。数据集上的实验结果证明了我们框架的有效性。
2.相关工作
我们详细介绍了有关时间线摘要,生成式摘要和键值存储网络的相关工作。
(1)Timeline summarization
时间线摘要任务首先由[Allan et al., 2001]提出,该任务从新闻主题中的每个事件中抽取单个句子。后来,一系列工作进一步研究了时间线摘要任务。还有一些工作专注于与时间线摘要有关的推文摘要。例如,[Ren et al., 2013]根据用户的历史记录和来自“社交圈”的协作性社交影响,考虑了基于时间的推文摘要任务。但是,以上所有工作都是基于抽取方法,不如生成式方法那么灵活。
(2)Abstractive summarization
最近,随着强大的文本生成神经模型的出现,生成总结也变得越来越流行。最近的工作包括[Hsu et al., 2018],他们使用句子级别的注意力来调节单词级别的注意力,从而减少了较少有人关注的句子中的单词的产生。他们的句子级别注意在生成过程中是静态的,而在我们的模型中,高层解码在每个解码步骤中根据当前生成的单词而变化,这是更合理的。
(3)Key-value memory network
[Miller et al., 2016]提出的键值存储是Memory Networks的简化版本,具有更好的可解释性,并已应用于文档阅读,问答,语言建模和神经机器翻译。在我们的工作中,我们将键值存储网络应用于时间线摘要任务,并将其融合到生成过程中。
3.问题定义
MTS将事件列表 X = { x 1 , . . . , x T e } X=\{x_1,...,x_{T_e}\} X={x1,...,xTe}作为输入,其中 T e T_e Te是事件数。每个事件 x i x_i xi是一个单词列表: x i = { w 1 i , w 2 i , . . . , w T w i i } x_i=\{w^i_1,w^i_2,...,w^i_{T^i_w}\} xi={w1i,w2i,...,wTwii},其中 T w i T^i_w Twi是事件 x i x_i xi的单词数目。MTS的目标是生成摘要 Y ^ = { y ^ 1 , . . . , y ^ T y } \hat Y= \{\hat y_1,...,\hat y_{T_y}\} Y^={y^1,...,y^Ty},该摘要不仅在语法上正确,而且与事件信息(例如发生地点和时间)一致。本质上,MTS会尝试优化参数以使概率 P ( Y ∣ X ) = ∏ t = 1 T y P ( y t ∣ X ) P(Y|X)= \prod^{T_y}_{t=1}P(y_t|X) P(Y∣X)=∏t=1TyP(yt∣X)最大化,其中 Y = { y 1 , . . . , y T y } Y=\{y_1,...,y_{T_y}\} Y={y1,...,yTy}是真实答案。
4.模型
4.1 Overview
在本节中,我们将详细介绍基于存储器的时间线摘要模型。MTS的概述如图1所示,可以分为三个模块:(1)事件嵌入模块(请参阅第4.2节):我们使用带有选择性阅读单元(SRU)的循环网络来学习每个事件的表示。(2)时间事件存储器(请参阅第4.3节):我们提出使用时间事件存储器来建立时间线,并使用事件在时间线中的位置来指导生成过程。(3)摘要生成器(请参阅第4.4节):最终,我们使用基于RNN的解码器来生成包含存储信息,事件级信息和单词级信息的答案。
4.2 Event Embedding Module
首先,我们使用嵌入矩阵
e
e
e将x_i中每个单词的one-hot表示映射到高维向量空间。然后,我们采用双向循环神经网络(Bi-RNN)对单词之间的交互进行建模:
h
t
i
=
L
S
T
M
e
n
c
(
[
e
(
w
t
i
)
;
p
i
]
,
h
t
−
1
i
)
(1)
h^i_t=LSTM_{enc}([e(w^i_t);p^i],h^i_{t-1})\tag{1}
hti=LSTMenc([e(wti);pi],ht−1i)(1)
其中,
;
;
;表示向量之间的拼接,
h
t
i
h^i_t
hti表示事件
x
i
x_i
xi在Bi-RNN中的第
t
t
t个单词的隐藏状态。为了捕获事件的顺序信息,我们随机初始化要包含在Bi-RNN输入中的第
i
i
i个事件的时间位置编码矢量
p
i
p_i
pi。除了获得单词表示之外,我们还需要获得事件表示。仅将Bi-RNN的最终状态
h
T
w
i
h^i_{T_w}
hTwi作为整个事件的表示并不能完全捕获整个事件的特征。因此,我们建立了[Chen et al., 2018]中提出的由SRU够成的第二个RNN,以获得新的事件表示
a
i
a^i
ai:
s
t
i
=
S
R
U
(
h
t
i
,
h
T
w
i
)
(2)
s^i_t=SRU(h^i_t,h^i_{T_w})\tag{2}
sti=SRU(hti,hTwi)(2)
a
i
=
s
T
w
i
(3)
a^i=s^i_{T_w}\tag{3}
ai=sTwi(3)
一般而言,用新的门替换了原始GRU中的更新门,使得SRU考虑到每个输入
h
t
i
h^i_t
hti和事件表示
h
T
w
i
h^i_{T_w}
hTwi。由于篇幅所限,我们在这里省略了细节,读者可以参考[Chen etal., 2018]。
到目前为止,我们获得了第
i
i
i个事件
a
i
a^i
ai和第
t
t
t个单词在
a
i
a^i
ai中的表示,即
h
t
i
h^i_t
hti。
4.3 Time-Event Memory
如引言中所述,在时间线摘要数据集中,生成的摘要应捕获时间序列信息以指导按摘要时间顺序生成。因此,我们提出了一个键值存储模块,其中的键一起构成了一个时间轴,该时间序列信息用于指导生成过程,如图2所示。
该存储器中的key是第4.2节中介绍的时间位置编码
p
i
p_i
pi。在第4.4节中,我们将使用key作为时间指导从存储中提取信息。对于value部分,其将局部方面的事件信息存储在局部值
v
1
v_1
v1中,将全局方面的事件信息存储在全局值
v
2
v_2
v2中。
v
1
v_1
v1仅将事件表示
a
i
a^i
ai存储为
v
1
i
v^i_1
v1i,这意味着
v
1
v_1
v1仅捕获当前输入文章中的事件信息。另一方面,
v
2
v_2
v2负责学习不同时间位置的事件的全局特征。因此,我们首先以与时间位置编码相同的方式为第
i
i
i个事件随机初始化
v
2
i
v^i_2
v2i。然后,我们建立一个门
ν
ν
ν,以结合当前batch中的平均事件表示
a
˙
\dot{a}
a˙作为子全局信息:
ν
i
=
σ
(
W
e
[
v
2
i
;
a
˙
i
]
+
b
e
)
(4)
ν^i=\sigma(W_e[v^i_2;\dot{a}^i]+b_e)\tag{4}
νi=σ(We[v2i;a˙i]+be)(4)
v
2
i
=
ν
i
⋅
v
2
i
+
(
1
−
v
i
)
⋅
a
˙
i
v^i_2=ν^i\cdot v^i_2+(1-v^i)\cdot \dot{a}^i
v2i=νi⋅v2i+(1−vi)⋅a˙i
其中
σ
σ
σ是sigmoid函数,
⋅
·
⋅是点积。通过这种方式,存储器可以在不同位置学习每个事件的全局特征并将其存储在
v
2
v_2
v2中。
4.4 Summary Generator
为了生成一致且有用的摘要,我们提出了一种基于RNN的解码器,该解码器结合了时间事件存储模块的输出和事件表示,如图2所示。
(1)上下文向量计算
与[Li et al., 2018]类似,我们随机初始化一个LSTM单元,并以所有事件表示的拼接作为输入,且使用其输出作为解码器的初始状态:
h
0
′
=
L
S
T
M
(
h
c
,
[
a
1
;
.
.
.
;
a
T
e
]
)
(6)
h'_0=LSTM(h_c,[a^1;...;a^{T_e}])\tag{6}
h0′=LSTM(hc,[a1;...;aTe])(6)
其中
h
c
h_c
hc是随机变量。接下来,按照 [Bahdanau et al., 2015]中的传统注意力机制,我们将输入文档动态地汇总到上下文向量
c
t
−
1
′
c_{t-1}'
ct−1′中,并且将第步
t
t
t解码计算为:
h
t
′
=
L
S
T
M
d
e
c
(
h
t
−
1
′
,
[
c
t
−
1
′
;
e
(
y
t
−
1
)
]
)
(7)
h'_t=LSTM_{dec}(h'_{t-1},[c'_{t-1};e(y_{t-1})])\tag{7}
ht′=LSTMdec(ht−1′,[ct−1′;e(yt−1)])(7)
其中
h
t
′
h'_t
ht′是第
t
t
t个解码步骤的隐藏状态,并将通过等式22中存储模块的输出进行修改。上下文向量
c
t
′
c'_{t}
ct′的计算公式为:
α
t
,
i
,
j
′
=
W
a
T
t
a
n
h
(
W
b
h
t
−
1
′
+
W
h
h
j
i
)
,
(8)
\alpha '_{t,i,j}=W^T_atanh(W_bh'_{t-1}+W_hh^i_j),\tag{8}
αt,i,j′=WaTtanh(Wbht−1′+Whhji),(8)
α
t
,
i
,
j
=
e
x
p
(
α
t
,
i
,
j
′
)
/
∑
k
=
1
T
e
(
∑
l
=
1
T
w
e
x
p
(
α
t
,
k
,
l
′
)
)
,
(9)
\alpha_{t,i,j}=exp(\alpha '_{t,i,j})/\sum^{T_e}_{k=1}(\sum^{T_w}_{l=1}exp(\alpha'_{t,k,l})),\tag{9}
αt,i,j=exp(αt,i,j′)/k=1∑Te(l=1∑Twexp(αt,k,l′)),(9)
c
t
′
=
∑
i
−
1
T
e
(
∑
j
=
1
T
w
α
t
,
i
,
j
h
i
d
)
.
(10)
c'_{t}=\sum^{T_e}_{i-1}(\sum^{T_w}_{j=1}\alpha_{t,i,j}h^d_i).\tag{10}
ct′=i−1∑Te(j=1∑Twαt,i,jhid).(10)
其中,我们首先使用解码器状态
h
t
−
1
′
h'_{t-1}
ht−1′与每个状态
h
j
i
h^i_j
hji计算并得出注意力分布
α
t
,
i
,
j
∈
R
T
d
α_{t,i,j}∈\mathbb R^{T^d}
αt,i,j∈RTd,如公式9所示。
h
j
i
h^i_j
hji表示事件
x
i
x_i
xi中第
j
j
j个单词的表示。然后,我们使用注意力分布
α
t
,
i
,
j
α_{t,i,j}
αt,i,j来获取文档状态的加权总和作为上下文向量
c
t
′
c'_{t}
ct′。
上下文向量
c
t
−
1
′
c'_{t-1}
ct−1′仅考虑单词级别,而不考虑事件级别的信息。但是,在时间线摘要中,重要的是,模型必须知道其当前正在描述哪个事件,否则它可能会使来自不同事件的信息混淆并导致不真实的摘要。因此,我们引入了一个与单词级注意力类似的事件级注意力
β
β
β,并使用它来调整单词级注意力:
β
t
,
i
′
=
W
c
T
t
a
n
h
(
W
d
h
t
−
1
′
+
W
h
a
i
)
,
(11)
\beta'_{t,i}=W^T_ctanh(W_dh'_{t-1}+W_ha^i),\tag{11}
βt,i′=WcTtanh(Wdht−1′+Whai),(11)
β
t
,
i
=
e
x
p
(
β
t
,
i
′
)
/
∑
j
=
1
T
e
e
x
p
(
β
t
,
j
′
)
,
(12)
\beta_{t,i}=exp(\beta'_{t,i})/\sum^{T_e}_{j=1}exp(\beta'_{t,j}),\tag{12}
βt,i=exp(βt,i′)/j=1∑Teexp(βt,j′),(12)
γ
t
,
i
,
j
=
α
t
,
i
,
j
β
t
,
i
(13)
\gamma_{t,i,j}=\alpha_{t,i,j}\beta_{t,i}\tag{13}
γt,i,j=αt,i,jβt,i(13)
现在新计算的上下文向量
c
t
c_t
ct(替换公式10中的
c
t
′
c'_t
ct′)为:
c
t
=
∑
i
=
1
T
e
(
∑
j
=
1
T
w
γ
t
,
i
,
j
h
i
d
)
(14)
c_t=\sum^{T_e}_{i=1}(\sum^{T_w}_{j=1}\gamma_{t,i,j}h^d_i)\tag{14}
ct=i=1∑Te(j=1∑Twγt,i,jhid)(14)
除了使用事件级注意力直接指导单词级注意外,我们还使用它来获取事件表示的加权总和,以在等式23中的投影层中进行拼接:
e
t
=
∑
i
=
1
T
e
β
t
,
i
a
i
(15)
e_t=\sum^{T_e}_{i=1}\beta_{t,i}a^i\tag{15}
et=i=1∑Teβt,iai(15)
(2)键值存储器使用
至此,我们已经完成了上下文向量的计算。接下来,我们介绍如何利用键值存储器。我们首先使用隐藏状态
h
t
′
h'_t
ht′来处理内存中的每个键。如第4.3节所述,keys(即时间位置嵌入)与代表时间序列信息的时间线一致。因此,我们让模型利用此顺序信息,并将时间位置编码和当前隐藏状态之间的相关性计算为时间注意力
π
(
p
i
,
h
t
′
)
π(p^i,h'_t)
π(pi,ht′):
π
(
p
i
,
h
t
′
)
=
e
x
p
(
h
t
′
W
e
p
i
)
/
∑
j
=
1
T
e
e
x
p
(
h
t
′
W
e
p
j
)
(16)
π(p^i,h'_t)=exp(h'_tW_ep^i)/\sum^{T_e}_{j=1}exp(h'_tW_ep^j)\tag{16}
π(pi,ht′)=exp(ht′Wepi)/j=1∑Teexp(ht′Wepj)(16)
然后时间注意力被用于加权获取存储器中局部值
v
1
v_1
v1和全局值
v
2
v_2
v2:
m
t
1
′
=
∑
i
=
1
T
e
π
(
p
i
,
h
t
′
)
v
1
i
(17)
m^{1'}_t=\sum^{T_e}_{i=1}\pi(p^i,h'_t)v^i_1\tag{17}
mt1′=i=1∑Teπ(pi,ht′)v1i(17)
m
t
2
′
=
∑
i
=
1
T
e
π
(
p
i
,
h
t
′
)
v
2
i
(18)
m^{2'}_t=\sum^{T_e}_{i=1}\pi(p^i,h'_t)v^i_2\tag{18}
mt2′=i=1∑Teπ(pi,ht′)v2i(18)
其中,
m
t
1
′
和
m^{1'}_t和
mt1′和m^{2’}_t存储不同级别的信息,因此在生成器中应发挥不同的作用。
通过一个fusion门,将局部值
m
t
1
′
m^{1'}_t
mt1′变为
m
t
1
m^1_t
mt1,并将其合并到公式23中的投影层中。
g
t
1
=
σ
(
W
o
(
[
h
t
−
1
′
;
c
t
;
m
t
1
′
]
)
)
(19)
g^1_t=\sigma(W_o([h'_{t-1};c_t;m^{1'}_t]))\tag{19}
gt1=σ(Wo([ht−1′;ct;mt1′]))(19)
m
t
1
=
g
t
1
⋅
m
t
1
′
(20)
m^1_t=g^1_t\cdot m^{1'}_t\tag{20}
mt1=gt1⋅mt1′(20)
我们将局部值放在投影层中,因为
m
t
1
′
m^{1'}_t
mt1′在输入中存储了详细信息而不是全局特征,因此在生成每个单词时应发挥重要作用。
至于全局值
m
t
2
′
m^{2'}_t
mt2′,它将事件的全局特征存储在不同的位置,从而应该影响整个生成过程。具体来说,来自
m
t
2
′
m^{2'}_t
mt2′的信息通过一个门被融合到解码状态
h
t
−
1
′
h'_{t-1}
ht−1′中:
g
t
2
=
σ
(
W
n
(
h
t
−
1
′
;
c
t
;
m
t
2
′
)
)
(21)
g^2_t=\sigma(W_n(h'_{t-1};c_t;m^{2'}_t))\tag{21}
gt2=σ(Wn(ht−1′;ct;mt2′))(21)
h
t
−
1
′
=
g
t
2
⋅
h
t
−
1
′
+
(
1
−
g
t
2
)
⋅
m
t
2
′
(22)
h'_{t-1}=g^2_t\cdot h'_{t-1}+(1-g^2_t)\cdot m^{2'}_t\tag{22}
ht−1′=gt2⋅ht−1′+(1−gt2)⋅mt2′(22)
最后,使用一个输出投影层以获取词表上的最终生成词汇分布
P
v
P_v
Pv:
P
v
=
s
o
f
t
m
a
x
(
W
v
[
m
t
1
;
h
t
′
;
c
t
;
e
t
]
)
P_v=softmax(W_v[m^1_t;h'_t;c_t;e_t])
Pv=softmax(Wv[mt1;ht′;ct;et])
其中,我们将解码器LSTM的输出
h
t
′
h'_t
ht′,上下文向量
c
t
c_t
ct和存储向量
m
t
m_t
mt连接起来,作为输出投影层的输入。
为了解决OOV问题,我们使用了指针网络,它使解码器能够复制源文本中的单词。指针网络的设计与 [See et al.,
2017]中使用的模型相同,因此由于空间有限,我们省略了此过程。
我们的目标函数是目标词
y
t
y_t
yt的负对数似然,如公式24所示:
L
=
−
∑
T
=
1
T
s
l
o
g
P
v
(
y
t
)
(24)
\mathcal L=-\sum^{T_s}_{T=1}logP_v(y_t)\tag{24}
L=−T=1∑TslogPv(yt)(24)
其中,梯度下降法用于更新所有参数以最小化此损失函数。