徐阿衡 | 知识抽取-实体及关系抽取(一)

本文转载自公众号:徐阿衡。



这一篇是关于知识抽取,整理并补充了上学时的两篇笔记 NLP笔记 - Information Extraction 和 NLP笔记 - Relation Extraction,梳理了知识抽取的基本方法,包括传统机器学习及经典的深度学习方法。

知识抽取涉及的“知识”通常是 清楚的、事实性的信息,这些信息来自不同的来源和结构,而对不同数据源进行的知识抽取的方法各有不同,从结构化数据中获取知识用 D2R,其难点在于复杂表数据的处理,包括嵌套表、多列、外键关联等,从链接数据中获取知识用图映射,难点在于数据对齐,从半结构化数据中获取知识用包装器,难点在于 wrapper 的自动生成、更新和维护,这一篇主要讲从文本中获取知识,也就是我们广义上说的信息抽取。

640?wx_fmt=png

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

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

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

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

篇幅限制,这一篇主要整理实体抽取和关系抽取,下一篇再上事件抽取。


1. 相关竞赛与数据集


信息抽取相关的会议/数据集有 MUC、ACE、KBP、SemEval 等。其中,ACE(Automated Content Extraction) 对 MUC 定义的任务进行了融合、分类和细化,KBP(Knowledge Base Population) 对 ACE 定义的任务进一步修订,分了四个独立任务和一个整合任务,包括

  • Cold Start KB (CSKB)
    端到端的冷启动知识构建

  • Entity Discovery and Linking (EDL)
    实体发现与链接

  • Slot Filling (SF)
    槽填充

  • Event
    事件抽取

  • Belief/Sentiment (BeSt)
    信念和情感

至于 SemEval 主要是词义消歧评测,目的是增加人们对词义、多义现象的理解。
640?wx_fmt=png

ACE 的 17 类关系
640?wx_fmt=png

具体的应用实例
640?wx_fmt=png

常用的 Freebase relations

640?wx_fmt=png

还有的一些世界范围内知名的高质量大规模开放知识图谱,如包括 DBpedia、Yago、Wikidata、BabelNet、ConceptNet 以及 Microsoft Concept Graph等,中文的有开放知识图谱平台 OpenKG……


2. 实体抽取


实体抽取或者说命名实体识别(NER)在信息抽取中扮演着重要角色,主要抽取的是文本中的原子信息元素,如人名、组织/机构名、地理位置、事件/日期、字符值、金额值等。实体抽取任务有两个关键词:find & classify,找到命名实体,并进行分类。
640?wx_fmt=png

主要应用:

  • 命名实体作为索引和超链接

  • 情感分析的准备步骤,在情感分析的文本中需要识别公司和产品,才能进一步为情感词归类

  • 关系抽取(Relation Extraction)的准备步骤

  • QA 系统,大多数答案都是命名实体


2.1 传统机器学习方法


标准流程:
Training:

  1. 收集代表性的训练文档

  2. 为每个 token 标记命名实体(不属于任何实体就标 Others O)

  3. 设计适合该文本和类别的特征提取方法

  4. 训练一个 sequence classifier 来预测数据的 label

Testing:

  1. 收集测试文档

  2. 运行 sequence classifier 给每个 token 做标记

  3. 输出命名实体


2.1.1 编码方式


看一下最常用的两种 sequence labeling 的编码方式,IO encoding 简单的为每个 token 标注,如果不是 NE 就标为 O(other),所以一共需要 C+1 个类别(label)。而 IOB encoding 需要 2C+1 个类别(label),因为它标了 NE boundary,B 代表 begining,NE 开始的位置,I 代表 continue,承接上一个 NE,如果连续出现两个 B,自然就表示上一个 B 已经结束了。
640?wx_fmt=png

在 Stanford NER 里,用的其实是 IO encoding,有两个原因,一是 IO encoding 运行速度更快,二是在实践中,两种编码方式的效果差不多。IO encoding 确定 boundary 的依据是,如果有连续的 token 类别不为 O,那么类别相同,同属一个 NE;类别不相同,就分割,相同的 sequence 属同一个 NE。而实际上,两个 NE 是相同类别这样的现象出现的很少,如上面的例子,Sue,Mengqiu Huang 两个同是 PER 类别,并不多见,更重要的是,在实践中,虽然 IOB encoding 能规定 boundary,而实际上它也很少能做对,它也会把 Sue Mengqiu Huang 分为同一个 PER,这主要是因为更多的类别会带来数据的稀疏。


2.1.2 特征选择


Features for sequence labeling:

640?wx_fmt=png

