公众号:数据挖掘与机器学习笔记

1.简介

事件抽取是把含有事件信息的非结构化文本以结构化的形式呈现出来,在自动文摘、自动问答、信息检索等领域有着广泛的应用。近些年来 ,事件抽取一直吸引着许多研究机构和研究者的注意力。MUC (Message Understanding Conference) 会议、ACE ( Automatic Content Extraction) 会议是典型的含有事件抽取任务的评测会议。在调研中发现,ACE 2005作为论文数据集占据了主流,ACE 2005的事件抽取数据集包括英文、中文和阿拉伯语。

事件是涉及参与者的特定发生,事件是发生的事情,事件可以经常被描述为状态的改变。

ACE定义中的事件由事件触发词(Event Trigger)和描述事件结构的元素(Argument)构成。事件触发词(trigger)是能够触动事件发生的词,是决定事件类型最重要的特征词,决定了事件类别/子类别。元素用于填充事件模版,两者完整的描述了事件本身

事件抽取任务可以由下面两个步骤主要组成:

  1. 事件检测(Event Detection):主要是根据上下文识别出触发词以及代表的事件类型和子类型,ACE2005定义了8种事件类别以及33种子类别,每种事件类别/子类别 对应唯一的事件模版。
  2. 事件元素识别(Argument Detection):事件元素是指事件的参与者。根据所属的事件模版,抽取相应的元素,并为其标上正确的元素标签。

2.事件抽取任务

我们主要关注自动上下文抽取(Automatic Context Extraction,ACE)评估的事件抽取任务。ACE将事件定义为某些事情发生或者导致状态改变。使用以下术语:

(1)事件描述:一个词或者语句描述事件发生,包含一个触发词和任意数量的元素。

(2)事件触发词:能够清晰表达事件发生的主要词

(3)事件元素:实体描述、时间表达式或者事件参与者或者事件描述中带有特定角色的属性

ACE标注了8中类型和33中子类型(如Attack,Die,Start-Position)针对事件描述。每个事件子类型有自己的事件角色集,这些角色由事件元素组成。举例,Die事件的角色包括Place、Victim和Time。所有事件子类型的角色总数是36.

给定一个英文文本文档,一个事件抽取系统需要识别出每个句子中的事件子类型的事件触发词和相应的角色元素。事件元素(如实体描述、时间表达式等)会预先提供给事件抽取系统。

3.模型

W=w1,w2,…,wnW=w_1,w_2,\dots,w_nW=w1,w2,,wn表示句子序列,nnn表示序列长度,wiw_iwi是第iii个单词。E=e1,e2,…,ekE=e_1,e_2,\dots,e_kE=e1,e2,,ek表示序列中所有的实体,kkk是实体的数量。每个实体带有头部偏移量和事件类型。进一步假设i1,i2,…,iki_1,i_2,\ldots,i_ki1,i2,,ike1,e2,…,eke_1,e_2,\dots,e_ke1,e2,,ek的最后单词的索引。

在事件抽取中,序列中每个单词wiw_iwi需要预测出一个事件子类型。如果wiw_iwi是感兴趣事件的触发词,我们需要预测出事件中每个实体eje_jej扮演的角色。

本文中事件抽取的联合模型由两个阶段组成:

  • 编码阶段:使用循环神经网络对输入序列进行表示

  • 预测阶段:使用新的表示来同时进行事件触发词和元素角色的识别。

    如图1所示:

    image-20201128213419430

3.1 编码

3.1.1 句编码(sentence encoding)

在编码阶段,首先把每个单词wiw_iwi转换成向量xix_ixi,xix_ixi由下列三个向量拼接而成:

  • wiw_iwi的词嵌入Embedding向量:使用预训练的词向量。
  • wiw_iwi的事件类型的实值embedding向量。该向量参考之前的工作(Nguyen and Grishman, 2015b).通过查找实体类型embedding表获得。使用BIO标注方案为句子中每个单词赋予实体类型标签。
  • 一种二进制向量,其维数对应于依赖树中单词之间可能的关系。只有在W的依赖树中存在与wiw_iwi相对应的关系的一条边时,该向量在每维上的值才设为1。这个向量表示依赖特征,这在之前的研究中已经显示是有帮助的。

