TPLinker

简介

TPLinker融合了多头multi-head抽取范式(创建token-pair的矩阵)+ 标注方式(定义三种标注EH2ET,SH2OH,ST2OT的标签)的思想,有些巧妙。
TPLinker_第1张图片
假设序列长为N,实体类数为T个,关系类别为R个,则会根据标注标签生成2R+1个结果矩阵,TP_Linker其实就是在上面这种multi-head的思想基础上,最后输出的是一个[batch, seq_len, seq_len, num_label], num_label=2R+1

TPLinker的标注方式:

1). entity head to entity tail (EH-to-ET):紫色标注,表示同一实体的头尾关系,是1个N×N矩阵,如两个实体:New York City:M(New, City) =1; De Blasio:M(De, Blasio) =1。

2). subject head to object head (SH-to-OH):红色标注 表示subject和object的头部token间的关系,是R个N×N矩阵,如三元组(New York City, mayor,De Blasio):M(New, De)=1。

3). subject tail to object tail (ST-to-OT):蓝色标注 表示subject和object的尾部token间的关系,是R个N×N矩阵,如三元组(New York City, mayor,De Blasio):M(City, Blasio)=1。
TPLinker_第2张图片

EH2ET标注实体,SH2OH、ST2OT标注实体间关系。

由于entity的EH位置肯定大于ET位置,则EH-to-ET的实体标记肯定是都在与上半矩阵的。但是因为subject实体可能会出现的object实体顺序后,因此SH-to-OH与SH-to-OH的关系标记是可能会落在下半矩阵的,这样就必定造成矩阵中下半区是比较稀疏的。为加强计算的效率,防止稀疏矩阵部分参与计算,TPLinker采取翻转操作,将其转置到上三角,将“标记1”变为“标记2”。

为什么已经有SH-to-OH标记关系了,还要加ST-to-OT标记关系?
:因为嵌套实体,存在可能同头不同尾或同尾不同头情况,因此需要进行实体pair的head token与实体pair的tail token的双重检查,这个正是为解决嵌套实体的多关系问题。

对token-pair矩阵的解读

TPLinker_第3张图片

  1. 首先,根据实体预测矩阵,也就是解码EH-to-ET矩阵,可以得到句子中所有的token-pair矩阵,如[New-York]=1, [New-City]=1。(注意TPLinker是不区分实体类型的,实体类型暗含在关系里。)
  2. 对每种关系R,与解码实体矩阵也是一样的方式,解码ST-to-OT得到tail token pair,假设关系R=born in,则[City-Blasio]=2, [York-Blasio]=2。( 因为采用上三角表示,value等于2表示在句子语序中,subject处于object位置后,以此来区分实体的位置,也就是实体类型)。
  3. 对应的SH-to-OH矩阵,与2中ST-to-OT也是一样的,解码SH-to-OH得到head token pair ,结合上面1、2的实体集合以及Tail Token集合,从而可以得到完整的三元组信息。

具体流程

TPLinker_第4张图片

例子一

  1. 解码EH-to-ET得到实体集合E1 = [New York, New York City, De Blasio]
  2. 假设关系=“born in”,解码ST-to-OT得到集合E2 = [(York,Blasio), (City, Blasio)],解码SH-to-OH得到E3=[(New,De)]
  3. 根据实体集合E1= [New York, New York City, De Blasio],head pair集合E2 = [(York,Blasio), (City, Blasio)], tail pair集合E3=[(New,De)], 就能准确的拼接出两个完整的三元组了[De Blasio,born in,New York]和[De Blasio,born in,New York City]。

例子二

  1. 解码EH-to-ET中得到3个实体:{New York,New York City,De Blasio}; 字典D为:{New:(New York,New York City),De:(De Blasio)}
  2. 以关系“mayor”为例,解码ST-to-OT得到集合E:{(City,Blasio)};解码SH-to-OH得到{(New,De)},其在字典D中可关联的subject实体集合为{New York,New York City};object集合{De Blasio};
  3. 遍历上述subject集合和object集合,并在集合E中查询尾token,发现只有一个实体三元组{New York City,mayor,De Blasio}

TPLinker与GPLinker的区别

  1. TPLinker的token-pair分类特征是首尾特征后拼接做Dense变换得到的,其思想来源于Additive Attention;GPLinker则是用GlobalPointer实现,其思想来源于Scaled Dot-Product Attention。平均来说,后者拥有更少的显存占用和更快的计算速度。
  2. GPLinker分开识别subject和object的实体,而TPLinker将subject和object混合起来统一识别。笔者也在GPLinker中尝试了混合识别,发现最终效果跟分开识别没有明显区别。
  3. 在S(sh,oh|p)和S(st,ot|p),TPLinker将其转化为了l(l+1)/2个3分类问题,这会有明显的类别不平衡问题;而GPLinker用到了笔者提出的多标签交叉熵,则不会存在不平衡问题,更容易训练。事实上后来TPLinker也意识到了这个问题,并提出了TPLinker-plus,其中也用到了该多标签交叉熵。

你可能感兴趣的:(机器学习,深度学习,矩阵)