摘要

现有工作很少能够较好地解决关系三元组的重叠问题(overlapping triple problem)。

本文用一个新的视角来重新审视关系提取任务,并提出了一种级联二分标注框架(Cascade Binary Tagging Framework, 简称CasRel)

该框架将关系(relation)建模为主体(subject)与客体(object)的函数映射,而不是像以前的工作那样将关系视为离散标签。

实验表明,该框架在多个场景下均可以获得性能提升,某些场景大幅度超越现有SOTA。

拟解决问题

重叠三元组问题overlapping triple problem有以下三种情形:

本文方案

本文关系抽取任务定义

本文的框架将关系(relation)建模为主体(subject)与客体(object)的函数映射,而不是像以前的工作那样将关系视为离散标签。

由学习关系分类器(relation为离散关系标签)

$f(s,o) \to r$

转变为学习主体s在关系r下对客体o的函数映射

$f_r(s) \to o$

基于上述视角,关系抽取任务可以分为以下两个步骤:

  • 确定句子中所有可能的主体 (subject);
  • 针对每个主体subject,使用特定于关系的标注器(relation-specific tagger)同时识别所有可能的关系相应的客体object

CasRel框架(三部分):

  • BERT-based encoder module (基于Bert的编码器模块)

  • subject tagging module(主体标注模块)

  • relation-specific object tagging module(区分关系的客体标注模块)

模型结构
模型结构

训练目标

针对训练集 $D$ 中的句子$x_j$,给定对应的潜在overlap triples集合 $ T_j = \{(s,r,o)\} $,最大化数据似然估计:

$ \prod\limits_{j=1}^{|D|} {\left[ \prod\limits_{(s,r,o) \in T_j} {p((s,r,o)|x_j)}\right]} $

$ = \prod\limits_{j=1}^{|D|} {\left[ \prod\limits_{s \in T_j} p(s|x_j) \prod\limits_{(r,o) \in T_j|s} p((r,o)|s,x_j)\right]}$

$ = \prod\limits_{j=1}^{|D|} {\left[ \prod\limits_{s \in T_j} p(s|x_j) \prod\limits_{ r \in T_j|s} p_r(o|s,x_j) \prod\limits_{r \in R \backslash T_j|s} p_r(o_{\emptyset}|s,x_j)\right]}$

其中,$s \in T_j$ 表示出现在 $T_j$ 中三元组的主体(subject),

$T_j | s $ 表示 $T_j$ 中主体是 $s$ 的三元组集合,

$R$ 是所有可能的关系的集合,

$\backslash$ 表示集合的差集,

$o_\emptyset$ 表示”null”客体。

对于任一个给定的主体 s , 在”s确实参与表达的关系r”的作用下,必定可以映射为客体 o ,而对于其他关系,映射为”空”客体 $null$

BERT Encoder

编码器使用Bert

Subject Tagger

训练两个二元分类器,分别识别Subject的开始位置结束位置,标识为1, 其他标识为0

对于每一个起始位置,从该位置依次向后寻找最近的结束位置, 从而寻找出所有Subject

$p_i^{start_s} = \sigma (W_{start} X_i + b_{start})$,

$p_i^{end_s} = \sigma (W_{end} X_i + b_{end})$,

$ X_i $ 表示序列第i个词的bert编码,

$\sigma $ 表示sigmoid激活函数。

loss

最大化似然函数:
$p_\theta(s|X) = \prod\limits_{t \in \{start_s,end_s\}} {\prod\limits_{i=1}^L (p_i^t)^{I\{y_i^t = 1\} }(1-p_i^t)^{I\{y_i^t = 0\}}}$,

$L$是句子长度,

$I\{z\} = 1$ ,如果 z 为 true, 否则 0,

$\theta$ 是参数集合

经过这一步骤,可是识别出句子中所有Subject

Relation-specific Object Taggers

针对每一个关系 $r$,训练两个二元分类器,分别识别针对关系r映射出的Object开始位置结束位置,标识为1, 否则标识为0

$p_i^{start_o} = \sigma (W_{start}^r (X_i + V^k_{sub}) + b_{start}^r)$,

$p_i^{end_o} = \sigma (W_{end}^r (X_i + V^k_{sub}) + b_{end}^r)$,

$V_{sub}^k$ 表示subject tagger识别出的第k个Subject的编码,若为多个词构成,取均值

loss

最大化似然函数:

$p_{\emptyset_r}(o|s, X) = \prod\limits_{t \in \{start_o,end_o\}} {\prod\limits_{i=1}^L (p_i^t)^{I\{y_i^t = 1\} }(1-p_i^t)^{I\{y_i^t = 0\}}}$,

$L$是句子长度,

$I\{z\} = 1$ ,如果 z 为 true, 否则 0,

$\emptyset_r$ 是参数集合,

另外,“空”客体Object,意味着

针对Subject Tagger识别出的每一个Subject,计算该subject在每个关系作用下的Object
对于每一个关系 $r$
若得到非空Object,既可以抽取出关系三元组,
若得到空Object,则认为不存在该关系。

整体Loss

最大化似然函数:

$J(\Theta) = \sum\limits _{j=1} ^ {|D|} \left[ {\sum\limits _{s \in T_j} \log p_\theta(s|X_j)} + {\sum\limits _{r \in T_j|s} \log p_{\emptyset_r}(o|s,X_j)} + {\sum\limits _{r \in R \backslash T_j|s} \log p_{\emptyset_r}(o_\emptyset|s,X_j)} \right]$