史上最可爱的关系抽取指南?从一条规则到十个开源项目

正文来自订阅号:AINLP

正文作者:太子長琴(NLP算法工程师)

小夕,我来给你出个题,看看你的反应如何?

好呀好呀,你说~

“梁启超有一个著名的儿子,叫梁思成;同时还有一个著名的学生,叫徐志摩。这两个人有一个共同的爱人,叫林徽因。林徽因的父亲是林长民,林长民不仅自己是名人,还有一个名人哥哥,叫林觉民。林徽因最后与梁思成结婚了,徐志摩娶的则是陆小曼。”

那么问题来了,梁启超和林长民是什么关系?

亲家!

哇,你怎么一口就答出来了!?

!?(・_・;?

嘻嘻,我悄悄拿我的关系抽取模型跑了一下~( ̄▽ ̄)"

啥是关系抽取?

呐,跟我来~!


信息抽取是NLP领域的一个经典任务了,如何从不同来源的自然语言文本中提取真实可用的“知识”,并保证这些“知识”通常是清楚的、事实性的信息,是当今信息抽取领域的一个难点。

信息抽取三个最重要/最受关注的子任务:

  • 实体抽取
    也就是命名实体识别,包括实体的检测(find)和分类(classify)

  • 关系抽取
    通常我们说的三元组(triple)抽取,一个谓词(predicate)带2个形参(argument),如 Founding-location(IBM,New York)

  • 事件抽取
    相当于一种多元关系的抽取

属性一般的形式是(实体,属性,属性值),关系的一般形式是(实体,关系,实体)。简单来区分的话,关系涉及到两个实体,而属性只有一个实体。
不过呢,属性和关系的提取是可以相互借鉴的。下面小夕以关系抽取为出发点,从算法、数据集、评价指标、比赛这几个方面给大家介绍关系抽取的相关知识。文末还有一个蛋哦~~~

关系提取方法

基于模板

这种方法比较简单,一般都是根据先验知识设计一些模式,然后在语料中匹配这些模式。举几个例子:

  • 马云作为企业家,对应的模式是:XX (?:作为|是) YY

  • 刘强东是京东的创始人,对应的模式是:XX (?:作为|是) YY 的? ZZ

这里的 XX YY 和 ZZ 自然就是前一步识别出来的实体了。

相关资源包括:

  • 100 Best GitHub: Expert System | Meta-Guide.com

基于句法分析

主要是找到主谓宾,一般都是在句法分析的基础上进行的。举几个例子:

  • 感冒是一种病,对应的句法结构为:感冒(SBV),是(Root),病(VOB)。

  • 王思聪是王健林的儿子,对应的句法结构为:王思聪(SBV),是(Root),王健林(ATT),儿子(VOB)

其中,SBV 是主谓关系,VOB 是动宾关系,ATT 是定中关系。

相关资源包括:

  • lemonhu/open-entity-relation-extraction: Knowledge triples extraction and knowledge base construction based on dependency syntax for open domain text.

  • aoldoni/tetre: TETRE: a Toolkit for Exploring Text for Relation Extraction

  • gabrielStanovsky/template-oie: Extract templated Open Information Extraction

基于机器学习

使用基本步骤如下:

  • (通常在一个句子中)寻找实体对

  • 判断实体对之间是否存在关系

  • 送到分类器判断关系的类别(预先定义好的)是什么

标准流程:

  • 预先定义好类别集合

  • 选择相关实体集合

  • 标注

  • 设计特征

  • 训练分类器

  • 评估结果

特征:

  • 词相关

  • 词法相关

  • 句法相关

  • 实体相关

之前那篇笔记里涉及的比较全面,而且现在几乎都是结合深度学习模型做了,这块就不再赘述了。

相关资源:

  • machinalis/iepy: Information Extraction in Python

  • marcolagi/quantulum: Python library for information extraction of quantities from unstructured text

基于深度学习

一般包括两种做法:Pipeline 和 Joint model,前者就是把实体识别和关系分类分开;后者一起做。

特征一般是基于 Word embedding,Position embedding,POS,NER,WordNet;模型一般都是基于 CNN,RNN。

  • 端到端目前最好的是基于 Bert 的,在此之前,最好的是 Wang et al. 2016 的 Multi-Attention CNN。

  • 关系分类最好的是 (Cai et al., 2016) 的 BRCNN(Bidirectional Recurrent Convolutional Neural Network)。

从论文的趋势看,端到端相对主流一些,不过对于我们的需求来说,关系分类更适合些。更多相关论文和模型可以进一步阅读 NLP-progress/relationship_extraction,这里就不贴那些论文的东西了。

基于半监督

半监督是利用少量高精度的 pattern 种子或种子 tuple 来 bootstrap 一个分类器。具体而言,在大规模语料中查找包含已有 pattern 实体对的句子,然后提取和归纳实体的上下文来学习新的 pattern。

还是举个栗子,比如我们有一个种子 tuple:(Queen,创作了,波西米亚狂想曲),然后可能找到了这些句子:

  • 波西米亚狂想曲是由 Queen 演唱的歌曲。

  • 波西米亚狂想曲是 Queen 最伟大的作品之一。

  • Queen 这首将近 6 分钟的波西米亚狂想曲包括四个部分。

进而可以提取出类似这样的一些 pattern:

  • (艺人,演唱,歌曲)

  • (歌曲,是,艺人,作品)

  • (艺人,作品,包括)

这些 pattern 又可以进一步寻找新的 pattern(把艺人和歌曲替换掉)。最终算法如下:

1
2
3
4
5
6
7
8
9
function BOOTSTRAP(Relation R) returns new relation tuplestuples←Gather a set of seed tuples that have relation Riteratesentences←find sentences that contain entities in tuplespatterns←generalize the context between and around entities in sentencesnewpairs←use patterns to grep for more tuplesnewpairs←newpairs with high confidencetuples←tuples + newpairsreturn tuples

Bootstrapping 系统会给新的 pattern 一个置信度以避免语义飘移。比如 “在演唱会现场粉丝的要求下,周杰伦不得不演唱了一首网络歌曲《学猫叫》”,(周杰伦,演唱,学猫叫)显然不是我们想要的。关于置信度的计算可以参考上面提到的笔记,对一个 pattern 主要考量两方面因素:pattern 在现有 tuple 上的 hits 和在整个 Documents 上的 finds。

基于远程监督

远程监督从大规模数据库中获取的大量种子中产生出许多带噪声的 pattern features,然后用一个分类器组合这些 pattern。

举个栗子,比如要学习 “出生地-出生日期” 关系,半监督的方法中,我们可能只有少量几个启动的种子,但是现在我们可以在 Wikipedia-based 数据库(比如 DBPedia 或 Freebase) 中获取大量包含 “出生地-出生日期” 的 tuple,比如(<Albert Einstein, Ulm>, <Hubble, Marshfield> 等等)。然后用命名实体工具提取包含两个实体并 match 给定 tuple 的句子:

  • Hubble 出生于 Marshfield

  • Einstein,生于 1879,Ulm

  • Hubble 的出生地是 Marshfield

可以从中提取训练集,一个训练实例对应一个(关系,实体1,实体2)。

  • <出生地, Edwin Hubble, Marshfield>

  • <出生地, Albert Einstein, Ulm>

  • <出生日期, Albert Einstein, 1879>

接下来可以用基于特征的分类器或直接使用神经网络分类器(不需要构建特征)。对于前者,可以从多个方面构建特征,比如实体 label,实体间单词、路径,相邻词等。每个 tuple 包括多个训练实例的特征,每个实例又可以从多个句子中获取词法和句法特征。最终的算法如下:

1
2
3
4
5
6
7
8
function DISTANT SUPERVISION(Database D, Text T) returns relation classifier Cforeach relation Rforeach tuple (e1,e2) of entities with relation R in Dsentences←Sentences in T that contain e1 and e2f←Frequent features in sentencesobservations←observations + new training tuple (e1, e2, f, R)C←Train supervised classifier on observationsreturn C

最终的分类器将会根据特征发现关系。

基于无监督

无监督关系提取的目的就是在没有标注数据,甚至没有任何关系列表的情况下从 Web 或大规模语料中提取关系。这个任务一般叫 open information extraction 或 Open IE,关系通常都是几个单词(常以动词开头)。

ReVerb 系统从一个句子中提取关系一般包括四步:

  • 在句子上进行 POS 和实体识别。

  • 对句中每个动词,找到以动词开头并满足句法和词汇约束(合并相邻匹配项)的最长单词序列 w。

  • 对每个短语 w,找到最左边的名词短语 x(不是相对代词,wh-单词或 “there”),在右边找到最近的名词短语 y。

  • 使用置信度分类器(一个逻辑回归分类器)给关系 r=x, w, y) 一个置信度。