不同于之前的神经网络在EE上的研究(Nguyen and Grishman, 2015b; Chen et al.,
2015),这里不使用相对位置特征。理由是对于触发器和事件元素,我们联合预测整个句子,因此在句子中没有固定的位置用于anchoring。

从单词wiw_iwixix_ixi的转换本质上就是把输入序列WWW转换成实值向量序列X=(x1,x2,…,xn)X=(x_1,x_2,\ldots,x_n)X=(x1,x2,,xn),从而可以被循环神经网络利用来学习一个更有效的表示。

3.1.2 RNN(Recurrent Netural Networks)

考虑输入序列X=(x1,x2,…,xn)X=(x_1,x_2,\ldots,x_n)X=(x1,x2,,xn),在每个时间步iii,我们基于当前的输入向量xix_ixi和前一个隐藏向量向量αi−1\alpha _{i-1}αi1计算当前隐藏向量αi\alpha _iαi,使用非线性转换函数计算:Φ:αi=Φ(xi,αi−1)\Phi : \alpha _i=\Phi(x_i,\alpha_{i-1})Φ:αi=Φ(xi,αi1).对整个XXX进行该计算以产生隐藏向量序列α1,α2,…,αn\alpha _1,\alpha _2,\ldots,\alpha _nα1,α2,,αn,表示为$\overrightarrow {RNN}(x_1,x_2,\ldots,x_n)=(\alpha _1,\alpha_2,\ldots,\alpha_n) $

循环机制的一个重要特性是能够自适应地把位置1到iii的上下文信息累加到隐藏向量αi\alpha _iαi,使得αi\alpha _iαi具有丰富的表示。然而,αi\alpha _iαi不足以预测位置iii事件触发器和事件元素,因为预测还依赖于未来的上下文信息(如从位置iii到位置nnn)。为了解决该问题,使用另一个RNN反向从XnX_nXnX1X_1X1来生成第二个隐藏向量序列:RNN←(xn,xn−1,…,x1)=(αn‘,αn−1‘,…,α1‘)\overleftarrow {RNN}(x_n,x_{n-1},\ldots,x_1)=(\alpha _n^ ‘,\alpha _{n-1}^ ‘,\ldots,\alpha _1^ ‘)RNN

(xn,xn1,,x1)=(αn,αn1,,α1)其中,αi‘\alpha _i^ ‘αi表示从位置nnniii的上下文信息。最后,通过合并(α1,α2,…,αn)(\alpha _1,\alpha_2,\ldots,\alpha_n)(α1,α2,,αn)(αn‘,αn−1‘,…,α1‘)(\alpha _n^ ‘,\alpha _{n-1}^ ‘,\ldots,\alpha _1^ ‘)(αn,αn1,,α1)得到序列XXX的表示向量,hi=[αi,αi‘]h_i=[\alpha _i,\alpha_i ^ ‘]hi=[αi,αi]

关于非线性函数,最简单的就是使用前馈神经网络,但是会存在梯度消失问题,使得训练RNN很困难。可以使用LSTM来解决该问题。在这篇论文中,我们使用LSTM的变种GRU。GRU可以达到LSTM想应的性能。

3.2 预测

每个时间步,维护一个二进制记忆向量GitrgG_i ^{trg}Gitrg用于预测触发器,二进制记忆矩阵GiargG_i ^{arg}GiargGiarg/trgG_i ^{arg/trg}Giarg/trg用于预测事件元素,这些向量、矩阵被初始化为0。在训练过程中进行更新。

给定h1,h2,…,hnh_1,h_2,\ldots,h_nh1,h2,,hn,和初始化的记忆向量/矩阵,联合预测过程循环进行n词(每个句子n个token)。在每个时间步执行下面三个步骤:

(i) 预测wiw_iwi的触发器(trigger)

(ii)预测所有实体的事件元素角色

