[^2016.2]JRNN是非常具有影响力的一篇文章,它首次把神经网络模型应用到了Joint EE上(后面的许多paper都将该模型作为baseline)。
之前已经提到,[Li et. al. 2013]的最大问题是对于unseen word/feature的泛化能力较差,其原因在于只使用了手动制作的离散特征集;
而 2015.1 中的DMCNN尽管自动提取了能表达更多语义的特征,解决了泛化能力,但是pipeline架构又无法很好减轻误差传播的问题,其原因是没有像[Li et. al. 2013]一样沿用离散特征集。
2016.2 提出了将这些优势融合的BRNN with discrete features模型。该模型用两个RNN分别正/反向学习一个句子的表示,这样完成了 automatically generate features 的工作;另一方面,使用了一个记忆向量(for triggers)与两个记忆矩阵(for arguments)来分别存储triggers/arguments以及两者之间的依赖关系。模型结构如下:
具体来说,首先把每个词编码为由以下三类vector连接而成的向量:
- 查预训练的词向量表,获得当前单词的词向量;
- 当前单词的Entity Type Vector,通过查找entity type embedding table获得(当然,完成这一步的前提是要在之前给每个句子中的单词分配一个entity type,论文里说是沿用了之前论文中的工作);
- Dependency Vector。一个0-1值向量,其长度与词在dependency tree中可能的关系数相同。这个向量中的第 i i i个元素的值表示了当前单词与第 i i i个单词是否在dependency tree中存在依赖关系。Embedding步骤完成后,把这些词向量按顺序喂给双向的RNN,考虑到梯度消失的问题,RNN中使用了GRU units。
Encoding步骤完成后,开始使用获得的Embedding结果与Sentence Embedding进行Joint Prediction。具体地,第 i i i个预测步会执行以下操作:
- 预测第 i i i个单词 w i w_i wi是否是trigger以及它的trigger type,输出预测的结果 t i , t i ∈ T t_i, t_i\in T ti,ti∈T。其中 T T T是一个预先给定的trigger type集合,并加入了一个特殊type=others,即如果当前单词 w i w_i wi不被认为是一个trigger,则把这个特殊的type赋给 w i w_i wi;
- 对于当前句子中所有的命名实体 e 1 , . . . , e j e_1,...,e_j e1,...,ej,预测该实体对于单词 w i w_i wi的Argument Role: a i j a_{ij} aij。如果该实体不是单词 w i w_i wi的argument,则同样使用一个特殊的Role Type: a i j = a_{ij}= aij=others。
- 更新当前步的三个记忆矩阵。在模型评估阶段,论文还比较了使用不同的Word Embedding方法下模型效果。