关系抽取(三)实体关系联合抽取:CasRel

news2024/10/7 18:26:45

目录

关系抽取两大类方法

CasRel(HBT)——ACL2020

1. 基本思想 

2. 模型细节

2.1 头实体识别层

2.2 关系、尾实体联合识别层

2.3 原理解释 

3. 实验


NLP 关系抽取 — 概念、入门、论文、总结 - 知乎 (zhihu.com)

关系抽取两大类方法

        按模型结构分类,关系抽取主要分为 Pipeline 和 Joint 方法。 对于 联合抽取(Joint extraction),又可以分为 "参数共享的联合模型" 和 "联合解码的联合模型":

关系抽取要考虑的问题,如下图所示:

  • SEO:SingleEntityOverlap,如上图中的Los Angeles与多个实体有关系
  • EPO:EntityPairOverlap,如上图的China与Beijing有capital city和contains两个关系
  • SOO:Subject Object Overlap,也有称为HOO(HeadTailOverlap)的,Subject和Object有nest嵌套的情况。

        前沿的方法基本都能解决Overlap问题。而应用时,要看实际场景会不会遇到这些问题,假如没有的话,其实大部分方法都可以进行简化的。

CasRel(HBT)——ACL2020

论文名称:《A Novel Cascade Binary Tagging Framework for Relational Triple Extraction》

论文链接:https://aclanthology.org/2020.acl-main.136.pdf

代码地址:https://github.com/weizhepei/CasRel

                  pytorch 版本:https://github.com/powerycy/Lic2020-

文章: 

一文详解关系抽取模型 CasRel - 知乎 (zhihu.com)

【关于 关系抽取 之 HBT】 那些的你不知道的事-技术圈 (proginn.com)

1. 基本思想 

        CasRel提出的动机最主要就是解决OverLap问题,至于CasRel里面提到的先抽主语,再把Predict和Object同时抽出来,并非CasRel的首创,最开始提到的应该是叫ETL的方法。

          

        CasRel 本质上也是基于参数共享的联合实体关系抽取方法,它通常被大家称作层叠指针网络。实际上,CasRel 的核心思想或者说作者改进现有模型的重点在于子层的设计

  • 因为CasRel 对于关系抽取这个任务的拆分不同,所以子任务及子任务求解顺序也不同。具体地:(1)首先CasRel 会识别所有可能的主语(头实体);(2)然后在给定类别关系R下,再去识别与主语相关的宾语(尾实体)
  • 更形式化的表达,如果说以前关系抽取/关系分类是这样一个映射函数f(S,O)\rightarrow R,现在在CasRel关系抽取对应的映射函数则是f_{R}(S)\rightarrow O。与之相似的思想很早之前就有出现在知识图谱表示学习方法当中,比如在下图的TransE模型中就有h+r≈t(这里h为头实体,t为尾实体)。

2. 模型细节

        现在我们再来看CasRel的模型细节。CasRel是一个基于联合解码的实体关系抽取模型,其思想和模型都很简单,主要包括三层:

  • 编码端:基于BERT的编码层用于获取上下文语义信息对字/词进行表征;
  • 解码端:解码端主要包括了头实体识别层关系与尾实体联合识别层

        在这里,基于BERT的编码层就不做过多的介绍了,感兴趣的读者可以下载论文《Pre-trained Models for Natural Language Processing》进行阅读学习。接下来,将着重介绍CasRel解码端

2.1 头实体识别层

        CasRel头实体识别层直接对编码层的结果进行解码,去识别所有可能的头实体。这里CasRel是识别头实体span,也就是start和end位置,所以它采用的是二分类。这点和实体识别BERT-MRC论文阅读笔记、实体识别LEAR论文阅读笔记 中类似。

因此,模型本身很简单:

  • 首先,利用一个(线性层 + 一个sigmoid激活函数)判断每个token是不是头实体的开始token或结束token;

  • 然后,利用最近匹配原则将识别到的start和end配对获得候选头实体集合

2.2 关系、尾实体联合识别层

        识别头实体后就要进行关系和尾实体的联合识别了。这里,CasRel是通过一组关系相关的尾实体识别层来实现的。每一层尾实体识别层的结构其实与头实体识别层是一样的,不同主要在于输入:

  • 头实体识别层的输入直接就是编码层的输出
  • 而尾实体识别层的输入还考虑了头实体的特征:v_{sub}^{k}

这里v_{sub}^{k}是第k个候选头实体所包含的所有token的向量的平均

2.3 原理解释 

(1)优化目标

        假设D为训练集,xj是第j个输入样本,T_{j}={(s, r, o)}是文本xj中含有的所有三元组,CasRel的训练目标自然是如下似然函数值最大:

 (2)概率公式变换

        根据联合概率=边缘概率*条件概率,我们有:

         这里s∈Tj表示出现在Tj中的一个头实体,(r,o)∈Tj|s表示出现在Tj中且其头实体为s的一组关系-尾实体对。P(s|xj)为先验概率,P((r,o)|s,xj)为条件概率。

