dbRNN事件抽取


原论文:Jointly Extracting Event Triggers and Arguments by Dependency-Bridge RNN and Tensor-Based Argument Interaction

1. 概括

本论文的创新点我个人总结如下:

  1. 实现了事件触发词以及Argument的联合抽取,避开了Pipeline方法中错误的触发词识别结果会在网络中传播的问题;同时联合抽取的过程中,有可能通过元素抽取的步骤反过来纠正事件检测的结果。
  2. 将元素的互信息作为影响元素抽取结果的因素。举例说明:在下面的Figure 1中,如果确定了Palestine Hotelfired这一触发词的角色,又知道American tankPalestine Hotel都依赖于动词fired,那么American tank也是一个事件角色的概率就会增加。
    dbRNN事件抽取
  3. 在构建模型的过程中使用了句法信息

2.模型

2.1 带有Dependency Bridges 的 Bi-LSTM

Bi-LSTM 不需要过多介绍,即在每一个时间步都同时计算前向和后向的隐藏状态。在时刻tt,前向和后向的隐藏状态分别为:
ht=LSTM(ht1,xt)\overrightarrow{h_t} = \overrightarrow{LSTM}(\overrightarrow{h_{t-1}}, x_t)
ht=LSTM(ht+1,xt)\overleftarrow{h_t} = \overleftarrow{LSTM}(\overleftarrow{h_{t+1}}, x_t)
则时刻tt的输出ht=[ht,ht]h_t = [\overrightarrow{h_t}, \overleftarrow{h_t}]
那么,如何定义 Dependency Bridges 呢?我们可以继续看图1:
"died"和"fired"之间具有名为"advcl"的句法关系,同理,"fired"和"hotel"之间也有类似的关系。这些关系能够提供很多包括时间,因果等的有效信息,同时已经在论文 Joint event extraction via structured prediction with global features 中被证明对事件抽取任务具有益处。与上面的句法依存关系类似,我们在Bi-LSTM的节点之间建立对应的联系,使得句法依存的信息能够在LSTM节点中传播。论文作者把这一结构称为 Dependency Bridges。具体的模式如下图所示:
dbRNN事件抽取
每一种依存结构都有其特有的权重,同时,由于依存是有方向的,所以对于每一种依存结构,前向和后向的权重都有所不同,例如对于"nsubj"结构,前向的依存权重为a+nsubja_{+nsubj},反向的依存权重为ansubja_{-nsubj}。在LSTM进行计算的过程中,Dependency Bridge 会影响每个时刻的隐藏状态。在tt时刻,将所有与当前cell有依存关系的cell集合设为SinS_{in},该集合中的每一个元素都是一个元祖(index,type)(index, type),表示句法依存的起点以及依存的类型。据此,当前cell的隐藏状态应该被表示为如下公式:
ht=ottanh(ct)+dt(1Sin(i,p)sinaphi)h_t = o_t\odot tanh(c_t) + d_t\odot(\frac{1}{\left| S_{in} \right| } \sum_{(i,p)\in s_{in}} a_ph_i)

相比于LSTM中的其他门,dtd_t是一个新的门,用来保证句法依赖信息不会过多地影响tt时刻cell中原本的信息:
dt=σ(Wd[ht1xt]+bd)d_t = \sigma \left( W_d \left[\begin{matrix}h_{t-1} \\ x_t\end{matrix}\right] + b_d\right)
其中WdRd×2d,bdRd×1W_d \in \mathbb{R}^{d\times2d}, b_d \in \mathbb{R}^{d\times1}

2.2 Trigger Classification

基于之前的模型,研究人员开展了触发词分类的工作。首先,研究人员划定了触发词的范围,将句子中的名词,动词以及形容词划定为触发词候选词。对于一个长度为NLN_L的句子,它的句子表示hs=[hNL,h1]h_s=[\overrightarrow{h_{N_L}}, \overleftarrow{h_1}],与当前触发词候选词cell的隐藏状态htrih_{tri}相连接,得到候选触发词的特征向量C=[htri,hs]C = [h_{tri}, h_s]。最后,我们利用一个多层感知机来对CC进行分类。
HC=tanh(WcC+bc)H_C = tanh(W_cC + b_c)
OT=softmax(WTHC+bT)O_T = softmax(W_TH_C + b_T)
最终OtRnETO_t \in \mathbb{R}^{n_{ET}},代表着所有类型事件的概率

