使用序列标注方法进行关系抽取的相关论文推荐

文章目录

  • 序列标注方法与实体重叠问题
    • 联合模型与序列标注方法
    • 实体重叠问题
  • Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme
  • 基于DGCNN和概率图的轻量级信息抽取模型
  • A Novel Hierarchical Binary Tagging Framework for Joint Extraction of Entities and Relations

序列标注方法与实体重叠问题

联合模型与序列标注方法

早期的信息抽取将实体抽取和关系抽取看作串联的任务,即先识别实体,再对实体间关系进行分类,实体识别过程和关系分类过程之间没有交互,这种模型被称作pipeline流水线模型。流水线模型在建模上相对更简单,但这样把实体识别和关系分类当作两个独立的任务明显会存在一系列的问题:

1.两个任务的解决过程中没有考虑到两个子任务之间的相关性,从而导致关系抽取任务的结果严重依赖于实体抽取的结果,导致误差累积的问题

2.对于一对多的问题,也就是关系重叠问题,串联模型无法提供较好的解决方案

因此,近年来有许多工作都考虑将实体识别与关系抽取任务进行联合建模,在识别实体的同时也将关系抽取出来,直接得到关系三元组,这种模型又被称作联合模型。

联合模型根据具体的方法不同还可以细分为使用共享参数的联合模型和使用序列标注的联合模型。本文将介绍几篇比较重要、值得关注的使用序列标注方法进行关系抽取的论文。

实体重叠问题

在关系抽取问题中,句子中的关系事实往往是复杂的。不同的关系三连词在一个句子中可能有重叠,这就是实体重叠问题,目前解决关系抽取中实体重叠问题的最好方法就是序列标注方法。在论文 Extracting Relational Facts by an End-to-End Neural Model with Copy Mechanism 中,作者将句子按照三重重叠程度分为三种类型,分别是Normal, EntityPairOverlap (EPO)和SingleEntityOverlap (SEO)。
使用序列标注方法进行关系抽取的相关论文推荐_第1张图片

如上图所示,如果一个句子的三元组都没有重叠的实体,那么它就属于普通类。如果它的一些三元组有重叠的实体对,那么这个句子属于EntityPairOverlap类。如果一个句子的某些三元组有重叠的实体而这些三元组没有重叠的实体对,那么这个句子就属于单列重叠类。

之后许多论文也沿用了这种重叠类型的分类方法,Normal 类是最容易解决的,而EntityPairOverlap和SingleEntityOverlap类型目前也有许多论文提出了比较好的解决方法。

Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme

论文指出了目前的实体关系抽取任务存在的一些问题:

  • 目前 State-of-the-art 的联合抽取模型依赖外部的NLP工具提取特征,模型性能严重依赖 NLP 工具的性能;
  • 之前的工作没有考虑实体关系重叠问题,即一个实体可能与上下文中的多个实体有不同的关系。
    该论文创新点在于其将实体关系联合抽取问题看作是一个 multi-head selection 的问题,即任何一个实体都可能与其他实体存在关系,目的是解决关系重叠问题。

论文提出的模型结构:

使用序列标注方法进行关系抽取的相关论文推荐_第2张图片

模型包括五个层,分别是:embedding layer,BiLSTM layer,CRF layer,Label embedding,sigmoid scoring layer
Embedding layer:Embedding layer 主要用于生成词表征,包括字符级别的向量和词级别的向量两个部分,构造方式如下所示,引入字符级别的向量是因为字符级别的向量可以融入一些形态学特征,如大小写等

使用序列标注方法进行关系抽取的相关论文推荐_第3张图片

BiLSTM encoding layer:利用 多层的 BiLSTM 来对句子进行编码,每一个时刻的输出为两个方向的向量的拼接:
在这里插入图片描述
CRF layer:在 BiLSTM 之后接 CRF 来辅助实体识别已经是常规操作了,实体识别部分的标注方式是 BIO,此外在实体位置标注之后还接有实体类别标注
Label Embedding:构造一个 Label Embedding 层,用来获取标签相应的向量表征,也是可训练的,用 gi 表示第 i 个token的预测标签向量
sigmoid scoring layer:将关系抽取看作一个 multi-head selection problem,multi-head 的含义是假设每个实体与其他所有实体都存在关系,对于给定的 token向量 wi 和 wj,其关系为 rk 的分数为:
在这里插入图片描述
然后将分数值映射为概率值:
在这里插入图片描述
关系抽取过程的损失函数定义为:
在这里插入图片描述
整个模型的损失函数定义为 Lner+Lrel

在预测阶段,可以通过认为输出的预测概率超过某一个阈值就认为这个关系是有效的。注意,该模型对两个词之间过个关系的预测并不是采用的 softmax 函数,而是对每个关系采用了 sigmoid 函数,区别在于 softmax 是将所有类别看作是互斥关系,将所有分数归一化为和为 1 的形式,而 sigmoid 与 softmax 的区别在于,其独立的将每个类别的判断看作是独立二分类的问题,即各个类别不存在互斥关系,这样跟有利于判断出两个实体之间存在的多种关系的情况。

