效果显著的关系抽取框架
导 语:
从非结构化文本中抽取三元组是构建大规模知识图谱的必备关键,然而现有的研究工作鲜有去解决三元组重叠的问题,针对此问题,本文从全新的视角提出一个新的关系抽取框架:CASREL,不同以往采用分类的视角解决问题,从实验结果来看,框架非常有效,加上 BERT 之后,更为惊人,在两份数据集上面,分别提升 17% 和 32%。
该论文目前在arxiv上面,已经被 ACL2020 接受。
文末附代码 Github Repo。
背景与思路
信息抽取是构建大规模知识图谱的必备关键,先来说一下图谱的三元组形式,在以往常常将三元组以 (head,relation, tail) 的形式表示,在这里以(subject, relation, object)的形式表示,即(S, R,O),为了方便描述,后文将以这种形式阐述。
信息抽取分为两大部分,一部分是命名实体识别,识别出文本中的实体,另外就是关系抽取,对识别出来的实体构建对应的关系,两者便是构建三元组的基本组成。在以往的研究工作中,早期两个任务以pipline的方式进行,先做命名实体识别,然后做关系抽取。但是pipline的流程可能造成实体的识别错误,也就造成关系构建的错误,所以后续的一些研究工作将两者采用联合学习的方式。
但是上述存在很少的研究工作解决三元组重叠的问题,本文以此为解决目标,提出新的模型框架,首先来看一下三元组重叠的问题具体指什么?看下图,列举了三种形式。
- Normal: 代表没有重叠的部分。
- EPO(EntityPairOverlap): 关系两端的实体都是一致的,例如 QT 既在电影 DU 中扮演角色,又是电影 DU 的执导。
- SEO(SingleEntityOverlap): 关系两端只有单个实体共享,图中的例子,从小范围来说,JRB 出生在 Washington, 但是 Washington 是 USA 的首都,所以也可以说 JRB 出生在 USA。
以往工作的不足以及重叠三元组出现的挑战:
- 在实体对的组合之中,大多数实体对是没有关系链接的,这便存在很多的负例,也就造成了关系分类的不平衡。
- 重叠三元组的问题更是一个难点,因为其存在共享的实体,甚至两个实体存在多种关系,这便增加了难度,没有足够的训练数据,是难以学习或者根本无法学习这种关系的。
思想:采用全新的视角代替以往分类的视角,将关系建模为 S 到 O 的映射函数。提出一个全新的框架:CASREL。
框架详解
CASREL框架抽取三元组(subject, relation, object)主要包含两个步骤,三个部分。
两个步骤:
- 第一步要识别出句子中的 subject 。
- 第二部要根据识别出的 subject, 识别出所有有可能的 relation 以及对应的 object。
三个部分:
- BERT-based encoder module: 可以替换为不同的编码框架,主要对句子中的词进行编码,论文最终以BERT为主,效果很强。
- subject tagging module:目的是识别出句子中的 subject。
- relation-specific object tagging module:根据 subject,寻找可能的 relation 和 object。
- 其中 a 是 Encoder, b 和 c 称为 Cascade Decoder。
框架图:
BERT Encoder
这部分的就是对句子编码,获取每个词的隐层表示,可以采用 BERT 的任意一层,另外这部分是可以替换的,例如用 LSTM 替换 BERT。
Subject Tagger 这部分的主要作用是对 BERT Encoder 获取到的词的隐层表示解码,构建两个二分类分类器预测 subject 的 start 和 end 索引位置,对每一个词计算其作为 start 和 end 的一个概率,并根据某个阈值,大于则标记为1,否则标记为0。公式如下:
如框架图中所示,Jackie 被标记为 start,R 既不是 start 也不是 end, Brown 被标记为 end,其他的类似。在这里采用了最近匹配的原则,即与 jackie 最近的一个 end 词是 Brown, 所以 Jackie R. Brown 被识别为一个subject。文中并未考虑前面位置的情况。
Relation-specific Object Taggers
这部分会同时识别出 subject 的 relation 和相关的 object。
解码的时候比 Subject Tagger 不仅仅考虑了 BERT 编码的隐层向量, 还考虑了识别出来的 subject 特征,即下图。vsub 代表 subject 特征向量,若存在多个词,将其取向量平均,hn 代表 BERT 编码向量。
对于识别出来的每一个 subject, 对应的每一种关系会解码出其 object 的 start 和 end 索引位置,与 Subject Tagger 类似,公式如下:
我们以图中的例子详细说明一下,图中的例子仅仅画出了第一个 subject 的过程,即 Jackie R. Brown,对于这个,在关系 Birth_place 中识别出了两个 object,即 Washington 和 United States Of America,而在其他的关系中未曾识别出相应的 object。当对 Washington 这个 subject 解码时,仅仅在 Capital_of 的关系中识别出 对应的 object: United States Of America。
以上我们便可以得到抽取到的三个三元组如下:
- (Jackie R. Brown, Birth_place, Washington)
- (Jackie R. Brown, Birth_place, United States Of America)
- (Washington, Capital_of, United States Of America)
从以上抽取出来的三元组,确实解决了最开始提到的 SEO 和 EPO 的重叠问题。
实验效果
验证CASREL框架效果采用的是两个公开的数据集,NYT 和 WebNLG。
具体的实验效果如下,其中 CASREL 分别采用了 随机初始化参数的BERT编码端、 LSTM 编码端以及预训练 BERT 编码端,实验结果主要说明以下结论:
- CASREL 框架确实有效,三种编码结构的效果都是要远高于其他的模型性能。
- 采用预训练 BERT 之后,CASREL 框架更是逆天。
结束语
本文从全新的角度考虑三元组抽取工作,效果着实惊人,令人惊叹。不知道这样的架构是否可以在业界应用,以及在中文上的效果如何?