实体关系抽取(ERE)是信息抽取关键任务之一,主要是分为两个子任务:实体抽取和关系抽取。对于该任务主要是有两种方式,第一种pipline的方式,就是两个模型分别来做两个任务;第二种方式两个任务共享encoder,decoder可以共享也可以不共享。
下面分别介绍下每种方式比较有效的work。这类工作很多就不一一介绍了
一、Pipline方式
1、《A Frustratingly Easy Approach for Joint Entity and Relation Extraction》
1.1 Motivation
- 实体模型和关系模型的语境表示本质上捕获了不同的信息,因此共享其表示会损害性能;
- 在关系模型的输入层融合实体信息(边界和类型)至关重要;
- 在两个子任务中利用跨句(cross-sentence)信息是有效的;
- 更强大的预训练语言模型能够带来更多的性能收益。
1.2 模型架构
和
:代表实体类型为Method的Subject,S是实体span的第一个token,/S是最后一个token;
和
:代表实体类型为Method的Object,O是实体span的第一个token,/O是最后一个token;
- NER层:
接一个span分类网络-基于片段排列的方式,提取所有可能的片段排列,通过SoftMax对每一个Span进行实体类型判断。
- RE层:第一阶段识别出的实体,用边界和类型特殊字符标识出来,作为第二阶段的输入 ,第二阶段用一个
来预测两个实体之间的关系。如第一阶段识别出的实体MORPA是一种method的subject,就把
和
插入到实体边界,再去做RC,具体是对每个实体pair中第一个token的编码进行concatenate拼接处理,concatenate其实就是说所有输出这种向量去做拼接,后面接全连接层Fully connected layer ,最后接softmax。
- 批计算:这样对每个实体pair都要轮流进行关系分类,同一文本要进行多次编码,计算量会特别大。所以DanQi提出了一种加速的近似模型:可将实体边界和类型的标识符放入到文本之后,然后与原文对应实体共享位置向量。上图中相同的颜色代表共享相同的位置向量。具体地,在attention层中,文本token只去attend文本token、不去attend标识符token,而标识符token可以attend原文token。
- 跨句信息:文中引入了cross-sentence context,意思是在一个语段A,B,C,D,E中,ABCDE代表五个句子,在抽取C中的实体和做关系识别的时候,把其跨句子的上下文信息A,B,D,E加进来是非常有用的。所以有相关工作采用滑动窗口的方式把当前句子的前后2个句子的表示加入进来取得了效果,因为基于pretrained_model可以捕获长距离依赖。文本输入的左右上下文中分别滑动(W−n)/2个words,n为文本长度,W 为固定窗口大小(文章中设定为100),如果句子长度为8,则取前46个字,后46个字,来获取跨句子上下文特征。
1.3 实验结果
从图中可以看出,该研究提出的 single-sentence 模型实现了强大的性能,而纳入跨句语境后,性能结果得到了一致提升。该研究使用的 BERT-base(或 SciBERT)模型获得了与之前工作类似或更好的结果,包括那些基于更大型预训练语言模型构建的模型,使用较大编码器 ALBERT 后性能得到进一步提升。
二、JointModel
Pipeline方法指先抽取实体、再抽取关系。相比于传统的Pipeline方法,联合抽取能获得更好的性能。虽然Pipeline方法易于实现,这两个抽取模型的灵活性高,实体模型和关系模型可以使用独立的数据集,并不需要同时标注实体和关系的数据集。但存在以下缺点:
- 误差积累:实体抽取的错误会影响下一步关系抽取的性能。
- 实体冗余:由于先对抽取的实体进行两两配对,然后再进行关系分类,没有关系的候选实体对所带来的冗余信息,会提升错误率、增加计算复杂度。
- 交互缺失:忽略了这两个任务之间的内在联系和依赖关系。
(基于共享参数的联合抽取方法仍然存在训练和推断时的gap,推断时仍然存在误差积累问题,可以说只是缓解了误差积累问题。)
2、TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking
2.1 Motivation
- TPLiner,解决了之前的联合抽取模型中出现的问题,曝光偏差,即在训练阶段,与推理阶段不一致产生的影响,在解码阶段需要分多步进行,这也是它们存在曝光偏差的本质原因,TPLinker 将联合抽取描述为一个 token 对链接问题,并引入了一种新的连接方式。
- 文章提出了三种连接方式,紫色代表实体各自内部的头尾连接,红色代表两实体头连接,蓝色代表两实体的尾连接。同一种颜色的连接标记,会被表示在同一个矩阵。 如图
三种颜色其实就在三个不同的矩阵中,论文中为了直观些将三种颜色的标记放在同一个矩阵展示。可以得到TPLinker共有个矩阵。值得注意的是:为防止稀疏计算,下三角矩阵不参与计算;虽然实体标注不会存在于下三角矩阵种,但关系标注是会存在的。(R为关系的总数)
为此,论文采取转换操作是:如果关系存在于下三角,则将其转置到上三角,并有“标记1”变为“标记2”。
2.2 Decoder
编码部分实际上是将原始的Span矩阵会展开为一个序列进行编码,也就是将token pair的每一个token编码拼接在一起。'0'代表两个token没有关联, '1'代表两个token有关联,具体什么关联根据颜色来定,’2‘代表含义其实和’1‘的一样只不过是标记两个token是换了位置而已。
TPLinker的解码过程为:
- 解码EH-to-ET可以得到句子中所有的实体,用实体头token idx作为key,实体作为value,存入字典D中;
- 对每种关系r,解码ST-to-OT得到token对存入集合E中,解码SH-to-OH得到token对并在D中关联其token idx的实体value;
- 对上一步中得到的SH-to-OH token对的所有实体value对,在集合E中依次查询是否其尾token对在E中,进而可以得到三元组信息。
结合上图的具体case,我们具体描述一下解码过程:
解码EH-to-ET中得到3个实体:{New York,New York City,De Blasio}; 字典D为:{New:(New York,New York City),De:(De Blasio)}
以关系“mayor”为例,
- 解码ST-to-OT得到集合E:{(City,Blasio)}(这里不是很明白 (York, Blasio)不在集合E里);解码SH-to-OH得到{(New,De)},其在字典D中可关联的subject实体集合为{New York,New York City};object集合{De Blasio};
- 遍历上述subject集合和object集合,并在集合E中查询尾token,发现只有一个实体三元组{New York City,mayor,De Blasio}
2.2 Result
三、关系抽取的方法
- 无监督学习方法
基于无监督学习的关系抽取方法(URE, Unsupervised Relation Extraction)是一种自底向上的信息抽取策略,URE不依赖于人工标注的数据集,也不需要外部知识库的引入,可以比较快地迁移应用到新的领域,同时由于URE不通过人工定义的关系标准进行类别判断,具有一定的新类别发现的能力。
URE方法可以分类两类:一是基于聚类的方法(Clustering based approaches),二是基于模式的方法(Pattern based approaches)。
- 基于聚类的方法
基于聚类的方法基于一个假设:拥有相同关系的不同实体对之间的上下文语义具有相似性,可以抽象成这样的流程:
1.标记文本中的命名实体 2.组织文本中的实体对和上下文语义特征 3.对不同实体对的上下文语义进行聚类分析,认定每个簇内的实例为同种关系
不同的基于聚类的方法在两个部分各有区别:1.使用哪些信息,2.使用何种模型。
使用哪些特征: 如下图所示,可以被采用的信息和特征包括实体mention和实体间的上下文,实体的类别信息,mention的类别,重叠性(相对位置信息),依存关系,语法树等。
使用何种模型: 可以粗略的分为两类:一类是基于特征向量直接聚类,;另一类是基于依存关系路径(dependency paths)分析的方法。
- 基于模式的方法
基于模式的方法最典型的应用是URES(Unsupervised web RE System),该方法基于非常简单的假设:两个特定类别的实体之间的关系由特定的触发词集合表征。但URES后续迭代过程使用新样本中发现的pattern来更新模式库,其思想更接近于bootstrapping,也可以划归到半监督学习方法中。
2. 半监督学习方法
半监督学习方法在使用少量标注样本的同时充分挖掘未标注样本的分布信息,有利于系统的快速构建。其主要方法可以分为四类:自举(Bootstrapping)法、主动学习(Active Learning)、标签传播(Label Propagation)、迁移学习(Transfer Learning)。
- 自举法
自举法通常使用种子样例(seed samples)获取新的采样从而不断扩张样例库,是一种自动迭代的方法。
基于模式进行判定的典型算法为DIPRE (Dual Iterative Pattern Relation Expansion)
自举法的性能依赖于种子样例的质量。
- 主动学习
主动学习的核心观点在于通过模型筛选出最有价值(最难分类)的未标注样本提供给人工标注,以逐步提升模型效果。如下图所示,负责提供标注结果的人工在主动学习中被成为智囊(Oracle),算法可以直接从每次从样本库中采样一条样本决定是否需要提交给智囊(流式选择采样,stream-based selective sampling),也可以采样一批样本从中选择最好的样本提交给智囊(批量采样,pool-based sampling)。其中的查询策略是主动学习的核心,通常可以采用以下策略:
不确定性采样的查询(Uncertainty Sampling); 基于委员会的查询(Query-By-Committee); 基于模型变化期望的查询(Expected Model Change); 基于误差减少的查询(Expected Error Reduction); 基于方差减少的查询(Variance Reduction); 基于密度权重的查询(Density-Weighted Methods)。
- 标签传播
标签传播是一种基于图的半监督学习方法,其中数据中的实例表示为图中的节点,边反映节点之间的相似性。该方法通过加权边迭代地将任意节点的标签信息传播到邻近节点,最后在传播过程收敛的情况下推断出未标注实例的标签。
- 迁移学习
迁移学习的初衷是节省人工标注样本的成本,让模型可以通过已有的标记数据(Source Domain Data)向未标记数据(Target Domain Data)迁移,从而得到适用于target domain的模型。其核心在于试图学习到在source domain和target domain通用的特征,依据其迁移的内容不同可以分为四类:
1.基于实例的迁移学习(instance-based transfer learning):源领域(source domain)中的数据(data)的某一部分可以通过re-weighting的方法重用,用于target domain的学习。 2.基于特征表示的迁移学习(feature-representation transfer learning):通过source domain学习一个好的(good)的特征表示,把知识通过特征的形式进行编码,并从source domain传递到target domain,提升target domain任务效果。 3.基于参数的迁移学习(parameter-transfer learning):target domain和source domain的任务之间共享相同的模型参数(model parameters)或者是服从相同的先验分布(prior distribution)。 4.基于关系知识迁移学习(relational-knowledge transfer learning):相关领域之间的知识迁移,假设source domain和target domain中,数据(data)之间联系关系是相同的。
3. 监督学习方法
监督学习方法可以分为两部分:基于人工特征(hand-craft feature)的监督学习方法和基于深度学习的方法。
- 基于人工特征的监督学习方法
基于特征向量的方法,通过从包含特定实体对的句子中提取出语义特征,构造特征向量,然后通过使用支持向量机、最大熵、条件随机场等模型进行关系抽取。
基于核函数的方法,其重点是巧妙地设计核函数来计算不同关系实例特定表示之间的相似度。缺点:而如何设计核函数需要大量的人类工作,不适用于大规模语料上的关系抽取任务。
基于特征向量的方法重点在于特征的设计,特征来源包含两部分:一是来自文本上下文的特征;二是来自外部语义资源的特征。
来自文本上下文的特征包含词汇、句法和语义特征,如下图所示。
来自外部语义资源的特征通常从WordNet等获取特定触发词的近义词以扩充特征集合。
- 基于深度学习的方法
基于深度学习的方法优势在于不需要复杂的人工特征的设计, 且在大样本的训练下普遍效果由于基于人工特征的方法。
对于基于深度学习的方法我们可以将其划分成三个部分:一是使用了哪些语义信息,如word sequence、positional encoding、dependency tree等;二是使用了什么网络结构,如CNN类、RNN类、Attention类、GCN类等;三是是否使用了什么特殊训练方法,如Adversarial Training、Reinforcement Learning等。
语义信息
- word sequence
准确而言,这里是指文本转化的数值化序列,例如词表Tokenizer方式、BPE等Subword表示、Word2Vec等自回归预训练词向量。
- part of speech
文本中各词语的词性信息。
- positional encoding
位置编码,在关系抽取任务中的位置编码更多的是用于指示命名实体的位置,如Zhang等[17]使用这样一种位置编码方式:两个序列分别指示当前token与head起始token的相对位置和与tail起始token的相对位置,并将位置编码信息参与context的attention权重计算得到最终的embedding。
- dependency tree
利用依存树提升关系抽取任务性能的方法一类使用Tree-based CNN[18],另一类使用图神经网络[19]。
依存关系树样例
同时基于依存树得到的最短依存路径(Shortest Dependency Path, SDP)也被应用,如SDP-LSTM[,BRCNN等。
- entities
实体信息包含两部分:一是实体Mention,二是实体类别。如Peng等[通过对比实验证明了上下文信息和实体Mention是最关键的信息,同时实体类别也可以提供额外的提升。