关系抽取(一)

news2024/10/6 10:36:52

        关系抽取从流程上,可以分为流水线式抽取(Pipline)和联合抽取(Joint Extraction)两种,流水线式抽取就是把关系抽取的任务分为两个步骤:首先做实体识别,再抽取出两个实体的关系;而联合抽取的方式就是一步到位,同时做好了实体和关系的抽取。流水线式抽取会导致误差在各流程中传递和累加,而联合抽取的方式则实现难度更大。

  关系抽取从实现的算法来看,主要分为四种:

  1、手写规则(Hand-Written Patterns);

  2、监督学习算法(Supervised Machine Learning);

  3、半监督学习算法(Semi-Supervised Learning,比如Bootstrapping和Distant Supervision);

  4、无监督算法。

1. 手写规则模板的方法

  1、例子:

  有种关系叫做上下位关系,比如hyponym(France; European countries)。从下面两个句子中都可以抽取出这种关系:

  European countries, especially France, England, and Spain...

  European countries, such as France, England, and Spain...

  两个实体之间的especially和such as可以看做这种关系的特征。观察更多表达这种关系的句子,我们就可以构造如下的规则模板,来抽取构成上下位关系的实体,从而发现新的三元组。

  2、优点和缺点:

  优点是抽取的三元组查准率(Precision)高,尤其适合做特定领域的关系抽取;缺点是查全率(Recall)很低,也就是说查得准,但是查不全,而且针对每一种关系都需要手写大量的规则,比较惨。

2. 监督学习的方法

  监督学习的方法也就是给训练语料中的实体和关系打上标签,构造训练集和测试集,再用传统机器学习的算法(LR,SVM和随机森林等)或神经网络训练分类器。

  1、机器学习和深度学习方法

  对于传统的机器学习方法,最重要的步骤是构造特征。可以使用的特征有:

  (1)词特征:实体1与实体2之间的词、前后的词,词向量可以用Bag-of-Words结合Bigrams等。

  (2)实体标签特征:实体的标签。

  (3)依存句法特征:分析句子的依存句法结构,构造特征。这个不懂怎么弄。

  人工构造特征非常麻烦,而且某些特征比如依存句法分析,依赖于NLP工具库,比如HanLP,工具带来的误差不可避免会影响特征的准确性。

  用端到端的深度学习方法就没这么费劲了。比如使用CNN或BI-LSTM作为句子编码器,把一个句子的词嵌入(Word Embedding)作为输入,用CNN或LSTM做特征的抽取器,最后经过softmax层得到N种关系的概率。这样省略了特征构造这一步,自然不会在特征构造这里引入误差。

  2、监督学习的优缺点

  监督学习的优点是,如果标注好的训练语料足够大,那么分类器的效果是比较好的,可问题是标注的成本太大了。

3. 半监督学习

  鉴于监督学习的成本太大,所以用半监督学习做关系抽取是一个很值得研究的方向。

  半监督学习的算法主要有两种:Bootstrapping和Distant Supervision。Bootstrapping不需要标注好实体和关系的句子作为训练集,不用训练分类器;而Distant Supervision可以看做是Bootstrapping和Supervise Learning的结合,需要训练分类器。

