PS:联合训练认为实体抽取、实体关系抽取两个任务之间存在依赖,不是两个独立的过程(个人理解)
基于传统特征工程
2014-EMNLP《Modeling Joint Entity and Relation Extraction with Table Representation》
方法:
- 利用二维表的方式表示实体和关系
- 设计六种解码顺序,来获取全局和局部的实体、关系信息
- 基于特征工程的结构化系统,基于传统机器学习方法
问题:需要设计复杂的特征工程,严重依赖于NLP工具,这可能会导致错误传播问题。
常用共享编码模型
2016 《End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures》
方法:
- sequence 层:用序列标注的方法来做实体抽取
- dependency层:
- 获取sequence 层的编码信息(利用ner任务辅助关系抽取)
- 利用tree-lstm模型编码头、尾实体之间的最小路径结构
- 关系类型预测
缺点:
- 产生的冗余实体对(不存在关系的实体对)仍需要再经过dependency层来判断
- 依赖于解析器的性能,特定语言(英语)和上下文(即、新闻)上表现得特别好——泛化性弱
2016-acl-《Joint entity and relation extraction based on a hybrid neural network》
方法:
- 利用序列标注来识别实体
- 关系抽取:
- 与实体识别共享编码
- 输入:(实体序列中每个词的向量和,文本序列)
优点:作者提出的混合网络不仅考虑了NER和RC之间的相关性,同时也考虑了实体标签之间的长距离依赖关系(lstm)
缺点:
- 只共享编码部分,未共享解码部分,实体识别过程不能充分利用关系抽取部分的信息
- 仍然需要将ner的预测结果作为关系抽取的输入,故存在误差传播
2016-acl《Table Filling Multi-Task Recurrent Neural Network for Joint Entity and Relation Extraction》
方法:利用神经网络
- 对角线上的格子是实体,非对角线的格子表示关系
- 实体对之间的关系,只在实体尾词上进行标注
- 实体抽取和关系抽取共享模型编码模块
优点:可以有效解决实体重叠(某一实体与多个实体存在关系)的情况
问题:
仍然将实体识别和关系抽取看作是两个任务,这会导致输出的实体和关系的信息未能完全利用,因为没有显示的特征来建模输出之间的依赖。
2017-acl《Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme》
方法:
- 将整个实体、实体关系抽取都看作是一个序列标注问题
- 将实体、实体关系以及首尾信息进行组合,构成最终的模型标签类别
缺点:
- 难以处理多实体多关系任务
- 多对实体同一种关系的情况
- 当同一实体与不同实体存在关系时,预测标签该为什么?
2018-acl-《Joint entity recognition and relation extraction as a multi-head selection problem》
方法:
- 首先进行命名实体识别,然后对句中的每个单词都与句中的所有单词判断关系。
- 利用sigmoid函数来捕获一个实体对之间存在的多种关系
问题:
该模型在进行关系分类时,只是简单地将两个单词的隐藏层表示相加得到表示这两个单词的关系向量,这种方法不能很好地表示两个单词的关系
2020-acl-《A Novel Cascade Binary Tagging Framework for Relational Triple Extraction》
方法:
- 识别句子中所有可能的头实体
- 为每个实体寻找存在给定关系的其他实体(即给定实体i和关系k,来预测实体j的模式)
- 给定关系为总涉及关系的遍历
特点:
引入了一个新的视角,重新审视关系三元组抽取任务,通过设计一个通用算法框架来解决重叠三元组问题
缺点:
仍然存在误差传播的问题
类似工作:
- 2017-acl-《Going out on a limb Joint Extraction of Entity Mentions and Relations without Dependency Trees》
- 2018-EMNLP-《Adversarial training for multi-context joint entity and relation extraction》
基于span的联合训练模型
2020-acl 《TPLinker Single-stage Joint Extraction of Entities and Relations》
方法:
- 本质是将实体识别看作一种特殊的关系分类任务
- 具体的做法是预测两个token的关系:
- 当两个位置对应token的关系类型是EH to ET时,表明两个位置之间的序列片段即为一个实体,保存该实体的位置信息到E=((实体位置1,实体位置2),...)
- 关系抽取(以样例图2中的live in 为例):
- 首先得到在关系live in 下标签为SH to OH(主实体的头 to 客实体的头)和 ST to OT(主实体的尾 to 客实体的尾)的位置:
如果:
(主实体头的位置,主实体尾位置)和 (客实体头位置,客实体尾位置)均存在于 E
则:
该主实体与客实体的关系是 live in
- 首先得到在关系live in 下标签为SH to OH(主实体的头 to 客实体的头)和 ST to OT(主实体的尾 to 客实体的尾)的位置:
优点:
- 将体识别与关系抽取两个任务合并成一个关系分类任务,能有效客服pipeline模式存在误差传播的不足
- 实共享编码、解码器,充分考虑了两个任务之间的依赖
- 能有效解决同一实体参与多个其他实体存在关系的情况
缺点(个人理解):系统开销较大
2021-acl 《UNIRE:A Unified Label Space for Entity Relation Extraction》
损失构建
将实体抽取看作是一个特别的关系分类任务(构建分类loss1)
-
如果一个关系存在,那么它对应的两个实体也存在。因此,一个关系标签的预测得分(最高概率)一定不高于其对应的实体的标签的得分(最高概率);构建loss2
利用对称性判断实体边界:
“实体”和“不区分方向的关系”在span矩阵中是对称的,且标签一致;例如表格中的David Perkins和wife之间是PER-SOC的关系,反之亦然。即P(i,j)要与P(j,i)一致,构建loss3
思考:译句span矩阵的第i行和第i列要一致,可否通过构建distance(i行,i列)来作为一个子loss是否有意义。
PS:单向关系如何处理
解码
- step1:解码实体边界
在span矩阵中,对于任意两个相邻的行或者列,如果其标签不一致,那么我们就认为他们属于不同的span,具体做法是求任意两列、两列预测分布的二范数(具体做法见论文),若某两行或某两列的二范数值大于阈值(文中是1.4),则判定为不在同一span,即不属于同一实体,并以此得到实体边界位置 - step2:实体解码
假如step1得到某一实体边界(i,j),则:
实体类型 = argmax(正方形((i,i)-->(j,j))对应预测概率的均值) - step3:关系解码
若e1的位置是(i,j),e2的位置是(m,n),则:
关系类型 = argmax(矩形((i, m), (j, n))对应预测概率的均值)
基于图
2018-IJCAI 《Joint Extraction of Entities and Relations Based on a Novel Graph Scheme》
方法:
- 定义动作(action)类型
- 整个模型主体用于动作预测
- 当预测结果为特定动作时,则进行实体或关系提取(例如当预测的动作是GEN-NER时,则进行实体类型预测)
2019 《GraphRel Modeling Text as Relational Graphs for Joint Entity and Relation Extraction》
方法:
- phase1
-- 利用依赖解析器(Cetoil et al .2016)构建依赖树,并依赖特征作为一类输入
-- 利用bi-lstm编码序列作为另一输入
-- 以序列标注的方式识别实体,预测每个词对的关系,保存词对属于各个关系的概率 -
phase2
-- 某一词u的编码信息包括:它与每个词v在各个关系下的信息加权和(权重时phase1中得到的概率值),以及在phase1中,词u隐状态。
优点:
- 该方法考虑了文本的线性结构和依赖结构,以及文本中所有词对之间的隐含特征;
- 充分考虑了实体和关系之间的相互作用
小结:
- 基于特征工程的早期算法过度依赖于NLP工具的性能,容易导致误差传播,而且特征计算过程复杂。
- 大多数联合方法通过参数共享分开抽取实体及其关系,而不是共同decoding。这会导致输出的实体和关系的信息未能完全利用,因为没有显示的特征来建模输出之间的依赖。
- 当前基于span且将实体识别与关系抽取融合成一种关系分类的做法较为优雅,但其计算开销较大。