NAACL2019 | Event Detection without Triggers |
---|---|
Author | Shulin Liu, Yang Li, Xinpeng Zhou, Tao Yang, Feng Zhang (Tencent AI Lab) |
paper | https://www.aclweb.org/anthology/N19-1080.pdf |
code | https://github.com/liushulinle/event_detection_without_triggers |
事件检测(ED)的目标是检测事件的发生并对其进行分类。以前的工作通过识别和分类事件触发器来解决这个问题,事件触发器被定义为最清楚地表达事件发生的单词或短语。因此,现有的方法需要在训练数据中同时使用带标注的触发词和事件类型。然而,触发器对于事件检测来说并不重要,而且注释者要从给定的句子中,特别是从一个长句中选出“最清楚”的单词是非常耗时的。训练语料库的昂贵标注限制了现有方法的应用。为了减少手动操作,我们探索不使用触发器检测事件。在这项工作中,我们提出了一个新的框架,称为类型感知偏差注意机制神经网络(TBNNAM),它基于目标事件类型对句子的表示进行编码。实验结果证明了该方法的有效性。值得注意的是,与使用带注释触发器的最新技术相比,所提出的方法甚至达到了具有竞争力的性能。
1 Introduction
- 现有的方法是通过识别和分类事件触发词,将任务建模为单词分类来完成事件识别,这种方法需要带标注的事件触发词和事件类型进行训练。
- 但是,事件触发词其实并不重要。我们最终的目的是对事件进行分类,所以触发词只是中间结果。
- 此外,对事件触发词进行标注是很费时间的,需要投入大量人工成本。
因此,本文提出在没有事件触发器的情况下,通过文本分类对该任务进行建模。存在的两个挑战:
- 多标签问题:每个句子可能包含零个或多个事件。在机器学习中这被称为多标签问题。
- 触发词缺失问题:以往的方法中触发词都起着很重要的作用,在没有触发词的情况下对这些信息建模是有挑战性的。
-
为了解决第一个挑战,我们将多标签分类问题转化为多个二分类问题。给定一个句子 s s s,我们将其与任意一个预定义的事件类型 t t t组合为一个实例,根据句子 s s s是否包含事件 t t t可以将其标注为0或1。
假设共有三个预定义的事件类型 t 1 , t 2 , t 3 t_1,t_2,t_3 t1,t2,t3,而句子 s s s包含事件类型 t 1 , t 3 t_1,t_3 t1,t3。则可以转化为以下三个实例:
这样的话,如果一个句子中包含多个事件,则可以产生多个正对,从而很好地解决了多标签问题。 -
为了解决第二个挑战,我们提出了带注意力机制的类型感知偏差神经网络(TBNNAM),来对触发词信息进行建模。图1说明了该网络的框架。输入由两部分组成:一个带有NER标记的标记化句子和一个目标事件类型。如果给定的语句包含目标类型的事件,则输出 o o o应为1,否则为0(对于图1中给出的示例,输出应为1)。具体来说,在给定一个句子的情况下,该模型首先将输入标记转换为嵌入,然后通过LSTM层计算每个token的上下文表示。然后根据目标事件类型计算一个注意力向量α,期望触发词获得更高的分数。最后,基于α计算句子的表征 s a t t s_{att} satt, s a t t s_{att} satt更关注局部信息(触发词)。为了获取全局信息,最后的输出 o o o还连接到了最后一个LSTM单元,后者对输入语句的全局信息进行编码。
此外,为了加强正样本的影响,我们在模型中设计了一个偏差目标函数。
我们将我们的模型称为“类型感知”,因为语句的表示 s a t t s_{att} satt是基于目标事件类型计算的。
本文的主要贡献:
- 第一项专注于无触发事件检测的工作。与现有方法相比,该方法需要较少的人工标注。
- 提出了一个简单有效的模型解决了多标签和触发词缺失问题
- 实现了一系列baseline模型,并对它们进行了系统的评估和分析
3 Methodology
为了解决多标签问题,我们通过多个二分类对该任务进行建模。给定一个句子,它将与每个候选事件类型一起输入到一个二分类器中。我们添加了标签 N A NA NA以表示不包含任意事件类型的句子。为了捕捉隐藏的触发词信息,我们提出了一个简单而有效的模型,称为带注意力机制的类型感知偏差神经网络(TBNNAM)。我们的模型是“类型感知”的,因为它根据目标事件类型计算句子的表示。图1说明了该网络的框架。输入由两部分组成:一个带有NER标记的标记化句子和一个目标事件类型。如果给定的语句包含目标类型的事件,则输出 o o o应为1,否则为0(对于图1中给出的示例,输出应为1)。接下来,我们按照自下而上的顺序描述了这个模型的结构。
3.1 Input Tokens
给定一个句子,我们使用Stanford CoreNLP工具来将文本转换为token。ace2005语料库不仅标注了事件,还标注了每个给定句子的实体。根据前人的工作,我们在模型中使用了标注的实体标记。
3.2 Word/Entity Embeddings
从大量未标注数据中学习到的单词嵌入已经被证明能够捕捉到单词有意义的语义规律。在这项工作中,我们使用Skip-gram模型来学习NYT语料上的单词嵌入。
此外,我们为每个实体标记随机初始化一个嵌入表。通过查找这些嵌入表,所有输入字标记和实体标记都将转换为低维向量。在这项工作中,我们用 d w d_w dw表示单词嵌入的维数,用 d e d_e de表示实体嵌入的维数。
3.3 Event Type Embeddings
如图1所示,一个事件类型被转换成两个嵌入向量: t 1 t_1 t1和 t 2 t_2 t2。第一个(棕色)用于捕获局部信息(隐藏触发词),后一个(红色)用于捕获全局信息。它们都是随机初始化的。事件类型嵌入的维度用 d e v t d_{evt} devt表示。
3.4 LSTM Layer
如图1所示,LSTM层在单词和实体嵌入的串联序列上运行。LSTM有三个门(输入 i i i,遗忘 f f f和输出 o o o)和一个单元存储向量 c c c。输入门可以确定输入向量 x ( t ) x(t) x(t)如何改变存储单元的状态。输出门可以允许存储单元对输出产生影响。最后,遗忘门允许单元记住或忘记它以前的状态。
3.5 Attention Layer
因为我们的任务没有标注事件触发词,所以为了对隐藏的触发器进行建模,我们在方法中引入了注意力机制。
如图1所示,注意力向量
α
α
α是根据目标事件类型嵌入
t
1
t_1
t1和LSTM产生的隐藏状态
h
h
h来计算的。具体来说,给定句子中第
k
k
k个token的注意力分数由以下等式计算:
α
k
=
e
x
p
(
h
k
⋅
t
1
T
)
∑
i
e
x
p
(
h
i
⋅
t
1
T
)
α^k = \frac{exp(h_k·t_1^T)}{\sum_iexp(h_i·t_1^T)}
αk=∑iexp(hi⋅t1T)exp(hk⋅t1T)
在这个模型中,目标事件类型的触发词比其他词获得更高的分数。最后,用下面的等式计算句子的表示形式
s
a
t
t
s_{att}
satt
s
a
t
t
=
α
T
H
s_{att} = α^TH
satt=αTH
其中
α
=
[
α
1
,
…
,
α
n
]
α=[α_1,…,α_n]
α=[α1,…,αn]是注意力向量,
H
=
[
h
1
,
h
2
,
…
,
h
n
]
H=[h_1,h_2,…,h_n]
H=[h1,h2,…,hn]是矩阵,
h
k
h_k
hk是第
k
k
k个token的LSTM输出,
s
a
t
t
i
s_{atti}
satti是给定句子的表示。
3.6 Output Layer
如图1所示,最终输出
o
o
o连接到两个组件:
v
a
t
t
v_{att}
vatt 和
v
g
l
o
b
a
l
v_{global}
vglobal。一方面,利用
s
a
t
t
s_{att}
satt 和
t
1
t_1
t1 的点积计算
v
a
t
t
v_{att}
vatt,它被用来捕捉局部特征(特别是隐藏的触发词特征)。另一方面,LSTM的最后一层
h
n
h_n
hn 对全局信息进行编码,因此
v
g
l
o
b
a
l
=
h
n
⋅
t
2
T
v_{global}=h_n·t^T_2
vglobal=hn⋅t2T 被用作捕获句子的全局特征。最后,
o
o
o被定义为
v
a
t
t
v_{att}
vatt和
v
g
l
o
b
a
l
v_{global}
vglobal的加权和。
o
=
σ
(
λ
⋅
v
a
t
t
+
(
1
−
λ
)
⋅
v
g
l
o
b
a
l
)
o = σ(λ·v_{att}+(1-λ)·v_{global})
o=σ(λ⋅vatt+(1−λ)⋅vglobal)
其中
σ
σ
σ 为Sigmoid函数,
λ
∈
[
0
,
1
]
λ\in[0,1]
λ∈[0,1]是用于调节
v
a
t
t
v_{att}
vatt和
v
g
l
o
b
a
l
v_{global}
vglobal权重的超参数。
3.7 Bias Loss Function
基于以下原因,我们设计了偏置损失函数来增强正样本的影响:
- 正样本数量比负样本少的多。在我们的方法中,每个训练样本是一个
<句子,事件类型>
对,根据句子是否包含某种事件类型,其标签为1或者0。例如,我们总共有33个目标事件类型,如果一个句子只包含一个事件,那么它将被转换成32个负对和1个正对。大多数句子最多只能表达两个事件,因此负样本要比正样本多得多。 - 正样本比负样本信息更丰富。正对表示句子 s s s传递 t t t类型的事件,而负对表示 s s s不传递任何 t t t类型的事件。显然,前者蕴含的信息更丰富。
给定所有(假设为
T
T
T)训练样本
(
x
(
i
)
,
y
(
i
)
)
(x^{(i)},y^{(i)})
(x(i),y(i)),损失函数定义如下:
J
(
θ
)
=
1
T
∑
i
=
1
T
(
o
(
x
i
)
−
y
(
i
)
)
2
(
1
+
y
(
i
)
⋅
β
)
+
δ
∣
∣
θ
∣
∣
2
J(θ) = \frac{1}{T} \sum_{i=1}^T(o(x^i)-y^{(i)})^2(1+y^{(i)}·β)+δ||θ||^2
J(θ)=T1i=1∑T(o(xi)−y(i))2(1+y(i)⋅β)+δ∣∣θ∣∣2
其中 x x x 是由句子和目标事件类型组成的对, y ∈ { 0 , 1 } y \in \{0,1\} y∈{0,1}, θ θ θ 是模型的参数, δ > 0 δ>0 δ>0 是 L 2 L2 L2规范化项的权重。 ( 1 + y ( i ) ⋅ β ) (1+y^{(i)}·β) (1+y(i)⋅β) 是偏置项。具体而言,对于负样本( y ( i ) = 0 y^{(i)}=0 y(i)=0),该项的值为1;对于正样本( y ( i ) = 1 y^{(i)}=1 y(i)=1),该项的值为 1 + β 1+β 1+β,其中 β ≥ 0 β≥0 β≥0。
3.8 Training
我们通过使用一种简单的优化技术,即随机梯度下降(SGD)来训练该模型,该优化技术使用Adadelta规则对打乱的mini-batches进行训练。正则化是由一个dropout和L2范数实现的。
给定一个实例
x
x
x,模型根据以下等式为其指定一个标签
y
~
\widetilde{y}
y
:
y
~
=
{
0
o
(
x
)
<
0.5
1
o
t
h
e
r
w
i
s
e
\widetilde{y}=\begin{cases} 0 & o(x)<0.5 \\ 1 & otherwise \end{cases}
y
={01o(x)<0.5otherwise
其中 x x x是输入的实例, o ( x ) o(x) o(x)是 x x x通过模型的输出,而 y ~ \widetilde{y} y 是最终的预测结果。
4 Baseline Systems
由于这是第一个在没有触发器的情况下执行事件检测的工作,因此我们实现了一系列用于比较的Baseline系统,这些系统可以分为两类:基于二分类的方法和基于多分类的方法。
4.1 Binary Classification
图2说明了这些方法的框架。这些模型以句子和目标事件类型作为输入。然后通过查找嵌入表将所有输入转换为嵌入。这些模型使用与我们提出模型的相同的损失函数,其核心部分是句子编码。根据句子的编码策略,我们实现了三个比较模型:
B
C
−
C
N
N
、
B
C
−
L
S
T
M
l
a
s
t
、
B
C
−
L
S
T
M
a
v
g
BC-CNN、BC-LSTM_{last}、BC-LSTM_{avg}
BC−CNN、BC−LSTMlast、BC−LSTMavg
- B C − C N N BC-CNN BC−CNN采用CNN对句子进行编码。
- B C − L S T M l a s t BC-LSTM_{last} BC−LSTMlast 模型,使用LSTM对句子编码,将最后一个token的隐状态作为给定句子的表示。
- B C − L S T M a v g BC-LSTM_{avg} BC−LSTMavg 模型,使用LSTM对句子编码,将所有token的隐状态的平均值作为给定句子的表示。
4.2 Multi-class Classification
所有现有的方法都是通过多类分类来建模带有触发词的事件检测任务。给定一个句子,这些方法预测每个标记是否是事件触发器以及它触发的事件类型。给定一个句子,这些方法预测每个标记是否是事件触发词以及它触发的事件类型。
我们实现了几个基于多类分类的系统进行比较。由于我们的任务中没有标注的触发词,所有模型的输入就是句子。图3说明了这些模型的框架。
根据现有的工作,我们在softmax分类器上提出了负对数似然损失函数。根据句子编码策略,实现了
M
C
−
C
N
N
,
M
C
−
L
S
T
M
l
a
s
t
,
M
C
−
L
S
T
M
a
v
g
MC-CNN,MC-LSTM_{last},MC-LSTM_{avg}
MC−CNN,MC−LSTMlast,MC−LSTMavg
- MC-CNN模型使用CNN对句子进行编码
- M C − L S T M l a s t MC-LSTM_{last} MC−LSTMlast 模型,使用LSTM对句子编码,将最后一个token的隐状态作为给定句子的表示。
- M C − L S T M a v g MC-LSTM_{avg} MC−LSTMavg 模型,使用LSTM对句子编码,将所有token的隐状态的平均值作为给定句子的表示。
5 Experimental Results
5.1 Experimental Setup
数据集:
ACE2005,30篇文章作为开发集,40篇作为测试集,剩下529篇作为训练集
我们从语料库中删除了触发词的标注,使用Stanford CoreNLP 工具将每个文档分为句子。为每个句子分配一组标签,如果不含任何事件则标为NA。如果一个句子中包含多个类型相同的事件,我们仅保留一个。
评价指标:
- 准确率:正确预测事件在总预测事件中所占的比例
- 召回率:正确预测的事件在数据集的gold事件总数中的比例。
- F1: 2 ∗ P ∗ R P + R \frac{2 * P * R}{P+R} P+R2∗P∗R
超参数:
超参数通过网格搜索在开发数据集上进行调整。在所有的实验中,我们设置单词嵌入维度为200,实体类型嵌入维度为50, batch size为100,
L
2
L_2
L2norm的超参数为
1
0
−
5
10^{−5}
10−5,偏差项中的β为1.0。此外,我们还在开发数据集上调整
v
a
r
r
v_{arr}
varr 和
v
g
l
o
b
a
l
v_{global}
vglobal 中的
λ
λ
λ。图4显示了不同设置
λ
λ
λ的实验结果,最后我们将
λ
λ
λ设为0.25。在所有基于CNN的baseline系统中,filter windows 的大小被设置为1、2、3,每个windows有100个feature map。
5.2 Multi-class Classification vs. Binary Classification
- B C − ∗ BC-* BC−∗可以解决多标签问题,而 M C − ∗ MC-* MC−∗则不能。此外, M C − ∗ MC-* MC−∗比 B C − ∗ BC-* BC−∗的召回率要低得多,因为它们最多只能预测一个句子中的一个事件
- 使用CNN作为句子编码的方法,比用LSTM编码效果好。原因是触发词是事件检测的重要线索,而CNN擅长提取这些局部特征。
5.3 Overall Performances
- 表4中第一组是baseline系统的效果。
- 第二组是本文提出的方法,他们有相同的网络结构。 B C − L S T M a t t BC-LSTM_{att} BC−LSTMatt中 λ λ λ被置为1.0,以此对比本文模型中使用的注意力机制的作用。TBNNAM中 λ λ λ被置为0.25,因此它可以同时使用局部信息(由注意力机制捕获)和全局信息(由LSTM最后一个输出捕获)。
- 最后一组是在ace2005数据集上目前效果最好的方法。
分析可得:
- B C − l s t m a t t BC-lstm_{att} BC−lstmatt的性能优于所有的基线系统,具有显著的增益,证明了所提出的注意机制的有效性。
- TBNNAM的性能优于 B C − l s t m a t t BC-lstm_{att} BC−lstmatt(69.9%对66.3%),这意味着LSTM最后一个状态所捕获的全局信息对该任务也很重要。这种由注意机制捕获的全局信息和局部信息是互补的。
- 所有最先进的ED系统都需要带标注的触发词。在没有触发词的情况下,我们的方法获得了具有竞争力的结果,甚至超过了其中的一些。
5.4 Analysis of Weight α
图5展示了我们的模型学习到的注意向量α的几个例子。在第一种情况下,“died”是死亡事件最重要的关键词,我们的模型通过分配一个较大的注意力分数成功地捕捉到了这一特征。同样,在第二种情况下,“attack”是攻击事件的一个关键线索,我们的模型也学习了它并给它分配了一个很大的注意力分数。实际上,“died”和“attack”分别是死亡和攻击事件的触发词。因此,我们认为,虽然带标注的触发词不可用,但我们的模型仍然可以利用此任务的触发词信息。
此外,我们的方法还可以建模不同事件之间的依赖关系。例如,攻击事件通常与死亡事件同时发生。在Case1和Case2中(图5),我们的方法通过关注“died”和“fired”两个词来建模这些信息。
此外,第三种情况是负样本,因此没有关键线索。我们的模型给每个token分配了几乎相等的注意力分数。
5.5 Effects of Bias Term in Loss Function
在本节中,我们说明损失函数中偏置项的有效性。表5显示了实验结果。 以“ * \ Bias”命名的方法不使用偏差项。 从表中可以看出,在损失函数中带有偏差项的系统明显优于没有偏差项的系统,这证明了我们在第3.7节中分析的正确性,即在训练中应加强正样本。