3.1 Bootstrapping基于种子的启发式方法

  Bootstrapping算法的输入是拥有某种关系的少量实体对,作为种子,输出是更多拥有这种关系的实体对。敲黑板!不是找到更多的关系,而是发现拥有某种关系的更多新实体对。

        首先准备一些高质量的实体一关系对作为初始种子(Seed)。如图所示,作者刘慈欣与《三体》这两个实体之间是创作人的关系,可以用<刘慈欣,三体,创作人>三元组来表示,同时需要准备一个大规模语料库提供种子进行模板(pattern)的学习。整个过程会不断重复以下步骤

  • 以初始种子为基础,在大规模语料库中匹配所有相关的句子;
  • 对这些句子的上下文进行分析,提取出一些可靠的模板;
  • 接着再通过这些模板去匹配语料,发现更多待抽取的实例(新的种子);
  • 然后通过新抽取的实例去发掘出更多新的模板。

                      
        如此不断迭代学习,直到满足预设的收敛条件。通常可以设置不再发现新的实体或者模板作为收敛条件,也可以通过设计评测指标,当新发掘的实例和模板质量低于特定条件时结束迭代。
        该方法构建成本低,适合进行大规模的数据构建,并且可能发现新的隐含关系。然而它对初始种子的质量要求高,总体准确率较低,在不断迭代过程中可能会发生语义偏移的、情况,例如图中第四个句子虽然同时包含<刘慈欣>和<三体>实体,但是二者之间并非<创作人>的关系,需要做较多的条件约束来控制提取出的数据的质量。

  例子2:“创始人”是一种关系,如果我们已经有了一个小型知识图谱,里面有3个表达这种关系的实体对:(严定贵,你我贷),(马云,阿里巴巴),(雷军,小米)。

  • 第一步:在一个大型的语料集中去找包含某一实体对(3个中的任意1个)的句子,全部挑出来。比如:严定贵于2011年创立了你我贷;严定贵是你我贷的创始人;在严定贵董事长的带领下,嘉银金科赴美上市成功。
  • 第二步:归纳实体对的前后或中间的词语,构造特征模板。比如:A 创立了 B;A 是 B 的创始人;A 的带领下,B。
  • 第三步:用特征模板去语料集中寻找更多的实体对,然后给所有找到的实体对打分排序,高于阈值的实体对就加入到知识图谱中,扩展现有的实体对。
  • 第四步:回到第一步,进行迭代,得到更多模板,发现更多拥有该关系的实体对。

  细心的小伙伴会发现,不是所有包含“严定贵”和“你我贷”的句子都表达了“创始人”这种关系啊,比如:“在严定贵董事长的带领下,嘉银金科赴美上市成功”——这句话就不是表达“创始人”这个关系的。某个实体对之间可能有很多种关系,哪能一口咬定就是知识图谱中已有的这种关系呢?这不是会得到错误的模板,然后在不断的迭代中放大错误吗?

  没错,这个问题叫做语义漂移(Semantic Draft),一般有两种解决办法:

  • 一是人工校验,在每一轮迭代中观察挑出来的句子,把不包含这种关系的句子剔除掉。
  • 二是Bootstrapping算法本身有给新发现的模板和实体对打分,然后设定阈值,筛选出高质量的模板和实体对。具体的公式可以看《Speech and Language Processing》(第3版)第17章。

  2、Bootstrapping的优缺点

  Bootstrapping的缺点一是上面提到的语义漂移问题,二是查准率会不断降低而且查全率太低,因为这是一种迭代算法,每次迭代准确率都不可避免会降低,80%---->60%---->40%---->20%...。所以最后发现的新实体对,还需要人工校验。

3.2 远程监督

        远程监督本质上是一种自动标注样本的方法,但是它的假设太强了,会导致错误标注样本的问题。 

        远程监督方法最早由Mintz提出,它结合监督学习和基于种子的启发式方法的优点,用于做联系抽取任务。远程监督方法基于一个前提假设

如果两个实体之间存在某种关系,那么所有同时提到这两个实体的句子都能够描述这种关系。

        其核心思想是利用实体在语料中抽取潜在关系,再用关系反向定位抽取实体。首先基于远程监督方法获取大量的标签数据,再用机器学习或深度学习等有监督方法训练分类器,接着对程序自动标注的数据进行划分,将质量较高的自动标注数据加入训练数据,而将质量低的数据丢弃或者交由人工标注审核,整个流程可以参考图。

             

        远程监督方法可以快速获取大量标注数据,但它也存在两个明显缺点:

  • 在某些情况下,前提假设可能不成立,导致学习到很多噪声数据;
  • 基于远程监督方法标注的数据在提取特征训练分类器时,前序NLP任务如词性标注、句法分析等构建特征时,存在错误传递的问题,会影响分类器的效果。这点也是后续研究的一个改进方向,后面的研究人员用神经网络作为特征提取器,代替人工提取的特征,并用词嵌入作为文本特征,如PCNN。

        但总体来说,远程监督方法依旧是一种很优秀的方法,目前取得state-of-the-art(最先进的)效果的方法大多基于该方法,且有很多工作致力于解决以上两个问题来提升任务效果,比如Riedel提出了一个加强版的前提假设,即两个实体之间某种关系成立的前提,必须至少有一个包含这两个实体的句子描述了这种关系;再比如在特征构建过程中,也可以摒弃传统pipeline的特征抽取过程,改用CNN网络和Attention机制来抽取特征。

        PCNN:亮点在于把多实例学习、卷积神经网络和分段最大池化结合起来,用于缓解句子的错误标注问题和人工设计特征的误差问题,提升关系抽取的效果。

