文章目录
1 简介
论文题目:Constructing Narrative Event Evolutionary Graph for Script Event Prediction
论文来源:IJCAI 2018
论文链接:https://arxiv.org/pdf/1805.05081.pdf
代码链接:https://github.com/eecrazy/ConstructingNEEG_IJCAI_2018
1.1 动机
- 先前的基于事件对和事件链的方法,不能充分地使用稠密的事件联系,限制了事件预测的能力。
1.2 创新
- 第一个提出构建事件图(不是事件对和事件链),进行脚本事件预测任务。
- 提出了一个大规模图神经网络,可以在大规模稠密有向图上建模事件交互,更好地学习事件表示进行预测。
2 背景知识
脚本事件预测是给定现有的事件上下文,需要从候选列表中选择最合理的后续事件,如下图。
如下图例子,给定一个事件上下文A(enter),B(order),C(serve),需要从候选列表中(D(eat)和E(talk))选择最合理的后续事件,基于事件对和事件链的模型很容易选择错误的答案E,因为在训练集中C和E的关系比C和D更紧密。但是通过构建事件图,上下文事件B和C和候选事件D构成了紧密的联系,表示D是更大的可能成为上下文事件A,B,C的后续事件。
3 方法
如下图所示,模型主要包括两个部分,第一个部分为基于记叙文事件链构建事理图谱,第二个部分是使用一个大规模图神经网络解决在结构的事件图上推理问题。
2.1 构建记叙文事理图谱
记叙文事理图谱包括两个部分:
- 从新闻语料库中抽取记叙文事件对
- 基于事件对构建记叙文事理图谱
首先抽取记叙文事件链集
S
=
{
s
1
,
s
2
,
s
3
,
.
.
.
,
s
n
}
S=\{s_1,s_2,s_3,...,s_n\}
S={s1,s2,s3,...,sn},其中
s
i
=
{
T
,
e
1
,
e
2
,
e
3
,
.
.
.
,
e
m
}
s_i=\{T,e_1,e_2,e_3,...,e_m\}
si={T,e1,e2,e3,...,em},T是事件链中全部事件的主角实体,
e
i
e_i
ei是一个事件包含4个成分
{
p
(
a
0
,
a
1
,
a
2
)
}
\{p(a_0,a_1,a_2)\}
{p(a0,a1,a2)},p是谓语动词,
a
0
,
a
1
,
a
2
a_0,a_1,a_2
a0,a1,a2分别是主语,宾语和动词的间接宾语。
将记叙文事理图谱G ={V,E},其中
V
=
{
v
1
,
v
2
,
v
3
,
.
.
.
,
v
p
}
V=\{v_1,v_2,v_3,...,v_p\}
V={v1,v2,v3,...,vp}为点集,
E
=
{
l
1
,
l
2
,
l
3
,
.
.
.
,
l
Q
}
E=\{l_1,l_2,l_3,...,l_Q\}
E={l1,l2,l3,...,lQ}
为边集。为了解决事件的稀疏问题,将事件
e
i
e_i
ei定义为抽象形式
(
v
i
,
r
i
)
(v_i,r_i)
(vi,ri),其中
v
i
v_i
vi为谓语动词原型,
r
i
r_i
ri是
v
i
v_i
vi对实体链T的语法依赖关系,这种事件表示被称为predicate-GR,将每一个predicate-GR二元语法当作一条边
l
i
l_i
li,每一个边
l
i
l_i
li是一个带权重的有向边
v
i
v_i
vi→
v
j
v_j
vj,权重计算如下。
2.2 大规模图神经网络
GGNN(gated graph neural network)通过事件和门控循环单元改进反向传播的优化策略,但GGNN的输入为整个图,不能高效地处理包含成百上千个结点的大规模图。为了用于大规模图,借用划分数据集的观点,不将整个图输入到GGNN,对于每个训练实例仅输入一个带上下文和候补事件结点的子图(如上图3b),最后学习的结点表示将被使用解决图上的推理问题。
如上图3c,大规模图神经网络的整个框架包含三个主要部分:
- 表示层,学习初始的事件表示。
- 门控图神经网络层,建模事件的交互,更新初始的事件表示。
- 选择正确的后续事件,计算上下文和候补事件的相关性分数,选择正确的后续事件。
2.2.1 学习初始事件
通过联合动词和论元的预训练词嵌入来学习初始事件表示,对于超过一个单词的论元,仅使用解析器识别的头词,不在词典中的词和缺失的论元被表示为0向量。
给定一个事件
e
i
=
{
p
(
a
0
,
a
1
,
a
2
)
}
e_i=\{p(a_0,a_1,a_2)\}
ei={p(a0,a1,a2)}和它的动词和论元的词嵌
v
p
,
v
a
0
,
v
a
1
,
v
a
2
v_p,v_{a_0},v_{a_1},v_{a_2}
vp,va0,va1,va2,下面有几种方式可以通过一个映射函数
v
e
i
=
f
(
v
p
,
v
a
0
,
v
a
1
,
v
a
2
)
v_{e_i}=f(v_p,v_{a_0},v_{a_1},v_{a_2})
vei=f(vp,va0,va1,va2)得到整个事件vei的表示。
- 平均:使用动词和全部论元向量的平均值作为整个事件的表示。
- 非线性转换: v e = t a n h ( W p ⋅ v p + W 0 ⋅ v a 0 + W 1 ⋅ v a 1 + W 2 ⋅ v a 2 + b ) v_e=tanh(W_p{\cdot}v_p+W_0{\cdot}v_{a_0}+W_1{\cdot}v_{a_1}+W_2{\cdot}v_{a_2}+b) ve=tanh(Wp⋅vp+W0⋅va0+W1⋅va1+W2⋅va2+b)
- 拼接:拼接动词和全部论元向量作为整个事件的表示。
2.2.2 基于GGNN更新事件表示
GGNN主要是建模全部上下文和候选事件的交互,主要的挑战是如何在大规模图上训练。为了训练GGNN模型在成百上千事件结点的记叙文事理图谱上,每次仅输入一个小的子图,而不是整个图。
GGNN的输入为两个矩阵
h
(
0
)
h^{(0)}
h(0)和A,
h
(
0
)
=
{
v
e
1
,
v
e
2
,
.
.
.
,
v
e
n
,
v
e
c
1
,
v
e
c
2
,
.
.
.
,
v
e
c
k
}
h^{(0)}=\{v_{e_1},v_{e_2},...,v_{e_n},v_{e_{c_1}},v_{e_{c_2}},...,v_{e_{c_k}}\}
h(0)={ve1,ve2,...,ven,vec1,vec2,...,veck}包含初始上下文和后续候选事件向量,A为子图的邻接矩阵,计算如下式。
A
[
i
,
j
]
=
{
w
(
v
j
∣
v
i
)
,
v
i
→
v
j
∈
E
0
,
o
t
h
e
r
A[i,j]=\left\{ \begin{array}{rcl} w(v_j|v_i), & & {v_i→v_j∈E}\\ 0, & & {other} \end{array} \right.
A[i,j]={w(vj∣vi),0,vi→vj∈Eother
基本的GGNN结构如下:
GGNN的操作类似GRU,上面公式4使用有向的邻接矩阵A在图中的不同结点传播信息,
a
(
t
)
a^{(t)}
a(t)包括来自边的激活。其余的是类似GRU的更新,包含不同结点的更新和从以前的时间点更新每个结点的隐藏状态,
z
(
t
)
z^{(t)}
z(t)和
r
(
t
)
r^{(t)}
r(t)是更新和重置门。GGNN的输出
h
(
t
)
h^{(t)}
h(t)被当作上下文和候选事件更新过的表示
2.2.3 选择正确的后续事件
获得每个事件的隐藏状态之后,使用这些隐藏状态建模事件对关系。GGNN的上下文事件输出为 h 1 ( t ) , h 2 ( t ) , . . . , h n ( t ) h_1^{(t)},h_2^{(t)},...,h_n^{(t)} h1(t),h2(t),...,hn(t),候选事件输出是 h c 1 ( t ) , h c 2 ( t ) , . . . , h c k ( t ) h_{c_1}^{(t)},h_{c_2}^{(t)},...,h_{c_k}^{(t)} hc1(t),hc2(t),...,hck(t),给定一个事件对 h i ( t ) ( i ∈ [ 1... n ] ) h_i^{(t)}(i∈[1...n]) hi(t)(i∈[1...n])和 h c j ( t ) ( i ∈ [ 1... k ] ) h_{c_j}^{(t)}(i∈[1...k]) hcj(t)(i∈[1...k]),它们的相关分数计算为 s i j = g ( h i ( t ) , h c j ( t ) ) s_{ij}=g(h_i^{(t)},h_{c_j}^{(t)}) sij=g(hi(t),hcj(t)),分数函数g有很多选择,介绍4种常用的相似度计算如下:
- Manhattan Similarity
- Cosine Similarity
- Dot Similarity
- Euclidean Similarity
给定 s i j s_{ij} sij为上下文事件 h i t h_i^{t} hit和后续候选事件 h c j ( t ) h_{c_j}^(t) hcj(t),对于给定的 e 1 , e 2 , . . . , e n e_1,e_2,...,e_n e1,e2,...,en事件, e c j e_{c_j} ecj的可能性为 s j = 1 n ∑ i = 1 n s i j s_j=\frac{1}{n}\sum^n_{i=1}s_{ij} sj=n1∑i=1nsij,通过 c = m a x s j c=max s_j c=maxsj选择正确的后续事件。
同时使用注意力机制,因为对于选择正确的后续事件,不同的上下文事件有不同的权重。使用
注意力神经网络计算每个上下文事件对于候选事件的相对权重。
相关性分数计算公式如下:
使用margin loss作为损失函数,定义如下, s I j s_{I_j} sIj是第I个上下文事件和对应的第j个候选事件,y是正确候选事件的序号:
使用DeepWalk算法在记叙文事理图谱上训练predicate-GR的编码(效果比使用Word2vec训练事件链好)和使用Skipgram算法训练论元 a 0 , a 1 , a 2 a_0,a_1,a_2 a0,a1,a2的编码。
4 实验
实验结果如下图。
模型的学习曲线如下图,可以发现SGNN很快就达到了高准确率,准确率一直超过PairLSTM模型。
给定事件
e
i
e_i
ei的不同动词和论元编码
v
p
,
v
a
0
,
v
a
1
,
v
a
2
v_p,v_{a_0},v_{a_1},v_{a_2}
vp,va0,va1,va2,不同事件语义组合方法的对比实验,结果如下图
不同相似性计算函数的对比实验结果如下图
5 总结
- 使用事件图解决脚本事件预测问题,基于记叙文事件链构建记叙文事理图谱
- 提出大规模图神经网络,建模事件联系和更好的学习事件表示。