为了构建大规模结构化的知识库,目前有很多工作专注于从自然语言文本中抽取关系事实。关系事实通常用三元组表示:(实体1,关系,实体2),比如(Chicago,country,UnitedStates)。
目前为止,有很多方法专注于关系抽取或关系分类任务,该任务是识别两个预先给出的实体之间的关系。这类方法假设实体已经给定,忽略了实体的抽取。早期的实体关系抽取方法是pipeline的,即先进行NER,然后再进行RE。这种流水线的方法将两个任务独立开来,忽略了两个任务之间的相关性。紧接着,就有人提出联合抽取实体关系的方法。早期的联合方法依赖于特征工程和NLP工具。随着深度学习的兴起,后期的工作开始用CNN或RNN来联合抽取实体关系。比如Miwa、Gupta、Zhang等人将关系抽取任务建模为槽填充问题。Zheng等人将联合抽取问题转换为序列标注问题。
实体关系三元组在句中通常是比较复杂的,存在关系重叠现象,根据关系重叠度可以分为三种类型:Normal,EntityPairOverlap(EPO),SingleEntityOverlap(SEO)。如下图所示。
之前的工作主要专注于抽取Normal类型的实体关系三元组,特别是17年ACL那篇(传送门),将实体关系抽取问题转化为序列标注问题,完全忽略了关系重叠问题。因此,作者就提出了基于Seq2Seq拷贝机制的端到端模型,可以抽取任意类型的实体关系三元组。该模型主要由两部分组成:编码器和解码器。编码器将自然语言文本转换成定长的语义向量,解码器根据该语义向量生成三元组。具体细节见Model部分。
本节我们将介绍基于copy机制的Seq2Seq模型,端到端地抽取多个实体关系三元组。该模型主要由两部分组成:编码器和解码器。编码器将自然语言文本转换成定长的语义向量,解码器根据该语义向量生成三元组。解码器根据数量不同可以分为OneDecoder和MultiDecoder。顾名思义,OneDecoder就是用一个解码器来生成所有三元组,而MultiDecoder就是由多个解码器组成,一个解码器生成一个三元组。
OneDecoder Model
OneDecoder模型的整个结构如图二所示。