【NLP】一种联合关系抽取模型——TPLinker

news2024/12/26 9:23:45

背景

前文介绍了【NLP】一种基于联合方式的三元组抽取模型——CasRel.这个模型虽然实体和关系同时训练,但本质上来说还是分阶段的预测实体和关系,依然存在暴露偏差问题。下面介绍一个解决暴露偏差的模型:TPLinker,论文地址:TPLinker: Single-stage Joint Extraction of Entities and Relations Through Token Pair Linking,有兴趣的可以看一下原文。论文对应的源码地址:https://github.com/131250208/TPlinker-joint-extraction.

TPLinker,其中的T,P分别表示Token Pair,Linker就是Token之间的连接器,后文我们可以看到巧妙的模型设计。该模型不仅可以解决暴露偏差,还能够抽取overlap Entity,seo,epo问题也是可以解决的。整体效果也算不错的。

该模型的核心包含两个模块:1.handshaking tagging schema,2. decoding algorithm。

Handshaking Tagging Schema

Tagging

使用一个二维矩阵表示一个句子,句子中的所有token pair就可以表达了。如下图中的左边的那部分。

在这里插入图片描述
文中设计的token pair linker有如下三种:

  1. 一个实体的头token与尾token之间的link,entity head to entity tail(EH-to-ET),上图中 New York是一个实体,该实体就可以在纵坐标为New, 横坐标为York对应的索引位置标注为1即可表示为一个实体,即头,尾中的span内容就是一个实体;
  2. subject 实体的head指向object实体的head之间的link,subject head to object head(SH-to-OH),例如New York 的 New 与 De Blasio中的De,就构成了一个token pair;
  3. subject 实体的tail指向object实体的tail之间的link,subject tail to object tail(ST-to-OT),例如上图中的(“City”, “Blasio”)

从上图中的左半部分可以看出,这个矩阵是非常稀疏的,特别是下三角区域,因为一个实体的尾部不可能出现在实体头部之前,那么对应的token pair linker就不可能出现在下三角的区域中,这也会造成巨大的内存消耗。但是在关系中,object实体可能会出现在subject之前,也就是说下三角区域可能存在object在subject之前的token pair linker,那么下三角的那部分也不能给直接干掉了。文中采取的方式是将下三角中的tag 1映射到上三角中对应位置,设置标签为tag 2。(如何overlap实体之间存在关系的话,那么对应位置应该是多标签的,带着这个问题往下看)。映射完毕之后,就可以把剩余的部分做展平处理,用一个map记录原矩阵中的位置信息。一个处理案例如下:

在这里插入图片描述
对于刚才那个问题(本质上来说就是解决EPO问题),即不同的关系不能标记到同一矩阵中,也不能与实体重复。为了解决这个问题,该模型为每个关系执行相同的矩阵标记工作。那么就相当于构建一个2N+1个sequence labeling 子任务,N表示预定义关系数据,每个子任务有构建了一个长为 n 2 + n 2 \frac{n^2+n}{2} 2n2+n(包含对角线的上三角tag数量),n表示输入语句的长度。其中数据的计算量也会随着序列长度的增加呈平方形式的增加。当然,encoder被所有的tagger所共享,只需要一次性构建所有的token就够用了,整体还是有不错的效果。

Decoding

继续看一下第二张图,(“New”, “York”)、(“New”,“City”)、(“De”,“Blasio”)在EH-to-ET序列中分别表示着New York,New York City,De Blasio这三个实体。

对于关系mayor(New, De)在SH-to-OH序列中被标记为1,其表示subject 以 New 开始,object以De开始,(City,Blasio)在ST-to-OT 序列中被标记为1,表示subject和object分别以City、Blasio结尾。那么对应的解码结果就是(New York City,mayor,De Blasio)。同理其他的关系也是使用这种关系进行解码。

需要注意的是tag 2与tag 1表示的意义相反。例如:(York,Blasio)在born in类别中的ST-to-OT序列中被标记为2,其代表的意义是York,Blasio分别代表的是object和subject实体的尾token,对应解码后的结果是:(De Blasio,born in, New York)。对应的解码算法如下:

在这里插入图片描述

Token Pair Representation

token pair如何进行表征呢?给定一个长度为n的语句 [ w 1 , ⋯   , w n ] [w_1, \cdots, w_n] [w1,,wn],首先将每个token w i w_i wi 使用一个基本的编码器,如bert,lstm等转换成一个低纬度结合上下文向量 h i h_i hi。对于一个token pair(w_i, w_j)我们可以生成一个特征表示 h i , j h_{i,j} hi,j,如下:

h i , j = t a n h ( W h ⋅ [ h i ; h j ] + b h ) , j ≥ i h_{i,j} = tanh(W_h\cdot[h_i;h_j] + b_h),j\ge i hi,j=tanh(Wh[hi;hj]+bh)ji
通常:[]中的向量是使用拼接的方式,当然可以使用其他方式如平均等。 W h W_h Wh是一个参数矩阵, b h b_h bh是一个bias向量,都是在训练过程中需要学习的。上式也是Handshaking Kernel的数学表示。

Handshaking Tagger

对于给定的token pair 的表示 h i , j h_{i, j} hi,j,那么token pair ( w i , w j ) (w_i, w_j) (wi,wj)link的标签可使用如下公式进行预测:

P ( y i , j ) = S o f t m a x ( W o ⋅ i , j + b o ) P(y_{i,j}) = Softmax(W_o\cdot_{i, j} + b_o) P(yi,j)=Softmax(Woi,j+bo)

l i n k ( w i , w j ) = arg ⁡ max ⁡ l P ( y i , j = l ) link(w_i, w_j) = \underset{l}{\arg\max}P(y_{i, j}=l) link(wi,wj)=largmaxP(yi,j=l)
其中 P ( y i , j = l ) P(y_{i,j}=l) P(yi,j=l)表示token pair ( w i , w j ) (w_i, w_j) (wi,wj)link识别的标签为l的概率。

loss function

那么模型的损失函数该如何构建呢?具体如下:
L l i n k = − 1 N ∑ i = 1 , j ≥ i N ∑ ∗ ∈ { E , H , T } log ⁡ P ( y i , j ∗ = l ^ ∗ ) L_{l i n k}=-\frac{1}{N} \sum_{i=1, j \geq i}^N \sum_{* \in\{E, H, T\}} \log P\left(y_{i, j}^*=\hat{l}^*\right) Llink=N1i=1,jiN{E,H,T}logP(yi,j=l^)
其中, N N N表示输入序列的长度, l ^ \hat{l} l^表示正确的tag, E , H , T E,H,T E,H,T分别表示EH-to-ET,SH-to-OH和ST-to-OT的tagger。

补充

在后来的代码中TPLinkerPlus支持了实体分类的功能。

总结

总体来说,这个模型又是一个巧妙的结构设计。整体来说,对于overlap的实体也可以识别出来,对于SEO,EPO问题也可以解决,并且没有暴露偏差,预测效率在同级别模型中也算可以,可以尝试在实际的工业领域中进行落地实验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【OJ】A+B=X