分类器是在 1000 个随机选择的句子上训练所得,首先提取关系,然后人工标注是否正确,最后训练分类器。使用到的一些特征如下(将提取到的关系及周围的词作为特征):

1
2
3
4
5
6
7
8
(x,r,y) covers all words in s
the last preposition in r is for
the last preposition in r is on
len(s) ≤ 10
there is a coordinating conjunction to the left of r in s
r matches a lone V in the syntactic constraints
there is preposition to the left of x in s
there is an NP to the right of y in s

小结

方法优点缺点
模板精准高,领域内可定制召回低,耗时耗力
句法分析构建简单召回低,与句法结果相关
机器学习数据相关时精准较高特征工程较复杂,数据标注成本较高,训练数据敏感
深度学习数据相关时精准高,泛化能力较好数据标注成本很高,训练数据敏感
半监督 Bootstrapping成本低,可以发现新关系对初始种子敏感,语义飘移,准确率低
远程监督精准高,训练数据不敏感,无语义飘移依赖已有数据库
无监督成本很低,容易实现需转为权威格式存储,动词为中心的局限性

比赛

比赛最有名的大概就是 SemEval 2018 Task 10 和 SemEval-2010 Task 8 了。前者是一个二分类任务,目的是识别给定属性能否区分两个给定的概念。