4. 无监督

  半监督的办法效果已经勉强,无监督的效果就更差强人意了,这里就不介绍了。

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

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

相关文章

Zookeeper(curator)实现分布式锁案例

文章目录一、搭建Zookeeper1、下载2、安装启动二、Zookeeper分布式锁简述三、curator客户端使用分布式锁1、curator概述2、curator使用四、测试效果1、几个常见命令1&#xff09;ls2&#xff09;stat3&#xff09;get4&#xff09;set2、加锁解锁效果3、竞争锁效果一、搭建Zook…

「区块链+数字身份」:DID 身份认证的新战场

美国经济学家布莱恩 • 阿瑟在其著作《技术的本质》中&#xff0c;写过这么一句话&#xff1a;「技术总是进行着这样一种循环&#xff0c;为解决老问题去采用新技术&#xff0c;新技术又引发新问题&#xff0c;新问题的解决又要诉诸更新的技术」。 区块链技术之所以能流行&…

金融外包测试项目经验分享

金融项目外包 测试管理 经验 软件测试 首先确定项目外包测试的核心问题—对项目外包测试的定位。 项目外包测试是一种服务性工作&#xff0c;所以把服务放在第一位是做任何事情的出发点。作为项目经理&#xff0c;一定要把这种思想告诉给我们的测试团队成员&#xff0c;树立服务…

webGL学习

1 初试webGL const canvas document.getElementById(canvas) //获取webgl上下文对象 相当于设置画笔 const gl canvas.getContext(webgl) //声明颜色 gl.clearColor(0,0,0,1)gl.clear(gl.COLOR_BUFFER_BIT)2 将rbga颜色设置为webgl颜色 使用three.js的color const color …

在一个已经EXIT的docker容器中,修改配置文件

文章目录背景一、方法一二、方法二1.通过运行docker inspect [容器id]来获取到底层的容器对象信息2.修改配置文件总结背景 当我们在修改容器里的配置文件后(例如mysql),发现重新运行容器起不来了,此时不要慌&#xff01;下面我来介绍两种方法来修改已经停止的容器里的配置文件,…

jvm监控服务性能、以及资源使用情况

目录 1.前言&#xff1a; 2.如何监控 2.1.spring admin 2.2.pass平台 2.3jvm 本地jdk监控本地服务 2.3.1介绍 2.3.2JVisualVM能做什么 2.3.3使用 2.4jvm 本地jdk监控远程服务 方式一 方式二 1.前言&#xff1a; 常规新项目上线&#xff0c;做非功能测试&#xff08…

【目标检测】Faster R-CNN的几点理解

目录&#xff1a;Faster R-CNN的几点理解一、Faster R-CNN概述二、R-CNN、Fast R-CNN、Faster R-CNN的对照2.1 R-CNN2.1.1 R-CNN的检测步骤2.1.2 R-CNN的主要缺点2.2 Fast R-CNN2.2.1 Fast R-CNN的检测步骤2.2.2 Fast R-CNN的缺点2.3 R-CNN、Fast R-CNN、Faster R-CNN的比较三、…

【Android App】获取照片里的位置信息及使用全球卫星导航系统(GNSS)获取位置实战(附源码和演示 超详细)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、获取照片里的位置信息 手机拍摄的相片还保存着时间、地点、镜头参数等信息&#xff0c;这些信息由相片接口工具ExifInterface管理&#xff0c;它的常用方法说明如下&#xff1a; getLatLong&#xff1a;获取相片拍摄时候的…

双飞翼布局

实现双飞翼布局&#xff0c;两边保持不保&#xff0c;只有中间变化&#xff1a; html代码&#xff1a; ------------------------------------------------------------------------------------ <!doctype html> <html> <head> <meta charset"utf…