再来看两个比较重要的 feature

Word substrings
Word substrings (包括前后缀)的作用是很大的,以下面的例子为例,NE 中间有 ‘oxa’ 的十有八九是 drug,NE 中间有 ‘:’ 的则大多都是 movie,而以 field 结尾的 NE 往往是 place。
640?wx_fmt=png

Word shapes
可以做一个 mapping,把 单词长度(length)、大写(capitalization)、数字(numerals)、希腊字母(Greek eltters)、单词内部标点(internal punctuation) 这些字本身的特征都考虑进去。
如下表,把所有大写字母映射为 X,小写字母映射为 x,数字映射为 d…
640?wx_fmt=png

2.1.3 序列模型


NLP 的很多数据都是序列类型,像 sequence of characters, words, phrases, lines, sentences,我们可以把这些任务当做是给每一个 item 打标签,如下图:
640?wx_fmt=png

常见的序列模型有 有向图模型 如 HMM,假设特征之间相互独立,找到使得 P(X,Y) 最大的参数,生成式模型;无向图模型 如 CRF,没有特征独立的假设,找到使得 P(Y|X) 最大的参数,判别式模型。相对而言,CRF 优化的是联合概率(整个序列,实际就是最终目标),而不是每个时刻最优点的拼接,一般而言性能比 CRF 要好,在小数据上拟合也会更好。

整个流程如图所示:
640?wx_fmt=png

讨论下最后的 inference
640?wx_fmt=png

最基础的是 “decide one sequence at a time and move on”,也就是一个 greedy inference,比如在词性标注中,可能模型在位置 2 的时候挑了当前最好的 PoS tag,但是到了位置 4 的时候,其实发现位置 2 应该有更好的选择,然而,greedy inference 并不会 care 这些。因为它是贪婪的,只要当前最好就行了。除了 greedy inference,比较常见的还有 beam inference 和 viterbi inference。


2.1.3.1 Greedy Inference


优点:

  1. 速度快,没有额外的内存要求

  2. 非常易于实现

  3. 有很丰富的特征,表现不错

缺点:

  1. 贪婪


2.1.3.2 Beam Inference


  • 在每一个位置,都保留 top k 种可能(当前的完整序列)

  • 在每个状态下,考虑上一步保存的序列来进行推进

优点:

  1. 速度快,没有额外的内存要求

  2. 易于实现(不用动态规划)

缺点:

  1. 不精确,不能保证找到全局最优


2.1.3.3 Viterbi Inference


  • 动态规划

  • 需要维护一个 fix small window

优点:

  1. 非常精确,能保证找到全局最优序列

缺点:

  1. 难以实现远距离的 state-state interaction


2.2 深度学习方法


2.2.1 LSTM+CRF


最经典的 LSTM+CRF,端到端的判别式模型,LSTM 利用过去的输入特征,CRF 利用句子级的标注信息,可以有效地使用过去和未来的标注来预测当前的标注。

640?wx_fmt=png


2.3 评价指标


评估 IR 系统或者文本分类的任务,我们通常会用到 precision,recall,F1 这种 set-based metrics,见信息检索评价的 Unranked Boolean Retrieval Model 部分,但是在这里对 NER 这种 sequence 类型任务的评估,如果用这些 metrics,可能出现 boundary error 之类的问题。因为 NER 的评估是按每个 entity 而不是每个 token 来计算的,我们需要看 entity 的 boundary。

以下面一句话为例


1

First Bank of Chicago
announced earnings...


正确的 NE 应该是 First Bank of Chicago,类别是 ORG,然而系统识别了 Bank of Chicago,类别 ORG,也就是说,右边界(right boundary)是对的,但是左边界(left boundary)是错误的,这其实是一个常见的错误。


1

2

3

4

5

正确的标注:

ORG - (1,4)

系统:

ORG - (2,4)


而计算 precision,recall 的时候,我们会发现,对 ORG - (1,4) 而言,系统产生了一个 false negative,对 ORG - (2,4) 而言,系统产生了一个 false positive!所以系统有了 2 个错误。F1 measure 对 precision,recall 进行加权平均,结果会更好一些,所以经常用来作为 NER 任务的评估手段。另外,专家提出了别的建议,比如说给出 partial credit,如 MUC scorer metric,然而,对哪种 case 给多少的 credit,也需要精心设计。


2.4 其他-实体链接


实体识别完成之后还需要进行归一化,比如万达集团、大连万达集团、万达集团有限公司这些实体其实是可以融合的。
640?wx_fmt=png