2.3 Argument Classification

在这篇论文中,研究人员在进行元素抽取的过程中考虑了元素的交互信息。他们认为,通过元素的交互信息,可以发现两个实体在句子中的相同以及相异之处,对于元素的识别和分类有益。在实验过程中,为了同时考虑所有元素候选词,将所有元素候选词对应的隐藏状态手机并形成矩阵HRnhu×nAH\in \mathbb{R}^{n_{hu}\times n_{A}},其中nhun_{hu}为隐藏状态的维数,nAn_A为元素候选词的个数。

dbRNN事件抽取对于每一对元素候选词,我们都用一个全连接层来编码他们之间的相互关系。这一相互关系用维度是nTn_T的向量进行表示。则给定H={hii[1,nA]}H = \{ h_i \vert i\in [1,n_A] \},全连接层被表示为
Ti,j=tanh(Wd[hi,ji]+bd)T_{i,j} = tanh(W_d[h_i, j_i] + b_d)
WdRnT×2nhu,bdRnTW_d \in \mathbb{R}^{n_T\times 2n_{hu}} , b_d \in \mathbb{R}^{n_T}
这样,我们就得到了一个三维的向量TT来表示所有元素候选词之间的相互关系。受 Natural language processing (almost) from scratch 这一论文的启发,作者认为,对每一个实体最有用的交互信息可以通过进行max-pooling得到。
Fmaxp(i,k)=maxj=1naT(i,j,k)F_{maxp}(i,k) = max^{n_a}_{j=1} T(i,j,k)
得到FmaxpRnA×nTF_{maxp} \in \mathbb{R}^{n_A \times n_T}表示了所有元素候选词的最重要互信息向量。为了判断两个元素是否倾向于同时出现,研究人员还在TT矩阵上进行了self-attention操作,得到自注意力矩阵A:
Aij=softmax(tanh(WaTij+ba))A_{ij} = softmax\left( tanh\left(W_aT_{ij} + b_a\right)\right)
ARnA×nAA \in \mathbb{R}^{n_A \times n_A}
此处有疑惑,为什么这个矩阵A能用来衡量元素同时出现的倾向呢?对我来说,这个矩阵更像是描述两个元素相互关联程度是否紧密的矩阵。而且,为何不在T矩阵上直接进行maxpooling得到这一矩阵A?个人猜想这几步是为了实验效果而增加的步骤,本身意义并不十分强。希望懂得的人进行纠正
在A矩阵的基础上,通过与HH矩阵相乘,可以从句子中动态的提取元素共现信息。
FA=AHT,FARna×nhuF_A = AH^T, F_A \in \mathbb{R}^{n_a\times n_{hu}}

最终,将各种信息进行拼接,组成向量L=[FA,Fmaxp,HT,HCena]L = \left[ F_A, F_{maxp}, H^T, H_C\otimes e_{n_a}\right],并利用Softmax方法得到最后的结果ORO_R
OR(i)=softmax(WRLi+bR),OR(i)R1×nRO_R(i) = softmax(W_RL_i + b_R), O_R(i) \in \mathbb{R}^{1 \times n_R}

2.4 max margin learning

这部分类似于使用了svm的损失函数,我对于SVM的算法理解的不够透彻,没有完全理解这一损失函数,日后可以进行补充。

3. 实验效果

dbRNN事件抽取

相关文章:

  • 2021-08-05
  • 2021-06-06
  • 2021-12-02
  • 2022-12-23
  • 2021-08-06
  • 2021-10-13
  • 2021-12-03
  • 2021-12-05
猜你喜欢
  • 2021-11-20
  • 2021-12-01
  • 2021-11-27
  • 2021-09-26
  • 2021-11-05
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案