(iii)使用上一步的记忆向量/矩阵来计算当前时间步的记忆向量/矩阵Gitrg,Giarg,Giarg/trgG_i ^{trg},G_i ^{arg},G_i^{arg/trg}Gitrg,Giarg,Giarg/trg,预测输出。

上述过程的结果是wiw_iwi的触发器类型tit_iti,预测的元素角色αi1,αi2,…,αik\alpha _{i1},\alpha _{i2},\ldots,\alpha _{ik}αi1,αi2,,αik和当前时间步的记忆向量/矩阵Gitrg,Giarg,Giarg/trgG_i ^{trg},G_i ^{arg},G_i^{arg/trg}Gitrg,Giarg,Giarg/trgtit_iti是事件子类型或者"Other"。aija_{ij}aij是相对一wiw_iwi的实体eje_jej的元素角色。

3.2.1 Trigger预测

对于trigger的预测,首先计算wiw_iwi特征表示向量RitrgR_i ^{trg}Ritrg,使用下面三个向量的合并结果:

  • hih_ihi

  • LitrgL_i ^{trg}Litrg:Litrg=[D[wi−d],…,D[wi],…,D[wi+d]]L^{trg}_i = [D[w_{i-d}],…,D[w_{i}],…,D[w_{i+d}]]Litrg=[D[wid],,D[wi],,D[wi+d]]wiw_iwi 跟它上下文的 embedding,就是 Word2Vec 得到的那个拼到一起;

  • Gi−1trgG^{trg}_{i-1}Gi1trg:前一步的记忆向量

    Ritrg=[hi,Litrg,Gi−1trg]R_i^{trg} = [h_i,L^{trg}_i,G^{trg}_{i-1}]Ritrg=[hi,Litrg,Gi1trg]

得到特征向量 RitrgR_i^{trg}Ritrg之后,再把一句话的 $n $个特征向量过一层全连接网络、过一层 softmax,就得到每个 token $w_i $是 t 这种类型的 trigger 的概率分布 Pi;ttrgP^{trg}_{i;t}Pi;ttrg,每个 type 都选概率最大的,就得到了 trigger 及 event type 的预测。训练过程是 event type t 作为标签,有监督训练。这篇文章用的是 mini-batch SGD。

3.2.2 事件元素角色预测

首先,对于 token wiw_iwi,如果它的 event type 是 others(不是 trigger),那么可以直接把 ai1,…,aika_{i1},…,a_{ik}ai1,,aik 也全都设成 others。否则,就开始在句子里,遍历每个 entity$ e_1,…,e_k。对于每个实体。对于每个实体e_j$,使用下列步骤来预测元素角色:

首先,生成eje_jej关于wiw_iwi特征表示向量Rijarg=[hi,hij,Lijarg,Bij,Gi−1arg[j],Gi−1arg/trg[j]]R_{ij}^{arg} = [h_i,h_{ij},L_{ij}^{arg},B_{ij},G_{i-1}^{arg}[j],G_{i-1}^{arg/trg}[j]]Rijarg=[hi,hij,Lijarg,Bij,Gi1arg[j],Gi1arg/trg[j]]:

  • hih_ihi是编码时得到的整句话关于$ w_i 的编码,的编码,,h_{ij}$是编码时得到的整句话关于 $e_j $的编码;

  • Lijarg=[D[wi−d],…,D[wi],…,D[wi+d],D[wij−d],…,D[wij],…,D[wij+d]]L_{ij}^{arg}= [D[w_{i-d}],…,D[w_{i}],…,D[w_{i+d}],D[w_{i_j-d}],…,D[w_{i_j}],…,D[w_{i_j+d}]]Lijarg=[D[wid],,D[wi],,D[wi+d],D[wijd],,D[wij],,D[wij+d]]wiw_iwi跟它上下文的embedding,以及 eje_jej 跟它上下文的 embedding 全部拼一起;

  • BijB_{ij}BijVijV_{ij}Vij过一层神经网络的结果(为了“further abstraction”,我理解就是降维、密集),这个 VijV_{ij}Vij 是 [1] 中提出的,是一个长度为 8 的 binary 向量

  • Gi−1arg[j]G_{i-1}^{arg}[j]Gi1arg[j]Gi−1arg/trg[j]G_{i-1}^{arg/trg}[j]Gi1arg/trg[j]是上一步的记忆矩阵Gi−1arg[j]G_{i-1}^{arg}[j]Gi1arg[j]Gi−1arg/trg[j]G_{i-1}^{arg/trg}[j]Gi1arg/trg[j]关于eje_jej的那一行。

