在NLP领域中,关系抽取任务,指的是为了构建知识图谱,从结构化(表1)、半结构化(表2)非结构化数据(表3)获取形式为(事物1、关系、事物2)的三元组的活动。一些情况下,我们会想办法把关系抽取抽象成若干三元组的抽取,而不会做 四元组 、五元组的抽取。
表1 若干文学形象的结构化信息
结构化程度与实体关系抽取方法
在确定了要抽取的实体类型、关系类型之后,就可以设计模型实现自动抽取了。随着数据的结构化程度变化,三元组抽取的方法也有所变化——总的来说,数据结构化程度越低,需要使用的方法越复杂。结构化数据的字段含义、字段数量、数据内容都是明确的,只需要设计简单的映射规则,即可变换为三元组,并与知识图谱中的概念、实体对应或链接(Entity Linking)起来。
表2 关于若干事物的半结构化信息
半结构化程度与实体关系抽取方法
半结构化数据的情况稍微复杂一些,其字段、内容没有结构化数据那么规整,需要基于一定的数据探查来发掘对业务有意义的部分、使之尽量结构化。另外,半结构化数据中一些字段的值可能是文本,我们就需要使用非结构化数据的三元组抽取方法来处理。
表3 若干非结构化数据
面向非结构化数据的三元组抽取思路
就像时间抽取等信息抽取任务一样,三元组抽取实际上是两个任务:
(1) 实体识别
(2) 实体分类
按照两个子任务的配合方式,三元组的抽取模型的结构也可以分为2类:
(1) 流水线模式,也叫pipeline式模型。这种模型会使用一个序列标注模型识别文本中的实体;然后使用一个分类器对面前识别出来的实体进行两两之间关系的分类。还是那句话,流水线模型存在误差传递,酌情使用。
(2) 联合模型。这种模型一般将实体识别模块和实体分类模块整合到一个模型内,让二者共享底层特征、联合二者的损失值进行训练。相对流水线式模型,联合模型中的实体识别模块传递到实体关系分类模块的误差较小;如果结构设计得当,计算速度也会快很多。