ATTRIBUTECONCEPT1CONCEPT2LABEL
bookcasefridgewood1
bucketmuground0
anglecurvesharp1
pelicanturtlewater0
wirecoilmetal0

后者是关系分类任务,给定两个标记的 nominals,预测它们的关系和关系的方向。

There were apples, pears and oranges in the bowl.

(content-container, pears, bowl)

数据集

除了上面的两个比赛的数据集,还有以下一些数据集:

  • FewRel: A Large-Scale Supervised Few-shot Relation Classification Dataset with State-of-the-Art Evaluation

    • 70K sentences

    • 100 relations

    • Wikipedia corpus

  • The New York Times Annotated Corpus - Linguistic Data Consortium

    • Stanford NER 提取实体

    • 自动与 Freebase knowledge base 中的实体关联

    • 关系也是基于 Freebase knowledge base 中的事实

  • Stanford TACRED Homepage

    • 106,264 examples

    • newswire and web text from TAC KBP Comprehensive English Source Corpora 2009-2014 - Linguistic Data Consortium

    • 41 relation types as used in the TAC KBP challenges

评价方法

评价指标还是以 F1 为主:

  • 属性判别是二分类任务,直接用 F1 评估。

  • 关系分类使用 Macro-averaged F1(9 个关系,不包括 OTHER,考虑关系方向)。

  • FewRel 主要是在 5-way-1-shot,5-way-5-shot,10-way-1-shot 和 10-way-5-shot 几个任务上的准确率。

  • NYT 主要使用 N 个结果的精准率或 PR 图。

  • TACRED 使用 Micro-averaged F1(不包括 no_relation type)。

更多资源