第二步,使用前馈神经网络和softmax把RijargR_{ij}^{arg}Rijarg转为概率分布Pij;atrgP_{ij;a}^{trg}Pij;atrg,概率最大的就是元素的角色。

其中 a 为一种事件元素角色,最终获得对于wiw_iwieje_jej的事件元素角色预测结果aij=argmaxa(pij;aarg)a_{ij}=argmax_a(p_{ij;a}^{arg})aij=argmaxa(pij;aarg)。若eje_jej并非我们关注的角色,则将eje_jej赋值为"Other"。

3.2.3记忆向量/矩阵

事件抽取的一个重要特性是在同一个句子中事件触发器标签和事件元素角色之间存在依赖。本文提出使用记忆向量矩阵Gitrg、Giarg、Giarg/trgG_i^{trg}、G_i^{arg}、G_i^{arg/trg}GitrgGiargGiarg/trg来编码事件触发器和事件元素角色之间的依赖关系,并使用它们来预测事件触发词和角色。

  • 记忆向量GitrgG_i ^{trg}Gitrg:编码事件触发词子类型之间的依赖

    Gitrg∈{0,1}nT,i=0,1,…,n,nTG_i ^{trg } \in \{0,1\} ^{n_T},i=0,1,\ldots,n,n_TGitrg{0,1}nT,i=0,1,,n,nT是所有可能的触发词子类型的数目,该向量的更新策略为:

即若 w_i 的触发词子类型被预测为 $t_i $,则对应维度置为1,否则不做更改。这个记忆向量“记住”了到第 $i $步为止,有哪些触发词子类型被预测。

  • 记忆矩阵GiargG_i ^{arg}Giarg:编码事件元素角色之间的依赖

    Giarg∈{0,1}k×nAG_i ^{arg} \in \{0,1\}^{k \times n_A}Giarg{0,1}k×nA,其中 i=0,⋯, n 是本句中所有事件提及的数目,nAn_AnA 是所有可能的论元角色的数目,该矩阵的更新策略为

即若被 $w_i $预测为是事件触发词,且 $e_j 关于关于 w_i 的论元角色被预测为的论元角色被预测为a_{ij}$,则将矩阵中对应实体提及的 $e_j 行和论元角色行和论元角色 a_ij $的列置为1,否则不做更改。这个记忆矩阵“记住”了到第 $i $步针对 wiw_iwieje_jej 的论元角色预测为止,有哪些实体提及已经被预测成了哪些论元角色。

  • 记忆矩阵Giarg/trgG_i ^{arg/trg}Giarg/trg:编码事件元素角色和事件触发词子类型之间的依赖

    Giarg/trg∈{0,1}k×nTG_i^{arg/trg} \in \{0,1\} ^{k \times n_T}Giarg/trg{0,1}k×nT其中 i=0,⋯, n,更新策略为:

即若 $w_i $被预测为是事件触发词且其子类型为 $t_i ,则将矩阵对应实体提及,则将矩阵对应实体提及 e_j$ 的行和触发词子类型 $t-I $的列置为1,否则不做更改。这个记忆矩阵“记住”了到第 $i $步针对 $w_i $和 $e_j $的论元角色预测为止,有哪些论元角色和触发词子类型被预测。

3.3 训练

训练过程使用log似然函数作为损失函数,使用mini-batch和AdaDelta update rule的随机梯度下降算法优化模型,训练时也同时优化词嵌入表和实体类型嵌入表。

4.实验