主要步骤如下:

  1. 实体识别
    命名实体识别,词典匹配

  2. 候选实体生成
    表层名字扩展,搜索引擎,查询实体引用表

  3. 候选实体消歧
    图方法,概率生成模型,主题模型,深度学习

补充一些开源系统:

  • http://acube.di.unipi.it/tagme

  • https://github.com/parthatalukdar/junto

  • http://orion.tw.rpi.edu/~zhengj3/wod/wikify.php

  • https://github.com/yahoo/FEL

  • https://github.com/yago-naga/aida

  • http://www.nzdl.org/wikification/about.html

  • http://aksw.org/Projects/AGDISTIS.html

  • https://github.com/dalab/pboh-entity-linking



 -End-


原文链接:http://www.shuang0420.com/2018/09/15/%E7%9F%A5%E8%AF%86%E6%8A%BD%E5%8F%96-%E5%AE%9E%E4%BD%93%E5%8F%8A%E5%85%B3%E7%B3%BB%E6%8A%BD%E5%8F%96/



OpenKG.CN


中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

640?wx_fmt=jpeg

点击阅读原文,进入 OpenKG 博客。

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

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

相关文章

非常全面的阿里的Java面试题目,涵盖Java基础+高级+架构

阿里技术一面 自我介绍 Java中多态是怎么实现的 Java中的几种锁 数据库隔离级别 脏读 幻读 ACID mysql的隔离级别 mysql索引实现,如何解决慢查询 数据库锁是怎么实现的 死锁的条件,进程和线程区别 tcp/ip模型,tcp和udp区别 Linux查看…

常见数据结构与算法整理总结(上)

原文链接&#xff1a;https://www.jianshu.com/p/230e6fde9c75 常见数据结构与算法整理总结&#xff08;上&#xff09; 最后编辑于 2017.12.04 03:29">2016.09.22 10:51*</span>数据结构是以某种形式将数据组织在一起的集合&#xff0c;它不仅存储数据&#xff…

卖萌屋原创专辑首发,算法镇魂三部曲!

一只小狐狸带你解锁炼丹术&NLP秘籍震惊&#xff01;乐坛新人夕小瑶的卖萌屋今日重磅发布三张原创专辑&#xff01;&#xff01;????点击试听????点击试听????点击试听虽然卖萌屋常常被大家戏称为“仙女屋”、“神仙屋”、“宝藏屋”等&#xff0c;但卖萌屋更希…

POJ 1028 浏览器前进后退(双栈)

题目链接&#xff1a;http://poj.org/problem?id1028 我的相同博文参考&#xff1a;https://blog.csdn.net/qq_21201267/article/details/88938360 LeetCode 5430. 设计浏览器历史记录&#xff08;双栈&#xff09; 解题思路参考上面博文。直接贴出代码&#xff1a; #inclu…

自然语言处理中的中文词性、标记规范及其应用

分词和词性标注是自然语言处理领域的重要组成部分&#xff0c;尤其对于中文而言&#xff0c;作为整条自然语言处理pipeline的源头&#xff0c;分词和词性标注更是起到了关键的作用。我整理这篇文章&#xff0c;主要来源于这几个问题&#xff1a; 一、理解中文词性是否有意义&am…

白雪 | NLP加持知识图谱在金融事件挖掘中的应用

本文转载自公众号&#xff1a;阡寻科技。9月15日讯&#xff0c;涵盖金融科技、人工智能及区块链领域的2018恒生技术开放日于今日开幕&#xff0c;阡寻科技联席CEO、复旦大学人工智能方向博士白雪受邀出席本次大会&#xff0c;分享了金融领域事件特点分析、常用的事件抽取方法以…

2020年,中国AI创业公司将走向何方

前言如果说2012年深度学习的崛起是点燃AI浪潮的星星之火&#xff0c;那么2016年的AlphaGo的成功则是一阵东风&#xff0c;AI之火已成燎原之势。那么&#xff0c;走向21世纪的新的十年&#xff08;2020年&#xff09;&#xff0c;中国AI创业公司将走向何方呢&#xff1f;作者是一…

常见数据结构与算法整理总结(下)

原文链接&#xff1a;https://www.jianshu.com/p/42f81846c0fb 这篇文章是常见数据结构与算法整理总结的下篇&#xff0c;上一篇主要是对常见的数据结构进行集中总结&#xff0c;这篇主要是总结一些常见的算法相关内容&#xff0c;文章中如有错误&#xff0c;欢迎指出。 一、概…

2019蚂蚁金服 Java面试题目!涵盖现场3面真题