CrowdTruth Corpus 相关:

  • CrowdTruth/CrowdTruth-core: CrowdTruth framework for crowdsourcing ground truth for training & evaluation of AI systems

  • CrowdTruth/Open-Domain-Relation-Extraction: Crowdsourced data for open domain relation classification from sentences

  • CrowdTruth/Medical-Relation-Extraction: Crowdsourced ground truth for medical relation extraction.

其他资源:

  • roomylee/awesome-relation-extraction: ???? A curated list of awesome resources dedicated to Relation Extraction, one of the most important tasks in Natural Language Processing (NLP).

  • NLP-progress/relationship_extraction.md at master · sebastianruder/NLP-progress

参考资料:

  • 知识抽取-实体及关系抽取 - 徐阿衡 知乎

  • 知识图谱入门 (三) 知识抽取 - pelhans 的博客

文末彩蛋

明天有「超级超级重磅的文章放出噢!小伙伴们记得提前做好准备鸭( ̄∇ ̄)

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

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

相关文章

论文浅尝 | Leveraging Knowledge Bases in LSTMs

Yang, B., Mitchell, T., 2017. Leveraging Knowledge Bases in LSTMs for Improving Machine Reading. Association for Computational Linguistics, pp. 1436–1446.链接&#xff1a;http://www.aclweb.org/anthology/P/P17/P17-1132.pdf这篇论文是今年发表在 ACL 的一篇文章…

支付系统-对账系统

在支付系统中&#xff0c;资金对账在对账中心进行&#xff0c;将系统保存的账务流水与银行返回的清算流水和清算文件进行对账&#xff0c;核对系统账务数据与银行清算数据的一致性&#xff0c;保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。 一、清算对账系…

在线GPU分布式实验环境+企业级项目,轻松斩获offer

人工智能微专业招生简章&#xff08;春季&#xff09;重构专业核心培养复合型人才与斯坦福、伯克利、MIT、清华Top10名校同学成为校友一对一学习与职业规划扫码立刻加入本季招生名额仅剩200人

支付系统-系统架构

本文主要是从支付架构、支付流程分析、支付核心逻辑、支付基础服务、支付安全五个方面来详细讲述支付系统架构 &#xff08;1&#xff09;、架构的定义&#xff1a;架构一定是基于业务功能来展开的&#xff0c;主要是制定技术规范、框架&#xff0c;指导系统落地&#xff1b;好…

领域应用 | 智能导购?你只看到了阿里知识图谱冰山一角

在刚刚结束的2017第四届世界互联网大会上&#xff0c;评选出了年度18项代表性的领先科技成果&#xff0c;阿里云ET大脑就是其中之一。众所周知&#xff0c;融合了先进的大数据、人工智能技术的阿里云ET大脑已经在智慧城市、智慧交通等众多领域得到了应用和推广。但你知不知道&a…

美团技术团队-大众点评搜索基于知识图谱的深度学习排序实践

美团技术团队博客网址&#xff1a;https://tech.meituan.com/2019/02/28/root-clause-analysis.html 1. 引言挑战与思路搜索是大众点评App上用户进行信息查找的最大入口&#xff0c;是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样&#xff0c;并且由于对接业务种…

NLP、炼丹技巧和基础理论文章索引

玩家你好 恭喜你捡到了一个来自上古时期的*七*星*炼*丹*炉*&#xff0c;只见炉壁上镶嵌着自然语言处理、推荐系统、信息检索、深度炼丹、机器学习、数学与基础算法等失传已久的江湖秘术。熔炉中虽然已有一层厚厚尘土&#xff0c;却依然掩盖不住尘埃下那一颗颗躁动不安的仙丹。 …

支付系统-概念与架构

一、什么是支付系统 自古以来&#xff0c;所有的商业活动都会产生货币的收款与付款行为。在人类漫长的历史长河中&#xff0c;记录收付款行为的方式不断迭代&#xff1a;古代的账房先生通过手工记账&#xff0c;工业社会通过收银机机械记账…… 今天&#xff0c;进入了互…

论文浅尝 | Reinforcement Learning for Relation Classification