4.1 资源、参数和数据集

  • 实体类型嵌入向量维度:50
  • 词向量维度:300
  • RNN的隐藏神经元:300
  • 上下文窗口大小:2
  • 前馈神经网络中的隐藏神经元Ftrg、Farg、FbinaryF^{trg}、F^{arg}、F^{binary}FtrgFargFbinary:600、600、300
  • mini-batch_size=50;Frobenius norms = 3
  • 使用English Gigaword corpus预训练的词向量,其中上下文窗口大小为5,采样频率为1e−051e-051e05负采样数量为10
  • 训练语料:ACE2005

4.2 记忆向量和矩阵

在使用C-CBOW模型预训练词嵌入表的情形下,针对三个记忆向量/矩阵Gtrg、Garg、Garg/trgG^{trg}、G^{arg}、G^{arg/trg}GtrgGargGarg/trg对事件抽取的触发词预测和事件元素角色预测的效果进行了实验,有或没有每一个记忆向量/矩阵构成了总共8种情形,它们的实验结果如下表。结果显示,$G^{trg} 和 G^{arg} $的应用对结果没有提升、反而降低了,本文认为是触发词子类型间和事件元素角色间的依赖不够强,导致它们并未在此模型中起作用。而编码事件角色和触发词子类型之间依赖的 $G^{trg/arg} $的应用则显著提升了实验结果。因此在后续实验中,模型仅应用 Gtrg/argG^{trg/arg}Gtrg/arg

4.3 词嵌入评估

对使用不同词嵌入算法预训练词嵌入表的效果进行评估,结果如下表。其中RANDOM是随机初始化,WORD2VEC是前人工作中使用Skip-gram模型在Google News语料上训练的词嵌入表。结果显示,使用预训练词嵌入表的实验结果明显优于随机初始化,所以预训练词嵌入表对事件抽取任务有十分重大的意义。使用C-CBOW模型的效果优于其他模型,因此在后续实验中,预训练词嵌入表全部使用C-CBOW模型。

4.4 与其他SOAT模型的比较

本文对比了Li’s baseline、Liao’scross-event、Hong’s cross-entity、Li’s structure、DMCNN,用JRNN指代本文所提出的模型,实验结果如下表。除了在触发词识别中略低于DMCNN模型,在其他任务中JRNN都取得了最好的效果,尤其是在事件元素检测和分类中,相比其他模型有较大的提升。实验结果证明了RNN和记忆特征在事件抽取任务中的特征表示的有效性。

4.5 一个句子包含多个事件

对一句话中包含多个事件的情况下的性能进行了实验验证,结果如下表所示,其中1/1代表一句中仅有一个事件,1/N代表一句中有多个事件。结果显示,在不管是一个事件还是多个事件的多数情形下,本文模型都取得了最好的性能。仅仅在事件元素预测任务中对于一个句子仅包含一个事件的情况下,性能低于DMCNN,本文认为这是因为DMCNN对于论元使用了位置嵌入特征,而本文的记忆矩阵 $G^{trg/arg} $在一个事件的情形下并未起作用。

参考

[1] 事件抽取及相关技术(1): 事件抽取及事件类型介绍 - 知乎 (zhihu.com)

[2](1条消息) 论文浅尝 | 使用循环神经网络的联合事件抽取_开放知识图谱-CSDN博客