(3)关系作为先验知识

        然后,把关系作为先验知识,我们可以进一步把上式右端第二项拆成两部分,即出现在Tj中且头实体为s的关系、其他关系:

        这里,R是所有关系的集合,r∈Tj|s表示出现在Tj中且头实体为s的一组关系,r∈R∖Tj|s是R与r∈Tj|s的差集,也就是没有出现在Tj中的其他关系。

o_{\o }表示对于文本xj与头实体s以及没有出现在Tj中的关系r来说,尾实体识别结果应当为空。所以最终我们有:

(4)结论

可以发现,最终这个式子与CasRel抽取实体关系三元组的子任务顺序一致:

  • 首先识别文本中所有可能的头实体;
  • 然后在每个关系类别下,去抽取与识别到的头实体存在该关系的所有可能的尾实体。

另一方面,这个任务拆解方式也很自然解决了重叠实体关系三元组的提取问题。

3. 实验

        实验主要在两个公开的数据集 NYT 和 WebNLG 上进行。此外,需要注意的是CasRel模型本身还有两个变体:

  • CasRelrandom:表示编码端的BERT参数是随机初始化的;
  • CasRelLSTM:表示编码端使用的是LSTM而不是BERT

当然CasRel则表示采用预训练好的BERT作为编码端。

(1)整体实验效果比对

        上图中展示了CasRel及其变体模型、CasRel_{random}CasRel_{LSTM}与其他基准方法在两个数据集上的效果。可以看到CasRel 及其变体的效果都高于其他方法;尤其在WebNLG数据上,相对提升得更多。仔细看 NYTWebNLG两个数据分布差异还是蛮大的:

  • NYTWebNLG两个数据中都有Normal类型的三元组、SEO类型的三元组、EPO类型的三元组,且三者在两个数据集中占比不同;
  • NormalSEOEPO分别代表常规实体关系三元组、单个实体重叠的实体关系三元组、实体对重叠的实体关系三元组;
  • NYT 中的实体关系三元组类型多为Normal类型,即数据中常规实体关系三元组居多。
  • WebNLG 中的实体关系三元组多为SEO类型,即单个实体重叠的实体关系三元组居多。

CasRel 在两个数据集上相对稳定的表现说明了在实体关系重叠这种复杂场景下,其框架的有效性

(2)不同三元组重叠类型实验对比

        上图展示了在不同三元组重叠类型的样本上各个基准方法与CasRel的实验结果。可以发现随着场景逐渐复杂(Normal->EPO、SEO),基准方法的效果都逐渐下降,但CasRel则取得了相对稳定且优异的表现。这个对比实验进一步说明了CasRel在重叠三元组场景下的有效性

(3)不同三元组个数实验对比

         随着样本中三元组个数的增多,每个方法的效果都或多多少地受到了影响,尤其在N>5即多于五个三元组的样本上,基准方法效果基本都大幅度下降,而CasRel相对要好一些。同时,在N>5的样本上CasRel的效果相对于基准方法提升的最多。

        这个对比实验反映了CasRel相比其他基准方法在处理多实体关系三元组下的能力更强

参考:

NLP 关系抽取 — 概念、入门、论文、总结

一文详解关系抽取模型 CasRel - 知乎 (zhihu.com)

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

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

相关文章

Git应用详解第七讲:Git refspec与远程分支的重要操作

这一节来介绍本地仓库与远程仓库的分支映射关系: git refspec 。彻底弄清楚本地仓库到底是如何与远程仓库进行联系的。 一、 Git refspec refspec 是 Reference Specification 的缩写,字面意思就是 具体的引用 。它其实是 一种格式 , git 通过这种格式来表示 本地分支 与 …

盘点|国内5款主流低代码开发平台介绍

国内主流低代码开发平台有哪些? 低代码开发平台作为解决企业数字化转型的有力手段,得到越来越多的关注,但企业在选型的时候也很苦恼,到底该选哪家,不同低代码平台到底有啥区别?各自侧重点是什么&#xff1…

R和Python机器学习:广义线性回归glm,样条glm,梯度增强,随机森林和深度学习模型分析

使用R和Python进行分析的主要好处之一是,它们充满活力的开源生态系统中总是有新的和免费提供的服务。 去年,我们与一家公司进行了短暂的咨询工作,该公司正在构建一个主要由基于R和Python机器学习分析的应用程序。 如今,越来越多…

在M1Mac上为GIMP安装G‘MIC插件

tags: GIMP MacOS Tips 写在前面 在Mac上使用GIMP也有段时间了, 虽然用起来还是一股理科风, 但是还是不影响使用, 之前就看过一个介绍GMIC插件的视频, 其中的滤镜效果确实很不错, 但是一直安装失败(可能是m1的原因), 这次看到GIMP更新到了Apple silicon的原生支持: 2.10.32-1…

深度测评FL Studio性能,多年Fl Studio使用感受分享