📚Description: 数列S中有n个整数,判断S中是否存在两个数A、B,使之和等于X。 ⏳Input: 第一行为T,输入包括T组测试数据。 每组数据第一行包括两个数字n和X,第二行有n个整数,表示数列S,(1&l…

Linux-0.11 文件系统inode.c详解

Linux-0.11 文件系统inode.c详解 Linux-0.11中使用的文件系统为minix, inode.c中的函数和该文件系统强关联。 inode节点在文件系统中与文件相关联,一个文件的就由一个inode来管理,这个inode节点将记录文件的权限,大小&#xff0…

SpringCloud之Nacos

Nacos1. Nacos的概念2. Nacos的作用3. Nacos的下载与安装4. Nacos Client 服务端的搭建5. Nacos 的namespace 和 group6. 配置中心7. 注意点1. Nacos的概念 Nocos 是 SpringCloudAlibaba架构中最重要的组件Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务挂你…

pytorch搭建手写数字识别LeNet-5网络,并用tensorRT部署

pytorch搭建手写数字识别LeNet-5网络,并用tensorRT部署前言1、pytorch 搭建LeNet-5,并转为ONNX格式1.1 LeNet-5网络介绍1.2 ONNX(Open Neural Network Exchange)介绍1.3 pytorch 搭建 LeNet5网络2、将onnx转为tensorRT2.1 tensorRT 介绍2.1 onnx 转为 te…

C++面向对象(下)

文章目录前言1.再谈构造函数1.初始化列表2.explicit关键字2. static成员1.概念3.友元1.概念2.友元函数3.友元类4. 内部类5.匿名对象6.编译器优化7.总结前言 本文是主要是将之前关于C面向对象中的一些没有归纳到的零星知识点进行补充,同时对C中的面向对象简单收个尾…

如何在ONLYOFFICE v7.3中使用VSTACK和HSTACK公式

大家好,今天来给大家讲解一下,怎样在ONLYOFFICE v7.3中使用VSTACK和HSTACK公式, 这两个新公式也是ONLYOFFICE7.3版本更新后新的计算公式,请大家详细阅读本文。 ONLYOFFICE ONLYOFFICE文档是一款免费开源在线办公软件&#xff0c…

实验室装修|SICOLAB实验室装修方案

实验室装修不外乎通风与洁净的设计为重中之重,以下由SICOLAB介绍分享。一、实验室通风系统主要包含送风系统和排风系统两部分。(1)送风系统的设计需要考虑以下几个方面:1.1空气质量要求:实验室内的空气需要保持一定的洁…

生物素标记试剂1869922-24-6,Alkyne-PEG3-Biotin PC,炔烃PEG3生物素PC

1、试剂基团反应特点(Reagent group reaction characteristics):PC alkyne-PEG3-Biotin含一个炔烃和一个 PEG 链接的可光裂解生物素基团。含 3 个单元 PEG 的 ADC linker,生物素本身是个游离的小分子,在生物实验中常常…

【汽车雷达通往自动驾驶的关键技术】

本文编辑:调皮哥的小助理 现代汽车雷达装置比手机还小,能探测前方、后方或侧方的盲点位置是否存在障碍物,但这还不百分之百实现全自动驾驶的。传统的汽车雷达分辨率都不高,只能“看到”一团东西,可以检测到汽车周围存在…

掌握使用yum为CentOS系统安装软件掌握使用apt为Ubuntu安装软件(扩展)

1.掌握使用yum为CentOS系统安装软件2.掌握使用apt为Ubuntu安装软件(扩展)1、Linux系统的应用商店 操作系统安装软件有许多种方式,一般分为: •下载安装包自行安装•如win系统使用exe文件、msi文件等•如mac系统使用dmg文件、pkg文…

容联七陌:ChatGPT大模型能力为智能客服带来新方向

科技云报道原创。 近几个月来,大众对ChatGPT预期的持续走高,也影响到了智能客服领域公司的命运。 一方面,ChatGPT的出现为智能客服场景带来了更加“智能”的可能性;但另一方面,有人认为ChatGPT完全可以替代现有的智能…

数值方法笔记3:线性和非线性方程组求解

前置知识1:矩阵范数前置知识2:舒尔补前置知识3:可约矩阵前置知识4:谱半径1.【线性方程组】直接求解:高斯消元法(LULULU分解)、LDVLDVLDV分解、LDLTLDL^TLDLT分解、UDUTUDU^TUDUT分解1.1 高斯消元法(LULULU分解)1.2 LDV…

公司缺人面了8个测试员,他们都有一个相同的缺点.....

年后公司缺人,面了不少测试,结果竟然没有一个合适的。 一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。 看简历很多都是3年工作经验,但面…

什么是深拷贝和浅拷贝?以及怎么实现深拷贝和浅拷贝?

拷贝浅是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到…

Excel操作-Apache-POI

Excel操作-Apache-POI一、场景需求将一些数据库信息导出为Excel表格将Excel表格数据导入数据库大量的数据的导入导出操作解决方案常用的解决方案:Apache POI与阿里巴巴easyExcelApache-POI介绍Apache-POI是基于office open XML标准(OOXML)和M…

合同审核机器人,提高合同审核效率,规避企业损失

官方网址:www.hanyunintel.com 在合同审核中面临的问题和挑战: 一、人工合同审核风险高: 人工合同审核依赖审核人员业务素养、精神状态、工作量、体力、工作态度及责任心,难免存在人工审核合同不严谨的情况,如果不能及…

【C++提高编程】C++全栈体系(二十一)

C提高编程 第三章 STL - 常用容器 三、deque容器 1. deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言&am…

简洁易用的记账小程序——微点记账

背景 由于每个月的信用卡账单太过吓人,记性也不是特别的好,加上微信支付宝账单中有些明细不是很明确。比如在京东花销的明细不会记录用户购买了什么,只会记录那个通道支出的。所以,才会有了想自己开发一款记账小程序,…

面试常问-Alpha测试和Beta测试

Alpha测试 Alpha测试是一种验收测试,在识别典型用户可能执行的任务并对其进行测试之前,执行该测试是为了识别所有可能的问题和错误。 尽可能简单地说,这种测试之所以被称为alpha,只是因为它是在软件开发的早期、接近开发结束时和…