拼多多季报图解:营收355亿同比增65% 研发投入达27亿

雷递网 雷建平 11月28日拼多多今日发布2022年第三季度业绩报告。财报显示&#xff0c;拼多多2022年第三季度营收为355亿元&#xff0c;同比增长65.1%。受到一些项目投入延缓等偶发因素影响&#xff0c;三季度平台运营费用为176.5亿元&#xff0c;占收入的比例从上年同期的59.6&…

VH03型多功能采集仪

河北稳控科技手持振弦传感器VH03型多功能采集仪&#xff0c;是专用的多类型传感器手持式读数仪&#xff0c;主测传感类型为单弦式振弦传感器&#xff0c;辅测传感类型为电压、电流传感。采用32位ARM处理器和大尺寸全彩屏、阵列按键设计&#xff0c;在完成快速测读的同时还具备极…

高校排课系统/排课管理系统的设计与实现

摘 要 网络的广泛应用给生活带来了十分的便利。所以把高校排课与现在网络相结合&#xff0c;利用JSP技术建设高校排课系统&#xff0c;实现高校排课的信息化。则对于进一步提高高校排课发展&#xff0c;丰富高校排课经验能起到不少的促进作用。 高校排课系统能够通过互联网得到…

国民经济行业代码查询系统-公司行业代码查询

今天在申请公司的一些信息时&#xff0c;要我给公司行业的代码&#xff0c;4位&#xff0c;问了财务和高企的申请伙伴&#xff0c;都没有特别清晰&#xff0c;让百度&#xff0c;直接百度花了点时间&#xff0c;记录一下&#xff0c;帮助其他的伙伴 国民经济行业代码查询系统 …

Python的10个编程技巧,你不一定都知道

文末有Python资料下载 1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换&#xff08;变量值&#xff09;的方法&#xff0c;请参见下面的示例&#xff1a; 赋值的右侧形成了一个新的元组&#xff0c;左侧立即解析&#xff08;unpack&#xff09;那个&…

2022-安洵杯

WEB babyphp call_user_func() 函数如果传入的参数是array类型的话&#xff0c;会将数组的成员当作类名和方法&#xff0c; array(0) { } <?php //something in flag.phpclass A {public $a;public $b;public function __wakeup(){$this->a "babyhacker";…

Mathematica(36)-在Plot中画平行于y轴的线

在论文写作过程中&#xff0c;我们常常也需要画一条平行于y坐标轴的直线&#xff0c;怎么实现呢&#xff1f; 比如&#xff0c;下面的代码就是绘制了一条平行于y轴的直线&#xff0c;这条直线采用了虚线来表示 Plot[Sin[x], {x, 0, 2 Pi}, Epilog -> {Dashed, Line[{{5, -…

ISCSLP 2022 | AccentSpeech—从众包数据中学习口音来构建目标说话人的口音语音合成系统

构建带口音的语音合成系统可以增加语音合成的多样性和趣味性。然而不是每个人都能说多种口音。为了实现口音与说话人音色的自由组合&#xff0c;借助迁移学习技术&#xff0c;为没有口音数据的说话人构建口音合成系统&#xff0c;是实现“口音任意说”的有效途径。但是以往大多…

[网络工程师]-应用层协议-WWW与HTTP

1、WWW 万维网&#xff08;World Wide Web,WWW&#xff09;是一个规模巨大、可以互联的资料空间&#xff0c;该资料空间的资源依靠URL进行定位&#xff0c;通过HTTP协议传送给使用者&#xff0c;又由HTML进行文档的展现。由此可知&#xff0c;WWW的核心由三个主要标准构成&…

[附源码]SSM计算机毕业设计校园疫情防控管理系统JAVA

项目运行 环境配置&#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…

【遥感图像:信息增强】

SDPNet: A Deep Network for Pan-Sharpening With Enhanced Information Representation &#xff08;SDPNet&#xff1a;一种增强信息表示的泛锐化深度网络&#xff09; 本文提出了一种基于表层和深层约束的全色锐化网络SDPNet&#xff0c;以解决全色锐化问题。聚焦于全色锐…