论文链接&#xff1a;http://aihuang.org/p/papers/AAAI2018Denoising.pdf来源&#xff1a;AAAI 2018MotivationDistant Supervision 是一种常用的生成关系分类训练样本的方法&#xff0c;它通过将知识库与非结构化文本对齐来自动构建大量训练样本&#xff0c;减少模型对人工标…

2019年终总结与新年重磅福利

一只小狐狸带你解锁NLP/ML/DL秘籍圣诞已过&#xff0c;元旦即临回首2019&#xff0c;我们收获满满展望2020&#xff0c;我们砥砺前行在这新春佳节之际小夕给大家送上七福大礼包别怕太沉&#xff0c;赶紧收下吧~~~自然语言处理花生仁????神经网络与炼丹鲜虾丸????机器学…

支付系统-会计核心

一、复式记账 第一个问题&#xff1a;如何理解账务系统单边记账&#xff0c;会计系统复式记账&#xff1f; 有些公司内部账户之间转账都采用复式记账法&#xff0c;如充值、提现交易&#xff0c;他们在账务系统都记单边流水&#xff0c;等和银行对账后&#xff0c;在会计系统复…

领域应用 | 中医临床知识图谱的构建与应用

本文转载自公众号&#xff1a;e医疗。 知识图谱是近年来知识管理和知识服务领域中出现的一项新兴技术&#xff0c;它为中医临床知识的关联、整合与分析提供了理想的技术手段。我们基于中医医案等临床知识源&#xff0c;初步建立了由疾病、证候、症状、方剂、中药等核心概念所构…

还在随缘炼丹?一文带你详尽了解机器学习模型可解释性的奥秘

一只小狐狸带你解锁NLP/ML/DL秘籍正文来源&#xff1a;腾讯技术工程所谓炼丹&#xff0c;就是将大量灵材使用丹炉将其凝炼成丹。练成的灵丹蕴含灵材的大部分特性&#xff0c;方便携带&#xff0c;容易吸收。高级仙丹在炼制中更是能吸收天地灵气从而引发天地异象。深度学习的模型…

支付系统-财务系统

一、概述 从业多年经手过的印象比较深刻的几个系统&#xff0c;我将其中对账及清结算系统进行了剥离&#xff0c;着重为大家分享一下支付系统需要具备哪些功能&#xff0c;以及当时在实际搭建过程中&#xff0c;我们对于功能及整体做出的具体选择。 首先如图所示&#xff0c;支…

论文浅尝 | CFO: Conditional Focused Neural Question Answering

Zihang Dai, Lei Li, and Wei Xu. 2016. CFO: Conditional focused neural question answering with large-scale knowledge bases. In Proceedings of ACL, pages 800–810.链接&#xff1a;http://aclweb.org/anthology/P/P16/P16-1076.pdfGitHub 项目地址&#xff1a;https:…

Python中输入和输出

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/xiaokang123456kao/article/details/73009480 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htm…

刘志明 | 知识图谱及金融相关

本文转载自公众号&#xff1a;挖地兔&#xff0c;本文的作者刘志明先生也是 Tushare 的作者。 Tushare 是一个基于 Python 语言的免费、开源的财经数据接口包&#xff0c;可以为金融量化分析人员提供快速、整洁和多样的结构化数据&#xff0c;帮助量化投资人员节省数据采集和清…

模型训练太慢?显存不够用?这个算法让你的GPU老树开新花

一只小狐狸带你解锁NLP/ML/DL秘籍作者&#xff1a;小鹿鹿鹿&#xff0c;夕小瑶老板&#xff0c;咱们就一台Titan Xp&#xff0c;训不动BERT呀没钱买机器&#xff0c;自己想办法。委屈T^T我听说混合精度训练可以从算法上缓解这个问题&#xff1f;喵喵喵&#xff1f;&#xff1f;…

我对Spring的理解

1、什么是Spring&#xff1f; Spring是Java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发&#xff0c;并通过POJO为基础的编程模型促进良好的编程习惯。 2、使用Spring…