论文阅读05:基于循环神经网络的联合事件抽取-Joint Event Extraction via Recurrent Neural Networks相关推荐

  1. 论文笔记 NAACL 2016|Joint Event Extraction via Recurrent Neural Networks

    文章目录 1 简介 1.1 动机 1.2 创新 2 背景知识 3 方法 3.1 编码 3.1.1 句子编码 3.1.2 RNN编码 3.2 预测 3.2.1 触发词预测 3.2.2 论元角色预测 3. ...

  2. 论文浅尝 | 使用循环神经网络的联合事件抽取

    余博涛,南京大学计算机科学与技术系,硕士研究生 论文连接:http://www.aclweb.org/anthology/N16-1034 发表会议:NAACL-HLT 2016 摘要 事件抽取(ev ...

  3. 论文阅读——《基于卷积神经网络的车行环境多类障碍物检测与识别》

    近期学习了卷积神经网络相关的知识,在课余时间阅读了一篇有关障碍物检测的硕士生论文,不过就阅读的过程而言,感觉硕士论文有些冗杂,容易让读者抓不到重点,而且篇幅较多,耗费时间有些长,以后阅读论文可以直接从 ...

  4. 论文阅读:基于图神经网络的分类法自动更新模型

    Evolving Taxonomy Based on Graph Neural Networks 摘要 分类法是人类对领域知识的理解和组织.在这个知识爆炸的世界中,如何自动进化分类法变得至关重要.在本 ...

  5. 论文阅读记录-基于深度神经网络的nilm系统家电识别

    记录一下关于非侵入负荷分解相关的论文文献 1.原文 <HOME APPLIANCE IDENTIFICATION FOR NILM SYSTEMS BASED ON DEEP NEURAL NE ...

  6. 论文学习——基于循环神经网络的电信行业容量数据预测方法

    文章目录 0 封面 1 标题 title 2 摘要 abstract 3 关键字 keywords 4 总结 conclusion 5 引言 introduction 6 介绍 LSTM 6.1 LS ...

  7. [论文阅读] (26) 基于Excel可视化分析的论文实验图表绘制总结——以电影市场为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  8. 论文阅读:基于LSTM的船舶航迹预测模型

    论文阅读:基于LSTM的船舶航迹预测模型 论文下载:https://download.csdn.net/download/qq_33302004/15449386 目录 1. 摘要 2. 文章段落主要 ...

  9. [论文阅读] (10)基于溯源图的APT攻击检测安全顶会总结

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. R语言ggplot2可视化并添加特定区间的回归线、R原生plot函数可视化并添加特定区间的回归线:Add Regression Line Between Certain Limits
  2. keil查看程序运行时间_你知道 KEIL 自带示波器吗?
  3. 【小松教你手游开发】【unity实用技能】计算目标物体是否在自己的扇形视野范围...
  4. UML序列图总结(Loop、Opt、Par和Alt)
  5. C#中Cookies的读取
  6. jQuery实现等比例缩放大图片让大图片自适应页面布局
  7. 轻松实现 CTreeCtrl 的全选与反选
  8. Kanas.net Framework 入门介绍
  9. Spring自动注入的几种方式
  10. python书在线阅读_这7本O’Reilly推出的免费Python电子书,够你看了
  11. 市政管理学(试题及答案)汇总
  12. 竞态条件的赋值_Go 译文之竞态检测器 race
  13. python分位数回归模型_分位数回归森林
  14. mysql 多条件求和_技巧|多条件查询求和,你会几种?
  15. 【游戏开发实战】使用Unity制作水果消消乐游戏教程(一):生成冰块阵列
  16. lenovo服务器换系统重装系统_联想电脑怎么重装系统|联想电脑重装系统步骤
  17. 计算日期差的方法c语言,C语言计算日期差的方法示例
  18. 基于小程序同城交易系统设计 同城小程序校园二手交易小程序毕业设计课题选题毕设毕业设计论文
  19. [附源码]计算机毕业设计基于Springboot校园运动会管理系统
  20. 【期末复习】计算机网络 谢希仁版(六)应用层

热门文章

  1. 一人说一个亲测有效的生活小窍门
  2. Java —— Decorator 装饰器模式
  3. 微软mcp证书有用吗_送给开学季的新生们,大学里必须考的六大证书,你都知道吗?...
  4. Office Word中横线的增加和删除方法
  5. 罗技F710手柄使用教程-ROS
  6. 佳能Canon imagePROGRAF iPF6410S 打印机驱动
  7. 汽车胎压监测(TPMS)系统为何用蓝牙?
  8. Linux实现NTP协议同步时间
  9. swift那些事儿 尾随闭包
  10. 计算机科学与技术专业考博课程,清华计算机科学与技术系 攻读博士学位研究生培养课程...