前阵子世界级电音盛会Tomorrowland在比利时如期举行,拉开了疫情下Rave文化复兴的帷幕。而国内,也推出了如《超感星电音》等电子音乐综艺,在节目上大家也更多地了解到了电子音乐的制作过程。节目中最被大家看好的制作人Carta所使用的FL Studio…

【数字信号去噪】基于matlab变分贝叶斯卡尔曼滤波器数字信号滤波【含Matlab源码 2256期】

⛄一、变分贝叶斯卡尔曼滤波器数字信号滤波 1变分贝叶斯 在参数估计的问题中,在获得了观测样本的数据集Z后,根据贝叶斯准则,核心是参数集 θ 的后验概率密度函数的计算 而式( 1) 计算的一个难点在于分母,边缘似然概率密度函数p( Z) 的计算。正如引言所述,通常情况下p( Z) 的计…

Windows系统反斜杠(倒斜杠 \ )和 Linux系统正斜杠(斜杠 / )

/撇是正斜杠,\捺是反斜杠(Windows单词的第一笔,即字母W的第一笔,就是反斜杠)。 1.单正斜杠(斜杠/)和双正斜杠(//) 1.1 在linux系统中的路径分隔符 ../表示上一级路径 …

Jenkins + GitBlit自动构建

多人协同过程中,避免不了多人提交,但没及时构建代码,导致代码被复盖。。。。 然后有了现在的自动构建【GitBlit配置groovy进行关联即可 ,或GitHub使用WebHook实现】 一、 安装Jenkins【Git Plugin】 GitBlit ,且可以正…

Java对象内存空间大小计算

一、查看基础类型的对象内存大小 八股文中很明确的告诉你了基础类型的大小 ,如下图: 类型值大小(byte)对象内存大小(byte)备注byte116char216int416float416long824double1624 很明显基础类型值的大小和内存大小不一致&#xff…

从入门到精通,收下这 22 个 Python 学习网站

今天一并给大家整理推送,希望能帮你在这条道路上,走得更顺畅,走得更远,更稳… 0. 学习整体思路 我做为一个过来人,有一些经验想要分享: 前期:花点时间选一门口碑上佳的入门电子文字教程&…

大数据:数据策略之CAP理论和BASE理论

一、CAP 理论 1.1 基本概念 1. 一致性 在分布式环境中,一致性是指数据在多个节点之间能够保持一致的特性。如果在某个节点上执行变更操作后,用户可以立即从其他任意节点上读取到变更后的数据,那么就认为这样的系统具备强一致性。 2. 可用…

使用OpenCV的函数hconcat()、vconcat()实现图像或矩阵的连接

使用OpenCV的函数hconcat()、vconcat()实现图像或矩阵的连接 函数hconcat()在水平方向上连接图像或矩阵; 函数vconcat()在垂直方向上连接图像或矩阵。 两个函数的原型和使用方法一模一样,所以在下面的函数原型介绍中,只介绍函数hconcat()的…

C++ std::nothrow

我们知道,当我们写程序时,栈区的内存是非常小的,如果是写那种大型的项目,不够用是很正常的,所以我们需要在堆区申请内存; 但是如果在堆区申请了大量的内存,导致没有空间了,那么程序…

刨根问底 Kubernetes -- CNI (三)Multus

文章目录Multus 概述Multus 使用Multus DaemonSet 的作用Multus 的使用Multus 的 处理1. 从 input 加载 netConf, 将 cni 配置加载到 netConf.Delegates2. 加载委托插件(delegate)并将其添加至 multus 配置2.1. 尝试解析 Pod 注解中 multus 配置2.2. 获取…

实践案例丨CenterNet-Hourglass论文复现

摘要:本案例是CenterNet-Hourglass论文复现的体验案例,此模型是对Objects as Points 中提出的CenterNet进行结果复现。本文分享自华为云社区《CenterNet-Hourglass (物体检测/Pytorch)》,作者:HWCloudAI。 目标检测常采用Anchor的…

【正点原子FPGA连载】第二十七章 MDIO接口读写测试实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十七章 MDIO…

字典类型和字典函数、字典方法

字典类型 (无序&#xff0c;不能重复) 通过任意键信息查找一组数据中值信息的过程叫映射&#xff0c; Python语言中通过字典实现映射。 Python语言中的字典可以通过大括号({})建立&#xff0c;建立模式如下&#xff1a; {<键1>:<值1>,<键2>:<值2>,...,…

[附源码]Python计算机毕业设计SSM健身房管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

p15~p22基本链表容器和高级链表容器迭代器

STL一、自制链表容器/基本链表容器1.1 首/尾部增删节点1.2 获取首/尾部的元素1.3 清空链表7 / 判空链表 / 链表大小81.4 缺省构造0/拷贝构造10/析构函数91.5 输出流操作符重载二、迭代器原理2.1 迭代器概念2.2 迭代器的分类三、迭代器实现3.1 正向非常迭代类3.2 正向非常迭代器…

html旅游网站设计与实现——绿色古典旅游景区 HTML+CSS+JavaScript

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…