笔记:TPLinker Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking


TPLinker Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking

作者:Wang et al., COLING 2020.

目录

  • 简介
  • 方法
  • 实验
  • 总结

1 简介

同样table filling做联合抽取,主要针对之前方法无论是pipeline还是联合训练一定程度都存在的曝光误差问题。提出新标注方案使得整个过程不再像之前方法分步级联,那么就很大程度避免了曝光误差产生,由于采用新的标注方案,table filling填充后要用新的算法去解码标签,进而抽取三元组。

2 方法

如图3为模型整体结构。

主要讲一下标注方案以及简单介绍一下解码过程,剩下的看后面的解码算法的伪代码就很容易理解了。

Tagging

如图2所示为针对两个不同关系的标注table。

给定一个sequence,我们枚举所有可能的token pairs(我们针对每个关系都要枚举依次标注当前关系下的link),同时使用矩阵标注token之间的链接。如图2左侧,三种颜色表示三种标注方案。1)entity head to entity tail(EH-toET): 这对token为一个实体的头和尾的位置;2)subject head to object head (SH-to-OH): 这对token分别为subject实体和object实体的头token的位置;3)subject tail to object tail (ST-to-OT): 类似2)表示这对token分别为subject实体和object实体的尾token的位置;

图2可见矩阵/table很稀疏尤其下三角,对于单个实体尾token不可能出现再头token的前面所以下三角部分为0即标注方案1,但object实体可能再subject实体前即标注方案2,所以不能直接去掉下三角来节省空间,因此作者采用一种矩阵压缩的方式 ,即图2右侧,将下三角的1映射到上三角对应位置,如果对应位置为1那就变为2,这样最后得到的就是一个上三角矩阵的针对某一个关系r的标注table矩阵了。

之后为了便于计算,将矩阵展开为图3所示的一个个序列,绿色的部分就是一个个token pair。

Decoding

先简单说一下图3中将矩阵展开为序列后三类标注的含义吧,这里偷个懒就直接贴原文的两小段了,因为感觉原文已经够精炼了,我再说也是翻译没意义。

整个解码大致流程为:针对每个关系,首先从ET-to-ET序列抽取所有的实体并将其存到一个字典\(D\)里,key为实体head token位置,value为一个元组(entity head pos, entity tail pos);之后,对于每个关系,我们先解码来自ST-to-OT序列的token pair即(subject tail pos, object tail pos)元组,将token pair元组存入集合\(E\)中;最后,再解码来自SH-to-OH序列的token pair即(subject head position, object head position)元组,我们根据这两个entity head位置,到字典D中找所有可能的以这两个位置开头的(key为这两个head pos的 )实体,然后遍历所有可能的候选实体对即针对每个头实体,遍历所有的实体作为object实体进而组成一个候选实体对,每次组合的时候查看此object实体位置是否在\(E\)中,如果在则抽取为一个三元组加入结合\(T\)中。

补充:

Token Pair Representation:

token pair \((w_i,w_j)\) link label预测:

解码算法1,直接看这个就能明白整个模型大致的流程了,很清晰。

疑问&想法

  • 解码最后解码SH-to-OH抽取三元组时,找到所有可能的以head pos开始的subject后,遍历所有的实体都看作是候选object如果我没理解错的话,进而看作时一个候选三元组嘛针对当前关系r,那么也就是说,只要object的出现在E中即直接判定为当sequence中当前r下的三元组,为什么E中的尾实体就是当前关系的尾实体,也可以说为什么当前的subject时当前关系r下的某个三元组的subject实体呢?都是标注时做到的?那下图中紫色下划线的意思是SH-to-OH和ST-to-OT两个标注方案就是按照一个三元组实体对的头尾标的这么说倒是合理了,那就需要根据数据集中ground truth的实体span和关系类型尽可能训练的模型标的正确了啊,那关键在于标注的准确程度?

  • Tag部分,为什么mayor关系的那个例子展开为序列后头尾标为1,关系born_in头尾标注为2,都是subject、object实体对啊,一对一对token判断的话也应该会有[New,De]和[De,New]mayor也应该是2啊为什么。而且,即便是2如何知道是2就是subject和object反了呢即需要a reversal link between tokens,也是根据训练集ground truth训练的使反的都标为2?应该不是把不懂。

  • 上一篇(Ren et al., EMNLP 2021.)\(^{[2]}\), 感觉也借鉴了这篇的一些想法啊

  • 这篇paper中introduction部分对近期这类工作的归纳整挺好的

ToDo

  • 有这些疑问一是paper没理解好,二也是感觉table filling方法不熟,整一篇比较常规的table filling方法的paper代码实现看看(Wang et al., EMNLP 2020.)\(^{[3]}\)这篇感觉就挺不错的。

参考

[1] Yucheng Wang1, Bowen Yu1?,Yueyang Zhang2 Tingwen Liu1, Hongsong Zhu1, Limin Sun1.TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking.COLING 2020.

[2] Feiliang Ren?,?, Longhui Zhang?, Shujuan Yin, Xiaofeng Zhao, Shilei Liu Bochao Li, Yaduo Liu.A Novel Global Feature-Oriented Relational Triple Extraction Model based on Table Filling.EMNLP 2021.

[3] Jue Wang1 and Wei Lu2.Two are Better than One:Joint Entity and Relation Extraction with Table-Sequence Encoders.EMNLP 2020.