蚂蚁Java一面 二叉搜索树和平衡二叉树有什么关系&#xff0c;强平衡二叉树&#xff08;AVL树&#xff09;和弱平衡二叉树&#xff08;红黑树&#xff09;有什么区别 B树和B树的区别&#xff0c;为什么MySQL要使用B树 HashMap如何解决Hash冲突 epoll和poll的区别&#xff0c;…

数据结构--队列Queue--打印杨辉三角

杨辉三角大家很熟悉&#xff0c;不做介绍了&#xff0c;第n行的首末两元素均为1&#xff0c;中间n-2个元素由n-1行相邻两元素相加得到。 将第1行数据入队&#xff08;1&#xff09; -------队列表示&#xff08;队头&#xff0c;… 队尾&#xff09;------- 第2行数据1入队&am…

论文浅尝 | 基于常识知识图谱感知和图注意力机制的对话生成

OpenKG 祝各位读者中秋快乐!链接&#xff1a;http://coai.cs.tsinghua.edu.cn/hml/media/files/2018_commonsense_ZhouHao_3_TYVQ7Iq.pdf动机在以前的工作中&#xff0c;对话生成的信息源是文本与对话记录。但是这样一来&#xff0c;如果遇到 OOV 的词&#xff0c;模型往往难以…

7款优秀Vim插件帮你打造完美IDE

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

POJ 2259 team queue团队排队问题

题目链接&#xff1a; http://poj.org/problem?id2259 题目大意&#xff1a; 告诉你一堆人&#xff08;m个人是一组的&#xff0c;n个人是一组的。。。。&#xff09;&#xff1b;然后一个人来排队了&#xff0c;先看下有自己组的熟人吗&#xff1f;有的话直接排在自己组的人…

中文句法分析、标记规范及其应用

一、 Why句法分析 句法分析是比词高一个层级的语言单位&#xff0c;单个词之间通过中文语法规则进行组织&#xff0c;形成一个具有连贯语义的词语序列。为了揭示这种组织结构和规则&#xff0c;揭示出词语以及词语的成分&#xff0c;往往需要对其进行句法分析。就中文而言&…

蚂蚁三面题目(java开发岗):Java锁机制+JVM+线程池+事务+中间件

一面 1、HashMap底层原理&#xff1f;HashTable和ConcurrentHashMap他们之间的相同点和不同点&#xff1f; 2、由上题提到锁的问题 3、MySQL的表锁&行锁&乐观锁&悲观锁,各自的使用场景 4、Java线程锁有哪些&#xff0c;各自的优劣势 5、事务四大特性 6、事务的…

论文浅尝 | 当知识图谱遇上零样本学习——零样本学习综述

随着监督学习在机器学习领域取得的巨大发展&#xff0c;如何减少人工在样本方面的处理工作&#xff0c;以及如何使模型快速适应层出不穷的新样本&#xff0c;成为亟待解决的问题。零样本学习&#xff08;Zero-Shot Learning, ZSL&#xff09;的提出&#xff0c;则有效地解决了此…

ACL20 | 让笨重的BERT问答匹配模型变快!

一只小狐狸带你解锁炼丹术&NLP秘籍作者&#xff1a;曹庆庆&#xff08;Stony Brook University 在读PhD&#xff0c;关注Efficient NLP、QA方向&#xff0c;详见awk.ai&#xff09;背景BERT、XLNet、RoBERTa等基于Transformer[1]的预训练模型推出后&#xff0c;自然语言理解…

POJ 1581 优先队列 priority_queue -- 比赛胜者求解

题目链接&#xff1a;http://poj.org/problem?id1581 题目大意&#xff1a; 给定选手姓名&#xff0c;及答题提交次数&#xff08;提交正确前&#xff0c;错误一次罚20分&#xff09;&#xff0c;每题的做题时间罚分&#xff08;未正确作答的不罚分&#xff09;&#xff0c;…

热点事件发现、演化及时间线Timeline、故事线Storyline自动生成

一、热点事件概述 热点事件具有不可预测性&#xff0c;这决定了热点事件往往是一个“事后诸葛亮”的产物&#xff0c;一个热点事件从刚开始出现之时并没有带有成为热点的性质&#xff0c;当然&#xff0c;重大事故或者突发事件(如总统被杀、日本地震、印尼海啸、巴黎圣母院火灾…

计算机网络安全知识汇总

一、计算机网络面临的安全性威胁计算机网络上的通信面临以下的四种威胁&#xff1a; 截获——从网络上窃听他人的通信内容。 中断——有意中断他人在网络上的通信。 篡改——故意篡改网络上传送的报文。 伪造——伪造信息在网络上传送。截获信息的攻击称为被动攻击&#xff0c…