百度事件知识图谱技术与应用
分享嘉宾:陈玉光 百度 资深研发工程师
编辑整理:叶祺
出品平台:DataFunTalk
导读: 目前百度事件图谱已构建了千万级规模的事件图谱,在收录时效上达到分钟级。事件图谱技术已应用到搜索、信息流等百度内部的产品中,相关能力也对外输出到媒体等多个行业。另外,事件图谱的前沿推理技术在金融领域的探索也初步取得成果,并已形成一个金融事件归因和预测的推理平台。本文将为大家详细介绍百度的事件图谱技术与应用,主要内容包括:
- 事件图谱概述
- 事件图谱技术
- 事件图谱应用
- 总结与展望
01 事件图谱概述
1. 知识图谱
知识图谱构建的目的,其实是为了把世界上纷繁复杂的、各种各样的客观事实通过图谱的方式组织起来,让机器能够通过这个图谱更好地实现理解、抽取、推理等任务,从而提升我们处理信息的效率。最基础的知识图谱包含实体、关系、属性等图谱最核心的知识,而更广义的知识图谱则包含更多的知识,如概念、标签、评论等。事件也是一种知识,一种比较复杂的知识。事件知识的复杂性在于事件并不会对应到现实世界中的某一个具体的实体,它是一系列实体,以不同的角色在一段时间内参与活动的一个抽象。
百度于2017年底就开始了事件图谱方向的研究。经过了三年的发展,目前已经在多个不同的方向和领域落地。
2. 事件图谱
事件图谱是什么?事件图谱是包含事件、事件属性、事件间关联关系的以事件为基本单位的知识网络。上图是以宋仲基、宋慧乔从相恋到结婚、再到离婚这么一系列事件及其相关内容所组成的事件图谱的示意图。每个事件都有自己的事件类型,不同的事件类型拥有着不同的角色。如双宋结婚事件,它在事件图谱中的内容就是,一个结婚类型的事件,这个类型的事件有两个角色,其中,丈夫角色的值是宋仲基,而妻子角色的值是宋慧乔。事件之间的关系也在事件图谱的构建范围内,包括时序、因果、从属等。除了事件图谱的内容外,在上图中,我们还可以看到事件图谱与实体图谱是有对应关系的,事件的发生是可能会触发实体与实体间关系或属性的变化的,例如,上面的例子中,结婚事件的发生导致了双宋的关系从男女朋友关系变成丈夫与妻子的关系。
3. 为什么要做事件图谱?
为什么要做事件图谱?有两个方面原因:
第一方面,事件其实更符合人类对客观世界的理解。例如,以桃园三结义这幅图为例。在没有知识或弱知识的时候,我们可以知道这幅图里有三个人,有酒和树。在有实体知识的时候,我们可以知道这三个人的姓名是刘备、关羽和张飞,树是桃树。直到拥有事件知识的时候,我们才可以知道具体时间在东汉末年,刘备、关羽和张飞三个人在桃园做了结义这一个事情。我们可以看到,只有到事件这个层次上,才能说真正对这幅画有一个比较完整的把握。
另一方面,事件图谱可以对动态的客观世界进行建模。实体图谱会记录了实体的属性和关系,当实体的属性或关系更新时,图谱只会保留它最新的状态。但通过事件图谱,我们能够对属性或关系的整个变化过程进行建模,并且可以将这些事件与变化的进行一一对应。
4. 事件图谱是事件处理智能化的关键
我们目前正处在一个信息爆炸的时代,无论是个人消费者看新闻,还是专业从业者跟进行业事件消息,我们都不可避免地受到信息过载的影响。一方面存在太多无意义的信息分散了我们的注意力,另一方面当我们关注某个事件时,却又无法快速、全面地获得信息。怎么样去智能化地对事件进行处理,帮助我们更高效的获取和处理事件信息呢?关键就是事件图谱。智能地对事件进行处理的三个方面:事件理解、资源组织、分析决策都需要事件图谱。
- 事件理解:以“山西饭店倒塌事件”为例,如果没有事件图谱,我们只能得到与这个单独的事件相关的内容。而通过事件图谱,我们还能得到它的一些后续事件,如“国务院督办”等。基于这样一种事件级别的理解,我们就可以把原来只是聚焦于一个单一事件的内容升级为对事件的上下文、前因后果都能联系起来的一种事件脉络的呈现,从而大大提升用户获取事件信息的效率。
- 资源组织:在没有事件图谱的情况下,事件的信息载体通常是新闻资讯,这些新闻资讯常常存在重复、角度不一、来源混杂的情况。在事件图谱的基础上,我们可以将各种资源,包括图片、视频、资讯、观点等,围绕事件进行组织,从而帮助用户更高效更全面地获取事件信息。
- 分析决策:在没有事件图谱辅助的情况下,决策常常是决策者结合现实情况和主观经验做出的,在多数情况下,我们很难判断决策者是否已经考虑了所有的现实情况,并且对未来可能发生的不同的方向进行了足够的考虑。而基于事件图谱,我们能够让决策者清晰地了解一个事件可能的原因和结果,从而使决策者能够做出更加全面及有根据的考虑。
02 事件图谱技术
刚刚介绍了事件图谱的概述,包括是什么是事件图谱,为什么要做事件图谱。接下来将进一步介绍事件图谱的关键技术:
1. 百度事件图谱技术概览
这是百度事件图谱的技术概览图,主要分成四个层次:数据层、构建层、认知层和应用层。本次分享的重点是事件图谱的构建层技术。
2. 事件图谱构建
我先分享一下事件图谱跟传统的知识图谱在构建上的区别:
- 首先,就图谱的内容上而言,通用知识图谱主要包括实体、关系、概念、上下位等,而事件图谱则主要包括事件、事件属性以及事件间的关系。
- 其次,就知识来源上而言,通用知识图谱常常存在一些优质的结构化来源 ( 如垂类站点、百科等 ),而事件图谱的来源则主要是非结构化的新闻文本。
- 第三,在构建难度上,由于通用知识图谱存在结构化来源,知识相对来说是比较容易进行抓取和构建的,构建主要的难度在于对不同来源的实体进行归一化。而事件图谱则不太一样,绝大部分事件并不存在结构化来源,必须从新闻文本中抽取,抽取难度更大。另外,事件图谱构建还有较高的时效性要求。
当前百度的事件图谱构建方案如下:
- 首先,进行事件检测。
- 其次,在事件检测的基础上归纳出事件表示体系。
- 最后,在事件表示体系的基础上进行事件抽取和关系抽取。
这个过程和传统知识图谱的构建不一样的地方在于:传统知识图谱会先将构建的schema定义出来,然后进行抽取与归一,最后再进行入库。而事件图谱由于缺少可参考的结构化来源,需要先进行事件检测,在检测出大量事件的基础上,才能进行后续的相关操作 ( 构建表示体系、抽取等 )。这是两者非常不同的一个地方。
3. 事件检测
事件检测的目标是快、准、全地进行客观事件的收录,其主要挑战有三点:
- 第一,网页资讯存在大量的非事件内容。
- 第二,资讯的事件粒度是比较复杂的。父事件与子事件往往同时在同一篇网页资讯中。我们用传统的方法,如聚类或资源突增的方法进行检测,很容易形成一个很大的簇,同时容易将小的簇或较少提及的事件漏掉。
- 第三,几乎所有事件的应用场景对时效性的要求都比较高,大部分场景的事件检测延迟需要达到分钟级。
我们的整体方案是一套基于多任务学习进行事件检测的流程。该流程主要分成三个部分:
- 第一部分,我们会对信息流中的资讯进行事件识别,将非事件的内容排除在外。
- 第二部分,我们会对出现在资讯中的事件片段以事件名的形式抽取出来。
- 第三部分,我们会对事件进行归一。然后再将对应的资讯作为这个事件的资源关联起来。
通过这个检测过程,只要一篇文档中有一部分提到了某个事件就可以进行事件收录,结合百度的高时效新闻流,上面这种流程可以实现分钟级事件收录,并且整体的准确率与覆盖率都可以到90+%。此外,由于上述流程中涉及多个策略模型,我们还尝试了多任务学习框架,上述所提及的多个策略模型在经过多任务学习后,能得到相互增强,在资源消耗降低的同时,每个模型的效果都能得到进一步的提升。
4. 事件表示
事件表示构建的目标是构建一个高准确、高覆盖的事件知识表示体系,以支持后面事件抽取任务。在这一个任务上,它跟实体的Schema挖掘也是有明显差异的。实体的Schema挖掘绝大部分来源于百科或是网页中的结构化字段,只有少部分可能会涉及Open-P挖掘。以电影为例,这类实体很容易可以找到其对应实体的网页,如豆瓣。从网页上我们就可以清晰地知道一个电影类型的实体会有哪些字段,例如,导演、编剧、主演等。事件的表示就跟实体的Schema完全不同。绝大部分的事件类型其实并不存在一个这样的垂类站点去做这件事情。
因此,我们必须从正文中去挖掘事件类型的属性。比如,“破产”这个事件类型。从类型名可以知道该事件可能会有一个“破产人”属性,但是“债权人”这个属性就必须从该类型相关的正文中才能找到。目前的解决方案是开放挖掘+人工校验。具体来说分成下面几个部分。首先是开放类型挖掘,基于事件检测得到的事件库、日志等数据,我们挖掘出事件对应的类型并进行层次构建。在得到这样一个事件类型体系之后,我们会针对事件类型进行相关资讯召回,再进行每个类型的角色挖掘。最后再进行人工校验。通过这种方式,我们在几十个领域中得到几千个事件类型,以及一万多的事件角色。
5. 事件抽取
① 事件要素结构化抽取
第三步是事件抽取的任务。事件抽取的目标是对事件的相关要素进行结构化的抽取。还是以宋仲基、宋慧乔结婚为例,抽取的目标是,将这个事件抽取出来,并且能够识别它是一个结婚的事件类型,并且根据结婚类型的角色,包括时间、地点、男方、女方等,单独抽取出每个角色的具体的值。事件抽取的技术特点是:
- 事件抽取是事件级理解的基础。只有通过事件抽取,才能够将事件图谱和知识图谱结合起来,提升事件理解能力;
- 事件抽取的结果可支持推理计算。基于事件类型、 角色、 论元,结合知识图谱可进行语义推理。
- 事件抽取是事件智能化的核心。其可以支持推荐、问答、 推理、基于事件的内容生成等不同的应用。
事件抽取是当前学术界的热点之一。近年来有很多优秀的事件抽取论文在自然语言处理顶会、顶刊上发表。然而,事件抽取的技术难度依然是较大的,学术上效果还没有达到直接可用的水平,目前在公开权威数据集ACE2005上论元分类任务只有60%左右的F1。
② 挑战与方案
目前百度通过类型角色设计、前后处理、模型优化方面的努力,在特定场景下效果能达到业务需求。但除了效果,事件抽取还有其他方面的挑战。
- 事件抽取必须面对多种多样的文本形态。事件抽取有时候需要从短文本中抽取,如标题、事件句;有时候需要从篇章的角度进行抽取;有时候还需要跨篇章围绕某事件进行抽取。
- 事件抽取需要具备灵活地根据角色抽取的能力。不同行业的场景常常存在不同的事件类型、不同的事件角色的抽取需求,甚至同一个行业中,不同的客户对事件类型或者事件角色定义也有可能是不同的。
我们整体的解决方案如右图。针对不同的关注点和文本形态,我们均挖掘出核心的事件句。然后,基于这些事件句,针对不同场景使用不同的抽取技术进行抽取。目前我们已具备的抽取技术包括通用属性抽取、语义角色抽取和自定义的论元抽取。
③ 通用属性抽取
通用属性抽取的目的是抽取触发词、时间,地点、参与者等通用的事件角色。由于技术是比较通用的,我们采取的是一个多属性联合抽取的模型。这里的ERNIE是百度提出的一个预训练语言模型,在这基础上再加上Bi-LSTM+CRF,同时抽取多个属性。如图所示,该流程是先进行一次事件句的识别,找到关于某个事件的句子。然后,再对这个句子进行多属性联合抽取,并对抽取的结果进行归一。地点归一到国家、省市区县等,时间进行规范化、参与者实体化等等。
④ 自定义论元抽取
自定义论元抽取要解决的问题就是如何根据用户定义的角色少样本甚至零样本地进行事件抽取。我们的方案是基于阅读理解问答的事件抽取模型。
我们把整个事件抽取的流程分成三轮问答:
- 第一轮,问触发词,抽取出输入事件句的触发词是什么。
- 第二轮,问整个输入句子的事件类型。
- 第三轮,是根据第二步抽取的结果,对该事件类型对应的每个角色进行问答抽取。
这个方案中,角色、事件类型这些本来跟模型耦合的东西都解耦了,新的角色和事件类型只需要把它们放到问题中就可以抽取,从而实现少样本、甚至零样本的抽取。相关研究成果已被EMNLP Findings,2020收录。
⑤ 语义角色抽取
刚才讲到了两种事件抽取的方式,一种是通用属性抽取,一种是基于问答的论元抽取。通用属性抽取的问题是无法灵活的泛化。阅读理解方案的问题则是效率,因为我们需要对每一个角色都进行单独提问抽取。有没有一种方法可以既具灵活性又具备高效率?我们对这个问题提出了多种不同的方案,其中一种方案是:语义角色抽取。
从左边中间这幅图我们可以看到常见的事件类型跟它的角色是存在一定的关联关系的,但实际上也可以把它们解耦成一个类型和一系列的语义角色的。例如,“收购”类型和角色“收购价格”、“被收购方”和“收购方”是耦合的。如果把所有如“收购价格”、“被收购方”、“收购方”这样的类型角色转化为如“数值”、“受事主体”、“实施主体”这样的与类型解耦的语义角色,我们整体的角色数量就可以就可以从n*类型数这一数量级,降低到只有十几个语义角色的量级。
在这个基础之上我们还可以通过多层指针结构对不同的语义角色同时进行抽取。如右图所示,整个句子只需要一次进入预训练语言模型后,再进入多层指针网络就可以同时抽取所有的角色。
这样既保持了整体的灵活性也保持了抽取的高效率。
6. 关系挖掘
事件之间存在多种关系。我们目前定义了4种关系,包括从属关系、共指关系、时序关系和因果关系。由于时间的关系,我本次只分享因果关系。
因果关系:
因果关系的挖掘存在诸多挑战:
- 第一个挑战是因果的主观性。对哲学有了解的朋友可能会知道,哲学家大卫·休谟提过这么一个命题——“明天的太阳未必会升起”。意思是逻辑上,人类是无法根据过去太阳一直都这么升起的经验,来推理出未来太阳也这么升起。也就是说,因果关系不是绝对的、客观的,它只是是人类对我们过去的经验的一种主观总结。
- 第二个挑战是因果的复杂性。一个事情可能是一因多果,也可能是一果多因或者是多因多果。要完整地将事件的所有因果抽取出来难度较大。
下面是一些我们解决这些问题的具体思路:
- 首先,因果关系在客观上是非常难判定的,不同人对因果有不同理解。因此,我们把因果关系当作观点来看待,直接绕过这个正确性的问题。通过因果的出现次数、来源的权威性等方面来评价抽取出的因果的质量。
- 第二,将因果关系作为序列标注问题,同时去标注多因多果,部分解决上面提到的复杂的、多因多果问题。
- 第三,对存在因果稀疏的问题。虽然在不同的语料中存在的因果关系是比较少的,但通过归一的方法我们可以将单独存在于多个不同地方的因果表达聚合到同一个网络图谱中,从而形成一个完整的因果图谱。
具体而言,我们的方案如右图所示。通过因果事件的挖掘,我们可以从不同的篇章当中挖掘出大量的因果关系。比如,“生猪存栏环比回升”导致了“猪肉价格明显回落”是一个因果。然后,再对这些抽取出来的因果Pair中的每个事件节点再进行归一,将不同篇章中描述的相同事件归一在一起。归一结束后,我们就可以得到一个能支持多步因果的因果图谱。我们目前已经形成一个节点正确率90+%,节点数、关系数达到百万量级的因果图谱。
7. 事理图谱
此基础上我们就可以进行因果推理了。比如,想知道某个事情是由什么原因导致的?它可能会有什么后果?我们只需要在因果图谱中先定位到这个节点,然后就可以在图谱上面进行基于拓扑的推理。
问题来了,如果说我们需要进行推理的事件在因果语料中不存在,那我们应该怎么样进行推理和挖掘呢?目前我们正在尝试的3个思路如下:
- 基于事理的推理。我们认为的事件是客观世界中发生的某个具体事件,抽象事件则是对一类事件的抽象,而事理则是这些抽象事件的因果规律。比如,“某一天美国加息”,就是美国在具体某一天的加息,而“美国加息”事件则是对这一类事件的抽象。由于“美国加息”这类事件常常会导致“美元的汇率上升”这样的抽象事件发生,那么,新的一次美国加息事件,也非常有可能导致汇率上升。这种抽象后的事件规律,我们会把它放在事理图谱层次,来支持泛化的推理。
- 基于规则的推理。举个例子,“生猪库存不足”会导致“猪肉价格上涨”。在这里面,两个主体“生猪”和“猪肉”,其实是存在产业链关系的。“生猪”是上游,“猪肉”是下游。通过观察一系列的类似的因果,我们可以挖掘出这样一个规则:上游的库存不足,可能会导致下游的价格上涨。那么面对一种新事件的时候,比如说钢铁库存不足,我们就可以推理预测下游一些钢铁产品的价格可能会上涨。
- 基于图神经网络的因果的预测。上面两种方法中,本质上都可以认为是一种简单的规则方法,当事件较为复杂,或者需要多步推理时,上面的方法就不能适用。例如,“网曝黄光裕即将出狱”可能导致了“国美”股票大涨。这中间存在了多步推理关系,首先是“黄光裕”出狱的这个事件的“出狱者”是“黄光裕”,而“黄光裕”是“国美”的一个重要高管,然后 “国美”对应的股票出现“大涨”事件。这是一个多步推理的过程,比较难以通过事件抽象或是规则进行建模。我们正在尝试将每一个事件节点都放到整个图当中去进行考虑。通过图的方式对这里面的事件节点进行边的预测。
03 事件图谱应用
上面我已经讲了事件图谱的检测、表示、抽取以及因果关系,下面我将介绍事件图谱在百度以及行业中的具体应用:
目前百度事件图谱的相关应用主要有这四块。第一块是热点发现,第二块是事件脉络,第三块是资源关联,第四块是因果推理。
1. 多维度热点事件发现
在热点发现这一块,我们能够做到分钟级的热点发现。对于行业热点、地域热点等中长尾事件也可以做到分钟级的发现,因此我们可以支持很多对中长尾、小事件敏感的应用场景。目前我们的事件检测已能够支持二十多个行业、三百多个省市的分钟级的热点发现,并在人民网,齐鲁网等数十家媒介机构中落地。
2. 事件脉络
其次是事件脉络。通过事件图谱的整个事件的关联关系,我们在搜索上上线了热点事件脉络,可以将热点事件的前因后果进行关联,并以脉络的形式呈现给用户,大大提升了用户了解热点前因后果的效率。在疫情中,我们也通过事件脉络支持了疫情相关的事件脉络的查询。目前脉络相关的产品也支持了百度智能创作平台、事件脉络视频等众多应用。
3. 资源关联
第三块是资源关联。事件图谱围绕事件将相关的资源,如资讯、图片、视频等进行关联。目前我们通过这样的技术在“百家号的创作大脑”上面进行了应用,通过事件中心资源组织,辅助作者的内容生产分发效率大幅提升。
4. 因果推理
最后一块是因果推理。目前,我们在金融领域做了一些因果推理的尝试。我们将5年历史数据的相关因果进行挖掘和提取,构成了一个因果图谱。该图谱目前的规模接近两百万节点与关系。我们能够进行在线、实时的溯因推理。支持推理的证据呈现,也支持多步推理。同时还可以融合企业与供应链图谱,进行上下游事件推理。以 “非洲猪瘟爆发”为例,该事件爆发会导致 “生猪存栏处于低位”,同时也会导致下游“玉米需求”下降,最终影响到与“玉米”行业相关的公司。目前在这个方向上,我们还处于探索阶段,非常欢迎金融圈感兴趣的朋友们跟我�
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E7%99%BE%E5%BA%A6%E4%BA%8B%E4%BB%B6%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1%E6%8A%80%E6%9C%AF%E4%B8%8E%E5%BA%94%E7%94%A8/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com