这篇文章的关键创新点在于其将关系抽取任务当作一个 multi-head selection problem 的问题,从而使得每个实体能够与其他所有实体判断关系,此外,不再将关系抽取任务当作一个每个关系互斥的多分类任务,而是看作每个关系独立的多个二分类任务,从而能够判断每一对实体是否可能有多个关系存在。因此,该模型可以将类型为 Normal,EntityPairOverlap (EPO) 和 SingleEntityOverlap (SEO) 的关系三元组全部抽取出来。

基于DGCNN和概率图的轻量级信息抽取模型

本文是19年百度关系抽取竞赛的一位参赛者对自己在比赛中使用的方法的总结。在 https://kexue.fm/archives/6671 可以看到作者对自己方法的详细介绍,下面内容取自作者的文章
作者在仔细研究了百度数据集后发现数据主要有以下几个特点:

  • s和o未必是分词工具分出来的词,因此要对query做标注才能抽取出正确的s、o,而考虑到分词可能切错边界,因此应该使用基于字的输入来标注;
  • 样本中大多数的抽取结果是“一个s、多个(p, o)”的形式,比如“《战狼》的主演包括吴京和余男”,那么要抽出“(战狼, 主演, 吴京)”、“(战狼, 主演, 余男)”;
  • 抽取结果是“多个s、一个(p, o)”甚至是“多个s、多个(p, o)”的样本也占有一定比例,比如“《战狼》、《战狼2》的主演都是吴京”,那么要抽出“(战狼, 主演, 吴京)”、“(战狼2, 主演, 吴京)”;
  • 同一对(s, o)也可能对应多个p,比如“《战狼》的主演和导演都是吴京”,那么要抽出“(战狼, 主演, 吴京)”、“(战狼, 导演, 吴京)”;
  • 极端情况下,s、o之间是可能重叠的,比如“《鲁迅自传》由江苏文艺出版社出版”,严格上来讲,除了要抽出“(鲁迅自传, 出版社, 江苏文艺出版社)”外,还应该抽取出“(鲁迅自传, 作者, 鲁迅)”。

根据语料的特点,作者设计了一个基于概率图思想的抽取方案,然后从效率出发,利用 CNN+Attention 的架构完成了这个模型。作者设计的抽取方案借鉴了 seq2seq 的概率图思路。在 seq2seq 解码器的解码过程是层次递归进行的的,其实际上是在建模:
在这里插入图片描述
而对于信息抽取任务,三元组的抽取过程也能够转化为上述层次递归的方式进行抽取,对于三元组 (s, o, p),其抽取过程可以建模为:
在这里插入图片描述

即首先预测 s,然后根据 s 来预测该 s 所对应的 o 及 p。由于抽取 s 以及抽取 s 所对应的 o 及 p 的过程均是非唯一性的,因此,作者采用了 MRC 中常用的指针网络的抽取方法,即仅抽取答案的开始和结束位置,且把预测开始和结束位置的任务转化为了预测每一个位置是否为开始位置或结束位置(将softmx换成sigmoid)。模型的整体结构如下图所示

使用序列标注方法进行关系抽取的相关论文推荐_第4张图片

模型的整体结构包括以下几层:

编码层:得到字表征
s 抽取:通过 Self-Attention 和 CNN 的结构来对 s 的开始和结束位置进行抽取
o、p 联合抽取:对于预测到的 s将其对应位置的编码结果通过一个 BiLSTM进行编码,然后拼接到 Self-Attention 的输出中,再通过 CNN 预测每一个 p 对应的 o 的开始和结束位置

A Novel Hierarchical Binary Tagging Framework for Joint Extraction of Entities and Relations

作者设计了一种 Hierarchical Binary Tagging 的框架来解决这个问题,这个框架将三元组的抽取任务建模为三个级别的问题,从而能够更好解决三元组重叠的问题。其核心观点就是不再将关系抽取的过程看作实体对的离散标签,而是将其看作两个实体的映射关系,即f(s,o)−>r,整个三元组的过程为:

  1. 抽取三元组中的 subject
  2. 针对每一个 fr(⋅),抽取其对应的 object

模型整体结构如下图:
使用序列标注方法进行关系抽取的相关论文推荐_第5张图片

BERT Encoder层: 通过 BERT 得到每个词的词表征
Subject Tagger层: 该部分用于识别所有可能的 subject 对象。其通过对每一个位置的编码结果用两个分类器进行分类,来判断其是否是实体的开始或结束位置,即
在这里插入图片描述
其中,xi 为第 i 个词通过 BERT 的编码输出,W,b 为全连接层分类器的参数,激活函数为 sigmoid。对于句子中存在多个 subject 的情况,开始指针与结束指针通过就近匹配原则进行配对
Relation-specific Object Taggers: 针对每一个 subject,都需要对其进行之后的 object 进行预测,与 Subject Tagger 基本一致,主要区别在于:每一个关系类别独享一组 object 分类器,这一部分的输入除了输入序列的 BERT 编码结果,还额外加入了 subject 的特征,subject 特征为 subject 的每个字符的 BERT 表征的平均池化,主要表达式如下
在这里插入图片描述

你可能感兴趣的:(自然语言处理)