• 联合关系抽取论文(一)——TPLinker


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

    论文代码链接

    论文链接
    代码链接
    paperwithcode

    解决了什么问题

    关系重叠问题

    • Normal:两个实体一个关系,正常且普通
    • SEO(SingleEntityOverlap):一个实体与其他实体存在关系
    • EPO(EntityPairOverlap):一对实体存在多个关系
      在这里插入图片描述

    暴露偏差问题

    暴露偏差问题指的是在关系抽取任务中,训练阶段输入的是gold entity(ground truth entity),而在预测阶段是实体识别模型预测的实体。

    • 例如基于解码器的方法,在训练时,使用真值token作为上下文。而在推理时,模型生成的前一个token作为上下文输入。
    • 基于分解的方法将 gold实体(ground truth entity)作为特定的输入,在训练过程中指导模型提取对象实体和关系,而在推理时,输入的核心实体由模型给出。

    导致训练和推理之间存在差距。

    TPLinger介绍

    基础方法

    TPLinker整体标注Tag框架是基于token pair进行的,其本质上就是一个span矩阵。这种方法也可以成为Multi-Head方法

    Multi-Head方法重点在于构建一个==[batch_size, seq_len, seq_len, hidden]==维度的矩阵(后续成为table),相当于每一个token embedding都逐个乘以sequence中的其他token embedding,得到token与其他所有token之间一种交互特征,每一个单元格都可以代表一个token pair,进而通过其他方提取实体关系及关系类型。
    在这里插入图片描述

    提出的标注框架

    TPLinker将联合抽取任务转化为Token Pair Linking问题。给定一个句子,两个位置p1,p2和一个特定的关系r,TPLinker回答三个Yes / No伪问题:
    " p1和p2分别是否是同一个实体的起点和终点? ",
    " p1和p2分别是否是两个具有r关系的实体的起点? ",
    " p1和p2分别是否是两个具有r关系的实体的终点? "。

    为此设计了一个为每个关系标注3个token链接矩阵的握手标注方案来回答上述3个问题。我们在上述提到的table为基础,构建了如下的标注框架。

    • 紫色标注:EH to EH,表示一个实体的头尾。如两个实体:New York City:M(New, City) =1; De Blasio:M(De, Blasio) =1。
    • 红色标注:SH to OH,表示subject和object的头部token间的关系。如下图中三元组(New York City, mayor,De Blasio),标注方式就是红色(New, De)=2。
    • 蓝色标注:ST to OT,表示subject和object的尾部token间的关系。如下图中三元组(New York City, mayor,De Blasio),标注方式就是蓝色(City, Blasio)=2。

    其中的1和2的区别就是关系方向的问题。我们看到在下三角矩阵当中也有1存在,文章为了为防止稀疏计算,下三角矩阵不参与计算;虽然实体标注不会存在于下三角矩阵种,但关系标注是会存在的。如果关系存在于下三角,则将其转置到上三角,并有“标记1”变为“标记2”。
    在这里插入图片描述
    如此已经解决的上面提到的SEO问题了(关系重叠问题当中说了),但是EPO的问题在这里还没有解决,因此论文使用了下面的”硬核“解决办法。

    解码过程

    在这里联合抽取任务被解构为2N + 1个序列标注子任务,其中N表示预定义关系类型的数量(关系标签个数),每个子任务构n*(n+1)/2的标建一个长度为签序列,其中n为输入句子的长度。

    红色为实体对的头,蓝色为实体对的尾,紫色为检测到的实体,1和2代表这对实体关系的方向。
    在这里插入图片描述
    TPLinker的解码过程为:

    1. 解码EH-to-ET可以得到句子中所有的实体,用实体头token idx作为key,实体作为value,存入字典D中;
    2. 对每种关系r,解码ST-to-OT得到token对存入集合E中
    3. 解码SH-to-OH得到token对并在字典D中关联其token idx的实体value;
    4. 对上一步中得到的SH-to-OH token对的所有实体value对,在集合E中依次查询是否其尾token对在E中,进而可以得到三元组信息。

    在这里可以明显地察觉到,TPLinker在遇到存在复杂关系的数据集时会比较费劲。为了解决EPO问题将存在关系的实体对在每个关系标签上都要进行判断,但文章中说的是。。。
    在这里插入图片描述

    TPLinker的实验结果

    在这里插入图片描述

    总结

    优点:

    • TPLinker这种one-stage的联合抽取模型解决了暴露偏差和误差传递的问题,同时理论上能够解决SEO、EPO、SOO等关系重叠问题

    缺点:

    • TPLinker的标注复杂度高,存在很多冗余的操作和信息,若关系数目很大,需要标注
      2N+1个标签表,就像1.2中PRGC提到的关系冗余,导致解码部分矩阵参数量很大,标签表会非常稀疏,训练收敛速度慢
    • TPLinker的解码效率并不是很高,下图为1.2中PRGC论文中的模型效率对比图,可以发现TPLinker的计算复杂度和解码效率并不是很高
      在这里插入图片描述
    • 实体和关系各自进行标注抽取,实体和关系没有进行很深的交互和关联
  • 相关阅读:
    k8s 入门到实战--部署应用到 k8s
    shiro基础(一)shiroFilter
    android studio虚拟机中一个程序模拟udp通信
    Linux实现文件共享
    基于蝙蝠算法的无人机航迹规划-附代码
    Django模块连接redis
    【C++】公有_保护_私有_继承—代码学习记录
    CSRF跨站请求伪造:django中如何攻击与防御
    mysql学习笔记8——常用5个内置方法
    如何上传项目到github?
  • 原文地址:https://blog.csdn.net/CSTGYinZong/article/details/133028928