End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures
作者: Makoto Miwa, Mohit Bansal
发表时间: 2016-01
论文链接: https://arxiv.org/pdf/1601.00770.pdf
大概思路:作者用端到端的方式基于序列层和依赖树的结构信息对文本进行关系抽取
简言之:作者融合了sequence信息和依赖树的结构信息,将其加入到神经网络中,同时训练NER和关系分类等任务(joint training),这里补充一下关于端到端模型(端到端模型让feature的提取和模型的学习不再分离,通过统一的模型,让机器自己去挖取feature,自己去分类,真正达到学习的目的,知乎上对端到端的理解)
模型流程图:
一共有三个表示层:
- Embedding layer (word embeddings layer)
- Sequence layer (word sequence based LSTM-RNN layer)
- Dependency layer (dependency subtreebased LSTM-RNN layer )
在解码的过程中,Sequence layer负责实体识别,Dependency layer 负责对两个实体进行关系分类。
Embedding layer
v(w),v(p),v(d),v(e)分别表示词语的词向量、词性标签、依赖类型、实体标签。
Sequence layer
该层利用上一层(embedding layer)提供的信息,输出序列文本的上下文信息和识别实体。
首先用Bi-LSTM求句向量,对每个词对应的输入是xt = [v(w), v(p)],每个词对应的输出是该隐藏单元的双向输出的拼接。
Entity Detection
然后利用上面的句向量信息进行实体识别,文章将实体识别任务当作一个序列标注的任务,对每个单词都打上 BILOU(Begin, Inside, Last, Outside, Unit) 类型的标签,这样的标签可以反映出:实体的类型、单词在这个实体中的位置。
其实这里就是简单的用了两层NN:densenet + softmax。
注意这里用到了的上一个单词的标签输出来预测当前单词的标签,叫什么——实体依赖!
Dependency Layer
这部分主要用于抽取目标实体对的关系,方法是在依赖树中找到两个目标实体的最短路径(shortest path)。
文中使用了 bidirectional tree-structured LSTM-RNNs的方式,这种双向(从上往下 + 从下往上)的方式,使得每个节点包含的信息也是双向的。而且文中的这种方式可以应对不同类型和数量的子节点,对同种类型的子节点进行LSTM内部的Us参数共享。
其中的m()是类型映射函数。
Stacking Sequence and DependencyLayers
将dependency layer叠加在sequence layer上面,其中dependency layer的输入为:x=[s;v(d);v(e)].v(d)表示该实体和父节点的依赖类型,这里没怎么看懂TAT
Relation Classification
然后现在就要进行关系分类了,首先是要提供候选的关系类型,怎么提供的呢?找到sequence layer识别出来的所有实体,对每个实体的最后一个单词(last or unit)进行排列组合,将其输入dependency layer + NN后,会输出对这个实体组合的关系类别。
其中对每个依赖关系的向量表示如下图,其中第一项表示LSTM从下往上的最后节点的输出,表示的是两个实体的最低的祖先节点。第二、三项分别表示从上往下的两个实体的向量表示。
然后同理,用两层NN对关系进行分类:
关系的表示 = 关系的类型 + 关系的方向