技术动态 | 知识图谱的策展

作者:Jiaoyan Chen, Senior Researcher, Department of Computer Science, University of Oxford, Research interests: Knowledge Base, Knowledge-based Learning, Machine Learning Explanation.

知识图谱在众多的领域中发挥了重要作用,比如聊天机器人,自然语言理解,常识推理,数据分析,机器学习等。然而,目前主流的常识知识图谱,如Wikidata和DBpedia,都存在质量管理,维护更新,一致性等方面的挑战。作为从多知识图谱的知识来源,维基百科的知识本身就存在2.8%的错误率 [1];而知识的提取、转化和创建过程也存在出现错误的可能。随着时间的推移和不同知识的融合,知识需要不断更新和维护,以确保知识的覆盖率,准确性和一致性。类似于数据策展 [8],知识图谱的策展(Knowledge GraphCuration)旨在知识图谱(知识库)的管理和维护,解决包括知识的填充(Population),知识的标准化(Canonicalization),错误知识的检测(Detection)和修复(Repair),知识的一致性(Consistency)维护等问题。

继续阅读“技术动态 | 知识图谱的策展”

技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询

文章转载自公众号

AI前线 , 作者 AI前线小组 译

本文转载自公众号:AI前线。

 

作者 | Diego Ongaro,Simon Fell

译者 | 盖磊

编辑 | Natalie

AI 前线导读:eBay 工程人员于 5 月 1 日在 官方技术博客 上发布了开源的分布式知识图谱存储 Beam,Beam 实现了事实数据的 RDF 存储,并支持类 SPARQL 查询。

继续阅读“技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询”

技术动态 | 北京大学计算机所邹磊教授研究组开源面向 RDF 知识图谱的自然语言问答系统 gAnswer

 

项目网站: http://ganswer.gstore-pku.com/

代码地址: https://github.com/pkumod/gAnswer

OpenKG发布地址: http://openkg.cn/tool/ganswer

研究组主页: http://mod.icst.pku.edu.cn

 

一、KBQA 任务简介

基于知识库的自然语言问答 (Question Answering over Knowledge Base, KBQA) 主要有两类方法框架,分别基于信息检索和语义解析。前者直接从知识库中获取候选答案后通过各种特征进行排序返回最优结果,答案通常不具备可解释性。后者则首先尝试理解给定问题的语义,将其转化为SPARQL查询等逻辑结构,再在知识库中进行查询从而得到问题答案。

图 1 展示了语义解析的基本流程,其中主要有两个难点,一是语义消歧(资源映射),即如何将自然语言问题中具备歧义的实体短语和关系短语对应到知识库中确定的实体和谓词上。例如短语 “PaulAnderson” 在知识库中可能有多个候选实体如 < Paul S.Anderson> 和 < Paul W. S. Anderson>,我们需要消除错误的歧义,找到正确的映射。二是查询构建(语义组合),即如何将映射后的实体和谓词拼接成一个完整的查询。

 

二、解决方案

针对第一个难点(语义消歧),现有的一些工作尝试在查询生成阶段就完全消除歧义,往往耗费时间计算较多的额外信息,将所有可能进行排序后找到理论上最好的查询,最终查询执行时却在知识库中找不到结果。另一些工作把每一个候选查询都执行一遍,将匹配到的答案集合大小作为排序特征,这样做更加费时,因为很多查询之间具备共享子图,有大量的重复计算。

与这些工作不同,我们提出了数据驱动的消歧方法。其基本思想是在查询生成阶段保留实体、谓词乃至结构的歧义信息,而在查询执行阶段根据匹配情况消除错误的候选。为此我们定义了一种新的逻辑结构语义查询图(SQG),使用问句中被检测为实体/类型/变量的短语作为图中的节点,把在 SPARQL 查询的同一条三元组中的主体和客体所对应的节点连接起来。每个 SQG 中的节点或边都对应一个候选列表,记录了该节点或边可能映射到的知识库中的实体/谓词。

实体/谓词的候选映射列表可以通过现有的实体链接/关系抽取算法获得,我们分别提出了基于词典和句法依存树的实体/关系识别、基于CNN神经网络的关系抽取等方法。

如图 2 所示,节点 V3(PaulAnderson) 对应的三个后选中,虽然 <Paul Anderson(actor)> 和 <Paul S. Anderson> 的得分较高,但在查询匹配阶段知识库中找不到与 SQG 匹配的包含这两个点的子图,所以我们将他们剔除(消歧),选择映射 <PaulW. S. Anderson>。

同时,我们针对 SQG 设计了高效的子图匹配算法来查找最终答案,避免相似查询之间的重复计算,大幅度地提高了问答系统的整体效率。

针对第二个难点(查询构建),大部分相关工作只能解析简单问题(即解析后的查询只包含一条语句,又称为“一跳问题”),少数工作可以解析复杂问题(多跳问题),但其只能将问题转换为预先定义好的唯一查询图结构,当问题对应其他结构时则不能解析。

我们提出了三种查询构建的方法,其中:

1) 关系优先的构建方法 (SIGMOD2014[1]) 先通过谓词复述词典识别问题中的关系(谓词),再通过启发式规则确定关系两边的节点(实体/疑问词)。一些相关工作中使用神经网络来进行关系抽取的方法往往将问题整体作为输入,只能输出一个识别出的关系从而不能回答多跳问题。而该方法通过句法依存树进行模板匹配能识别出多条关系从而可以回答多跳问题。其在 QALD-6 和 WebQuestions 测试集上 F1 得分分别为 0.55 和 0.312。

 

2) 节点优先的构建方法 (TKDE2018[2]) 先识别问题中的节点(实体/类别/变量)再通过句法依存树构造查询图结构,而后为图中各边分配候选谓词。该方法不但可以识别多关系,还可以处理隐式关系,并且不依赖于预先定义的图结构模板。其在 QALD-6 和 WebQuesitons 测试集上 F1 得分分别为 0.78 和 0.496。

3) 基于状态转换的构建方法 (EMNLP2018[3]) 使用序列标注模型识别句中节点后,在训练好的子图打分模型的监督下通过预定义的四种状态转换操作逐步生成语义查询图,最后使用多通道卷积神经网络 (MCCNN) 识别相应关系。该方法可以生成更复杂的查询图结构(例如带环的查询),在 QALD-6、WebQuestions 和 ComplexQuestions 测试集上 F1 得分分别为 0.80, 0.536 和 0.543。

三、gAnswer 开源项目

项目网站: http://ganswer.gstore-pku.com/

代码地址: https://github.com/pkumod/gAnswer

gAnswer 项目基于节点优先的构建方法[2]和 DBpedia 知识库实现了开放领域的事实类问答。给定自然语言问题,gAnswer 返回用户 top-k 的 SPARQL 查询及对应答案集合。其查询阶段无缝对接 gStoreRDF 图数据库查询引擎 (http://gstore-pku.com/)。目前 GAnswer 项目已在 Github 上开源。

GAnswer 参加了欧盟组织的 QALD-9 (https://project-hobbit.eu/challenges/qald-9-challenge/) 的评测比赛,并取得了第一名的成绩。

GAnswer 已被多个商业公司和学校研究团队应用,用于提供包括电影知识问答,古诗词问答和医疗知识问答等多个方面的面向知识图谱的自然语言问答服务。

 

[1]    Lei Zou, Ruizhe Huang, Haixun Wang, Jeffrey Xu Yu,Wenqiang He, Dongyan Zhao: “Natural language question answering over RDF: agraph data driven approach”. SIGMOD Conference 2014: 313-324

 

[2]    Sen Hu, Lei Zou, Jeffrey Xu Yu, Haixun Wang, DongyanZhao: “Answering Natural Language Questions by Subgraph Matching over KnowledgeGraphs”. IEEE Trans. Knowl. Data Eng (TKDE) 2018: 824-837

 

[3]    Sen Hu, Lei Zou, Xinbo Zhang: “A State-transitionFramework to Answer Complex Questions over Knowledge Base”. Empirical Methodsin Natural Language Processing (EMNLP) 2018: 2098–2108.

OpenKG.CN

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

 

综述 | 事件抽取及推理 (下)

 

本文转载在公众号:知识工场

上篇事件抽取及推理的推文已经介绍了事件抽取的基本方法,本篇主要介绍事件推理的相关工作。就目前来看,事件方向相关的研究还是以事件抽取为主流任务,当前大多都是在模型的框架和优化方面进行研究。同时,事件推理的相关工作有众多领域并且没有一个主流的事件推理方向。近年来,越来越多的工作关注于事件的各个方面的推理,比如事件因果关系推理 ( Event causality inference ), 脚本事件推理 ( Script event prediction ), 常识级别事件产生的意图和反应推理 ( common sense level event intent , reaction inference ),周期性事件时间推理 ( recurrent event inference ) 等等。这些任务大多都是在已经有抽取到的事件语句(或从知识库中可以得到的事件片段等),挖掘事件在时间维度、顺承或依赖关系维度的特征,从文本或者知识库中获取先验知识来支撑推理。这些事件推理的工作不外乎推理事件之间的相互关系,比如时序关系、因果关系等等。传统的方法都是基于统计的方法,现在的方法也基本都是以神经网络为主。接下来就事件推理领域的一些工作进行介绍。

脚本事件推理

脚本事件学习已经经过了多年的研究,主要任务是根据一系列的故事的上下文来推断出正确的故事结尾,当然推断结尾一般也是常识级别的因果关系推断( common sense level inference )。最早由 Chambers and Jurafsky 等人提出基于指代消解技术利用自动化的方法从大规模语料中自动抽取脚本事件链条( event chain ),并提出了经典的挖词填空式的评估标准来评估脚本事件推断模型,这种思路被称为统计脚本学习。之后,脚本事件学习和预测领域有了更多的工作 A Corpus and Cloze Evaluation for Deeper Understanding of Commonsense Stories  [NAACL 2016] 提供了事件语料和evaluation 方法。现在的工作大多都是使用基于共现关系的概率统计的相关方法来描述抽象脚本事件之间的演化规律和模式。更多的,Mark Granroth-Wilding, etc. 2016 的工作提出了 Multiple Choice Narrative Cloze ( MCNC ) 的任务以及评估方法,方便了后续研究的开展。这个任务具体可以描述为:给定一个脚本事件的上下文和若干个候选的后续事件,从这些后续事件中挑选唯一正确的后续事件。这篇文章中的一个例子可以用下图来阐述。

如上图所示,上下文被组织成若干个脚本事件组成的 event chain,每个脚本事件抽象成为 trigger ( role1, role2,…) 的形式, 角色都在 entities 中进行标注。然后在预测部分给出五个候选事件,这五个候选事件是由一个标注的正确的下文事件和另外的从语料中随机选择的事件组成。

同时,也有很多工作(比如 Story comprehension for predicting what happens next [EMNLP 2017],Dan Roth 研究组的工作)开始关注语义方面的故事理解,不仅仅是在传统的基于统计的方  法来进行预测,需要更深层次挖掘文本的语义知识,比如事件序列(通常可以挖掘出事件顺承和依赖关系的信息)、情感偏向(通常奠定预测事件的情感倾向)和主题信息(保持预测的事件和故事原文的主题一致性)从而去预测接下来可能发生的事件。我们以以下的例子来说明根据已有的故事原文来进行下文的预测:

(图片来源于Chaturvedi S, etc. 2017)

这篇工作就是从 context 中提取出来故事的语义信息进行故事结尾推断。

传统的脚本事件学习方法 Chambers and Jurafsky (2008) 使用 Pairwise Mutual Information(PMI)来将事件通过事理关系形成一个事件链,之后研究者 Jans et al. (2012)用 skip bi-gram 概率来从文本中提取出来事件链,从而对事件对的时序关系进行建模,这些事件对( event pair )往往具有较强的顺承关系。上述的统计方法逐渐被神经模型替代,越来越多的研究者使用 Siamese Network,language model 和 LSTM 等模型来学习到更多的事件时序关系。

介绍完脚本事件推理的相关基础知识之后,接下来就结合近些年具体的工作来描述脚本事件推理的研究问题和现状。Wang Z, etc 2017 提出了结合事件时序信息和事件关系来辅助脚本事件预测。这篇工作主要是总结了以往工作中往往事件对的关系( pairwise event relations )是对脚本事件预测很有帮助的,因此在使用神经网络对整个事件链进行时序关系建模的同时应该考虑进行这些事件对的关系信息。整个方法的框架如下所示:

(图片来自Wang Z, etc 2017)

整个框架分两部分:已有的脚本事件链中的每个事件被组织成 v ( a_0, a_1, a_2 ), embeddings 之后拼接成为一个 event vector e,然后使用 LSTM 来 encode,使用LSTM 主要是为了保留事件之间的时序关系,这样就完成了对已有事件链的表示。同时,对五个 candidate events,每个 candidate 都以相同的方式进行 encode ,并且这个候选事件的隐状态需要结合事件链最后一个事件的 hidden layer 来确定,为了尽可能地学习更多的 event pair 信息,candidate event 的隐状态会和事件链的每个事件的隐状态进行配对,并通过 dynamic memory network 来学习候选事件和这些事件链中的事件的相关性,最终输出每个 candidate event 的概率结果。

详细地对每个部分展开来说,事件使用 LSTM 表示部分比较通用因此不必详细说,工作重点在于对事件对的建模。首先,传统的方法计算一个事件对的相关程度可以用sigmoid 简单计算如下:

h_i 是事件链中的某个事件的 LSTM 得到的表示,h_c 是候选事件表示。则自然地,最终的这个候选事件作为最终预测事件的得分就是所有 event pairs 的平均分数。然而直觉上事件链上的每个事件对于候选事件预测的重要程度都不是均等的,比如事件链上的一系列事件”排队,就坐,点餐”和最终的预测事件“吃饭”,很明显“就餐”事件和“吃饭”的相关性最高。因此这部分使用了 dynamic memory network 进行了对传统方法的改进。

首先作者使用简单的 attention 机制来对事件链中每个事件对于候选事件的影响程度进行权重计算。公式如下左边部分,attention 的一般形式,权重就是 。则每个事件和候选事件的相关性计算就变成了下面公式2的形式。

(公式1)

(公式2)

原文作者进一步使用 memory model 来对事件权重计算进行改进。这里也介绍一下memory model,memory model 由多个 dynamic computational layer组成,第一层的权重计算和上面的一般 attention 权重计算形式一样。之后,对整个事件链学习到一个统一的表示,即对每个事件链中的事件的隐状态都通过第一层的权重进行加权相加,公式如下所示:

h_e 就是学习到的整个 event chain 的表示。这个统一的事件链表示 h_e 就被用来和候选事件隐状态 h_c 结合起来产生一个更深层次的表示 v ,这个表示 v 比起候选隐状态h_c 来说包含了更多的语义信息。在计算第二层 attention 的时候 h_c 就可以使用这个更深层次的表示 v 来进行,即:

这个过程将会进行多次。然后用 gate 机制来控制使用当前新得到的表示还是上一个阶段的 v 。最后通过检测 |vt+1−vt| 是否小于阈值来确定整个模型是否已经收敛。

总而言之,这篇文章算是将比较经典的脚本事件学习方法进行对比,并将两种主流的事件关系,事件时序关系和事件对的关系来进行融合,结合两种关系的优点,使用memory model 进行事件链的每个事件的权重学习,并在数据集上获得了 state-of-art 的结果。本篇就是详细介绍了这一工作和当前的最新研究进展。

事理图谱与脚本事件推理

事理图谱近些年来收到越来越多的关注,构建事理图谱可以进行很多应用,这部分就介绍一篇近年的构建事理图谱来进行脚本事件推理的工作。Li Z, etc. (本章节所有图片都来自于这篇文章)在去年的关于构建事理图谱来进行脚本事件预测的工作就是典型的事理图谱应用工作,事理图谱也应该受到更广泛的关注。这篇文章是哈工大刘挺老师团队的工作,其在事理图谱方面的研究有很长时间。根据刘挺老师有关事理图谱的ppt中可以得到事理图谱的相关背景知识:事理图谱是事理逻辑知识库,描述抽象事件之间的演化规律和模式。事理图谱以抽象类事件为节点构建的有向有环图( directed cyclic graph ),node是 event,edge 是事理关系。事理关系在刘老师这里暂时只定为两种:一种顺承,一种因果,这两种关系考虑了事件发生的时间顺序。

这篇文章就是描述通过构建这样的事理图谱来进行脚本事件预测,同时,通过 scaled graph neural network ( SGNN ) 来进行事理图谱上的事件预测。这篇工作观测到已有的使用事件链(event chains)或者事件对(event pairs)的工作会遗漏掉很多事件之间的丰富的关联信息。在传统的基于统计的方法中,共现较多的关系往往被认作为强关联,因此绝大多数情况下都是根据这些统计信息来做出 pairwise 的预测,而忽略了 event的上下文信息。然而通过已有的事件链来构建事件图谱,一些语义上强联系的事件会形成环等结构,从而在统计方法上加上图结构信息来辅助进行预测。如下图所示的具体例子:

有 ABCDE 五个事件,从训练数据集上我们可以看到基于统计的方法由于 C 和 E 出现的概率比 C 和 D 大,因此这种方法较大概率会预测 ABC 之后的事件是 E 而不是 D 。事实上,通过构建事理图谱,我们可以看到 BCD 三个事件会形成一个图谱上的环结构,环结构的强连接意味着 BCD 事件往往是一起进行循环出现的,这是一种隐式的连接信息,在学习事件表示的时候将会更有效地提供更多信息。这里举的例子是数据集上的典型例子(可以直观推理到大多数情况下 pairwise 的事件对信息还是非常重要的),可能并不能代表大多数例子,但是必须承认这种情况存在,然而这种情况存在的比例尚不清楚,因此这里对传统 event chain 和 event pair 的缺点总结尚待优化。但同时我们也可以直观感觉到图谱类型的结构往往能够表达比链和树状等结构更深层次的关联信息,这点是成立的,因此总体来说构建事件图谱的确有助于挖掘隐含事件关系。

从上图可以看到,事理图谱的点就是事件,有向边表达了事件的时序关系,边上的权重代表的是这种时序关系的出现频率。接下来原文作者就开始关注通过 network embeddings 来学习事件表示,从而完成时间推理。现在比较 popular 的方法是使用GCNN ,即在图谱上使用卷积方法进行特征学习和提取,但是只能作用于无向图。已有的工作已经证明图结构的神经网络如 GNN 能够有效处理这种有向图的结构,学习得事件的时序关系,但是传统的 GNN 方法往往需要信息在图上进行传播从而进行收敛,信息传播的一个问题就是在图上如果距离较远(两点之间的最短路径较长)的情况下,信息很难传播到从而导致事件间信息丢失。这个问题研究者使用了 GGNN(即使用 gate 门的 GNN )方法来尽多的保留这些需要传播的信息,但这种方法只能在小规模图上进行,本篇论文的原文作者就在这些研究的基础上使用了一个缩放机制,即 scaled graph neural network( SGNN )来使 GGNN 能够作用于大规模事理图谱上。

具体的框架图如下图所示,分为多图展示:

(原文框架图的事理图谱构建部分)

(原文框架图的图谱缩放和事件图谱表示学习部分)

所以原文方法也大致分为两部分,构建事理图谱和使用 SGNN 来进行事件表示学习。上文已经介绍了这种图谱的节点和边的意思,注意这里的权重是该事件时序关系共现的概率而非频率。SGNN 对比 GGNN 上的优化就是使用分而治之的思想,每次只处理一部分图结构。比如一个完整事件链只包含了节点1,2,3,4,则只把候选事件节点和他们之间的边单独拿出来,如图1的绿色虚线框内。具体地,学习事件的表示分为以下几个阶段:

1、初始化事件表示:相似地,本文需要初始化一个事件为一个事件向量,对于一个 e = p(a0; a1; a2),p 为触发词,a 为事件角色,首先 embeddings ,然后对于每个部分的 embeddings ,本文也比较了三种不同的将 embeddings 结合获得最终的初始化事件表示,分别为 Average(使用每个部分的 embeddings 的平均值作为最后的 event vector),Nonlinear Transformation( ),以及Concatenation(即同上一篇论文的事件表示方法,直接连接每一个部分的embeddings 作为最后的 event vector)

2、通过 GGNN 来对事件初始化表示进行更新:这部分就要融入事件的时序信息和共现关系信息。GGNN 的输入是事件链的隐状态矩阵和事件的图谱结构邻接矩阵,其中隐状态矩阵  可以理解为上下文事件向量+候选事件向量,k 一般是5,因为训练集是从5个候选事件中选择一个正确的。经过缩放操作后的事理图谱部分结构的邻接矩阵 A 被表示为

即如果节点 i 到节点 j 之间有一条有向边,则 A[i,j] 的值就是共现概率,否则就为0。通过图上我们可以看到 GGNN 输入就是初始隐状态矩阵 h(0) 和初始状态的邻接矩阵状态 a(0) 。具体的更新过程如下公式所示:

首先 t 时间步的邻接矩阵状态 a(t) 的表示要由上一时刻的输出即事件链的隐状态 h(t-1) 和邻接矩阵 A 来确定,z(t) 和 r(t) 就是 GRU 结构的更新门 ( update gate ) 和充值门( reset gate ),公式 (5) (6) (7) (8) 就是 GRU 的公式不必赘述,通过 GRU 结构获取当前时间步的表示结果 h(t) ,时间步值为固定的 K。

3、从候选事件预测最可能的事件:最难的事件表示部分完成之后,事件链上的每个事件以及5个候选事件都得到了表示,这里最后一个时间步的每个事件的表示都保留下来。这里为了学习到 event pair 的事件对关联信息,对于每个候选事件,将事件链中的每个事件都和这个候选事件计算相关度得分,最终将每个 event pair 的相关度得分加起来取平均值即为最后的候选事件得分。作者在这里还为事件相关度得分的得分函数使用了不同的函数:曼哈顿距离,cosine similarity,Dot similarity 和 Euclidean similarity。同时,作者也明白事件链上的不同事件对于候选事件的影响不同,因此用了一个最基础的 attention机制(和上一篇论文一样),不再赘述。

总体来说,这篇文章和上面一篇论文其实做的问题都是一个问题,使用的方法的思想也相似,都是要尽可能考虑到事件的时序信息和事件对信息,针对传统只用 event chain 或者 event pair 工作的不足,一个提出使用两种方法结合的思想,一个提出使用 GGNN 进行事件表示的思想进行了实验,同时都考虑到事件链上不同事件的影响不同而用了 attention 机制,一个使用了较为复杂的 memory model ,一个只是用了一般的 attention 机制。两篇文章的侧重点不同,方法也各异,但总体思想还是一脉相承。对比一下相同数据集的结果如下图所示:

(Wang Z, etc 2017的工作的结果)

(Li Z, etc 2017的工作的结果)

上述两个工作对比,都是在 G&C16 的数据集,采取相同的评估方法,可以看到,最优的结果差别并不大,代表了该领域最前沿的研究结果。总体来说,脚本事件预测是一个非常有研究前景的领域,研究也面对越来越多的挑战。

常识级别的事件意图和反应推理

在 ACL2018 的会议中有关事件推理有一篇比较有意思的工作 Event2Mind: Commonsense Inference on Events, Intents, and Reactions [ACL 2018](本节图片均来自于本篇论文),这篇工作关注常识级别的事件发起者的意图、事件发生后事件参与者的反应的推理,提出这么一项比较偏向事件情感推理的任务,提供了该任务下的众包训练数据集,并且提供了 baseline 和评测方法。

形式化来说,这个任务的输入是形式化事件描述短句,比如“ Person X drinks coffee in the morning ”, 输出的是事件发起者的意图,事件发起者的反应,事件受体反应。比如这个例子中人物X的意图是:X  wants to stay awake ;人物X的事件发生后反应是 : X feels alert,由于这个事件没有事件受体Y,因此事件受体 Y  (如果有 Y )在事件发生后的反应为 : None 。更多的例子如下图所示:

这篇文章使用众包来构造数据集,人名的部分全部挖去,用 Person X,Person Y 来代替,我们同时也可以看出 intent 往往是一个短句,reaction 往往是一个单词或词组短句形式。同时作者还提出了 baseline 模型,采用传统的 encoder-decoder 结构,在对事件学习到表示之后将表示分别用于三个 decoder( X intent decoder, X reaction decoder 和 Y reaction decoder )完成生成任务。使用了多任务学习的思想,整个任务的 loss 是同时最小化三个不同 decoder 的 loss 的结果。整个模型的框架如图所示:

Baseline 的方法比较简单,Encoder 学习事件短句的表示,分别用 CNN,BiRNN 等方法来学习,decoder 分别用 n-gram 和 sequence decoding 来完成,但是文章没有很具体给出实验的评估方式,后面的准确率使用人工评估,初步的 baseline 的结果如下图所示:

可以看到 CNN 的表现不错,具体的实验数据他们开放在了 github 上。同时,通过后续的结果对比和错误分析以及更多的后续实验,作者发现通过这些 intent 和 reaction 可以构建出 embedding space ,相似事件倾向于有相同的意图反应和情感倾向,这对于事件相似度衡量和推理都比较有启发。同时,该工作在电影事件脚本的实验中使用性别作为对比变量,甚至总结出在电影中男性和女性不同的角色刻画倾向,总结的角色刻画倾向和实际中比较吻合,说明通过对事件常识级别的意图和反应推理的确可以比较准确地捕捉一些事件的感情倾向,有益于更多的工作。

可以说,这篇工作提出了一种新的事件推理的任务,并且有可能该任务会在今后引起更多的重视,事件情感倾向推理的相关研究将受到越来越多研究者的关注。

事件因果关系识别

事件因果关系识别算是一种推断事件之间是否有因果关系的任务,主要是给定一对event pairs ,根据文本中的信息及一些挖掘的因果特征来确定这一对事件是否存在着因果关系。Improving Event Causality Recognition with Multiple Background Knowledge Sources Using Multi-Column Convolutional Neural Networks [AAAI 17](本节图片都来自于这篇工作)这篇工作就是用 MCNN 来从海量语料中寻找一个事件对的因果关系paths,从而判断事件对之间是否有因果关系。

形式化这个工作:输入是一对因果关系候选实体对,未知是否有因果关系。输出就是是否有因果关系。方法是从 why-QA 语料中的文本进行检索,找出包含这个事件对的文本,以及一些因果关系 clues 的句子、因果关系 pattern 等都输入到 MCNN 中,从而寻找 path 来判断是否具有因果关系。

比如 “ global warming worsens ” 和 “ typhoons strengthen ”两个事件,如果需要判断二者是否有因果关系,可以首先构建一个Why的问句,即 “ typhoons strengthen ”-> “ Why do typhoons strengthen? ”,然后基本思路就是从大规模语料库中找到那些含有这两个事件的句子作为 answer clues ,难点就是并非所有的包含这两个事件的句子都在表达这两个事件有因果关系,所以找到的 clues 的噪声是非常强的,因此作者决定使用MCNN 进行降噪处理,找到合理的表示事件因果关系的 clues 来判断因果关系的存在。整个方法的框架如下图所示:

整个 MCNN 的输入如图所示,MCNN 设置为8列,其中第一列放两个 candidate ,第二列到第五列都放包含这两个事件 candidate 的句子的上下文。具体的,第二列放cause 事件的谓语和名词之间的 context ,第三列放 effect 事件的谓语和名词之间的context ,第四列放 cause 事件的名词和 effect 事件谓语之间的 predicate ,第五列放effect 事件的谓语之后的所有内容;第六列放 Short binary patterns ,就是在语料中包含cause 事件和 effect 事件的句子最常出现的 binary patterns,比如两个事件由“因为…”,“原因是…”等 pattern 进行连接;第七列放在 QA 语料中检索到的构成的 why 问题的答案,答案句子要包含 cause 事件的每个词;第八列从语料中找一两句有因果关系的句子,并且这些句子必须包含第六列的那些表示因果关系的 pattern 。

MCNN 的每一列( column )的框架如下图所示:

可以看到,输入的单词使用 n-gram 进行 Word2vec 来进行表示,之后使用 CNN 结构。MCNN 每一列都使用完整的 CNN 结构,只是 filter 的大小可以不同,通常 filter 的大小需要根据每个部分的不同内容来确定。MCNN 最先使用在图像中,比较经典的就是在图像处理中利用 MCNN 计算人群密度:一张图往往人头的大小是不一样的,同样大小的 filter 往往不能捕捉到图像中人头近大远小的特征,因此设计不同大小的filter来对应不同大小的人头,filters 越大,越适合去处理大人头的部分。在 NLP 领域中,MCNN 现在广泛用于回答 Why-QA 的任务中,分析问句并且推理出隐式因果关系。

这篇文章借鉴意义比较大的就是使用 MCNN 找 why 问题的答案路径,这种方法在众多 Why-QA 任务中已经被证明行之有效。作者这里将方法进行延伸去解决两个事件是否有因果关系的问题。同样的找事件因果关系的工作近些年还有一篇 Kang D, etc.2017.,也是从文本中挖掘因果特征来对时序事件的因果关系进行判断,具体工作在这里暂不展开介绍,如果有兴趣的读者可以详细阅读。

事件因果关系的相关论文结合比较难的关系推理领域的因果关系推理,使用事件信息来辅助进行因果关系推理,在研究领域属于比较有挑战性的工作,值得更多研究者的研究。

事件推理小结

篇幅原因,这里只介绍了几篇关于事件推理的相关工作,但是事件推理的相关研究领域不仅于此。比如周期性事件可能发生的时间的推理(同时进行周期性发生事件的发生时间的补全)Dinesh Raghu, etc. [IJCAI 2018]。Prafulla, etc. 主要研究在事件文本中找到一个句子的多个事件之间是否有时序关系,重点解决长距离事件之间的时序关系推断。同时还有事件指代消歧的相关工作 Prafulla and Ruihong, 2017 ACL, 2018 EMNLP,主要针对文档内部事件之间、跨文档事件之间的一些事件可能实际上指的是同一件事件,但是事件描述非常不同,这种情况下应该如何进行相同事件识别的相关研究。事件之间的关系挖掘、推理的有很多的研究领域,不同于事件抽取的主流任务,事件推理正在朝着各个比较有趣的方向进行发展,事件抽取作为 IE 的重要任务,事件推理作为IE之后的更加有趣的应用,将继续有着不断发展的前景。如果有更多的读者对事件抽取、事件推理的相关研究感兴趣的话,欢迎和知识工场实验室进行联系和探讨,也欢迎和我本人(李晨光,知识工场17级硕士,联系方式:hnjzlcg@gmail.com)进行交流。最后,欢迎大家关注我们实验室的中文事件抽取的相关工作Timeline: A Chinese EventExtraction and Exploration System(Li,etc. 2018)和相关的中文事件展示demo:http://218.193.131.250:33663/search/周杰伦。知识工场实验室将在事件领域进行更多的研究。

参考文献

1、Mostafazadeh N, Chambers N, He X, etal. A corpus and evaluation framework for deeper understanding of commonsensestories[J]. arXiv preprint arXiv:1604.01696, 2016.

2、Chaturvedi S, Peng H, Roth D. Storycomprehension for predicting what happens next[C]//Proceedings of the 2017Conference on Empirical Methods in Natural Language 7899 Processing. 2017:1603-1614.

3、Rashkin H, Sap M, Allaway E, et al.Event2Mind: Commonsense Inference on Events, Intents, and Reactions[J]. arXiv preprint arXiv:1805.06939, 2018.

4、Li Z, Ding X, Liu T. Constructing Narrative Event Evolutionary Graph for Script Event Prediction[J]. arXiv preprint arXiv:1805.05081, 2018.

5、Granroth-Wilding M, Clark S C. Whathappens next? event prediction using a compositional neural network model[J].2016.

6、Wang Z, Zhang Y, Chang C Y. Integrating order information and event relation for script eventprediction[C]//Proceedings of the 2017 Conference on Empirical Methods inNatural Language Processing. 2017: 57-67.

7、Kruengkrai C, Torisawa K, Hashimoto C,et al. Improving Event Causality Recognition with Multiple Background KnowledgeSources Using Multi-Column Convolutional Neural Networks[C]//AAAI. 2017:3466-3473.

8、Kang D, Gangal V, Lu A, et al.Detecting and explaining causes from text for a time series event[J]. arXiv preprint arXiv:1707.08852, 2017.

9、D Raghu, S Nair, Mausam – IJCAI, 2018. Inferring Temporal Knowledge for Near-Periodic Recurrent Events.

10、Choubey P K, Huang R. A sequential model for classifying temporal relations between intra-sentence events[J].arXiv preprint arXiv:1707.07343, 2017.

11、Choubey P K, Huang R. Improving Event Coreference Resolution by Modeling Correlations between Event Coreference Chains and Document Topic Structures[C]//Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2018,1: 485-495.

OpenKG.CN

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

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

文章转载自公众号

知识工场

综述 | 事件抽取及推理 (上)

 

本文转载自公众号:知识工场。

事件概要

事件是一种重要的知识,近年来,越来越多的工作关注于从开放域或领域文本中抽取结构化事件知识。同时,除了本身就很困难的事件抽取任务之外,近年来,越来越多的研究者开始关注于事件的推理工作中(事理推理,事件时序关系推理,事件 common sense level 的 intent 和 reaction 推理)。ACE给了事件定义为:

  • Anevent is a specific occurrence involving participants. An event is something that happens. An event can frequently be described as a change of state.

从中我们可以看到,事件一般是需要包含事件的参与者(角色),并且事件往往可以被描述为一系列状态的改变。在事件抽取的过程中,一个事件往往被更形式化地定义为包含了事件触发器(event trigger), 事件类型(event type), 事件元素(event argument) 和事件元素角色(event argument role),因此事件抽取的任务就是识别出上述事件要素并且进行结构化组织。从 Zero-Shot Transfer Learning for Event Extraction [HuangL,2017]这篇文章中我们也可以得到一个对事件抽取任务很好的定义:

  • Thegoal of event extraction is to identify event triggers and their arguments inunstructured text data, and then to assign an event type to each trigger and asemantic role to each argument.

因此,通常来说,事件抽取的基本任务都可以用以下几个方面概括:

  • 事件触发词检测 Event (trigger) detection
  • 事件触发词分类 Event trigger typing (一般和detection一起做,归结为detection的一部分)
  • 事件元素识别 Event Argument Identification
  • 事件元素角色识别 Event Argument Role Identification

举个例子来说明这个几个事件要素:

在这个例子中,触发词 trigger 有两个,为 injured 和 passed away,因此 event detection 的工作主要是识别出这两个触发词(块)。之后,需要对这些触发词进行分类,根据ACE事件触发词分类体系(如下图),结合语义应该对应分成 Injure 事件和 Die 事件。然后红字部分 Henry 根据分析应该判别 Henry 是事件的 Argument,角色都是事件的发起者。

       每个事件类型都有一个模板,如下面两个图,列举了一些时间类型的模板和模板的基本样式:

(ACE 2005一些事件类型模板,左图来源于 Kang Liu 的 PPT<Open domain Event Extraction from Texts>,右图来源于网络)

事件在确定了 trigger 类型之后,应该根据这些模板来进行填槽(slots)。

事件抽取方法

事件抽取的基本任务上面已经介绍了,学术界和工业界针对具体的一些任务都进行了自己的研究。这里值得注意的是这几个任务有时候并不是孤立去解决的,现在越来越多工作证明 joint 的方法更加有效(比如 event detection 和 event typing 一般都一起做,大多工作都归结为 event detection 的部分,[Shulin Liu,etc,2017]也指出一般在判断事件类型的时候更需要对应的 Argument role 的信息,以及文本的上下文信息来共同确定)

同样,先以一个简单例子来解释事件抽取方法:

(图片来源于 [Y Chen, 2015] Event Extraction via DynamicMulti-Pooling Convolutional Neural Networks)

在这个例子中首先 event detection 找到两个事件触发词 died 和 fired,然后要 trigger typing 判断出 died 对应的是 Die 事件,fired 对应的是 Attack 事件,句子上面的黑色线表示的是 trigger 和 argument 之间的关系,下面的红线是用 AMR(Abstract Meaning Representations;Banarescu et al., 2013)进行的识别 argument candidates 并且构建起event mention 结构。

从 An Overview of Event Extraction from Text [F Hogenboom .etc ] 中可以总结出事件抽取方法主要有以下几种:

• Expert knowledge driven approaches(pattern-based approaches): 这个类别的方法主要是借助大量的已有的事件 patterns,比较适合于领域的事件抽取,将文本中的句子和已有的事件 patterns 进行匹配。同时使用词汇+语法 patterns 和词汇+语法 patterns 来进行 patterns 制作。这种方式往往能够抽取出准确度较高的事件表达,但是这种方式比较费时费力,并且有领域局限性。

•Data-driven approaches (Machine Learningapproaches): Data driven 的方法借助machine learning 的相关算法,以及深度模型来进行触发词判断等。具体来说,使用SVM,ME,CNN,RNN等方法来判断句子中某个词是否是触发词,重点都是在如何学习文本中 sentence 的表示,来提高判断准确度。另外,也要用 AMR 进行事件本体结构构件,并达到基于事件元素角色、基于事件上下文的自动语义标注。这种方式的好处在于相对需要人力较少,并且可以做开放域文本的抽取,但准确率自然不算高。

•Hybrid event extraction approaches,简言之,就是在做 event detection 的过程使用 pattern based 方法,在做 event typing 的时候要使用 machine learning 的一些方法提高模型的泛化能力,从而在减少人力的情况下尽量做到精准。基本现在近年的工作都是以这种方法作为基础的思想,并且在事件表示,事件学习结构上下足功夫来对事件抽取的各个具体难题进行一一解决。

• 其他方法,此处不详细介绍

接下来,结合几篇具体比较经典的事件抽取工作介绍一下一些基本的事件抽取的想法。

Dynamic Multi-Pooling Convolutional Neural Networks

Paper 原文:[Y Chen, 2015] Event Extraction via DynamicMulti-Pooling Convolutional Neural Networks ;这一节内容图片均来自此文

在事件抽取的工作中,两种特征是十分重要的:

  • lexical-level (词汇级别特征): prior knowledge (先验知识)
  • Sentence-level (句子级别特征) :从语法特征方面来帮助更好理解 events 和arguments

词汇级别的特征可以用一个例子来进行详细的说明,如下面的例子:

这两个 beat 在两句不同的句子中,我们人是可以识别前者是在讲竞选总统时候 Obama 打败了 McCain,因此这里的触发词 beats 应该对应到的事件类型是 Elect ,而后者说 Tyson 这个拳击手打败了对手,因此这个 beats 应该对应的是 Attack 事件类型。人们之所以知道这样分类是因为有 prior knowledge 即先验知识来支撑这样的分类,即我们知道Obama 和 McCain 是两个总统候选者,因此不太可能真的是 Attack 行为(一般来说),而因为 Tyson 是一个拳击手,所以他的 beat 是实打实的 Attack 行为。原文作者将这样的类似于 prior 的特征成为 lexical-level 的特征。这里我个人认为可以借助知识库(knowledge base,如中文的我们实验室的 CN-DBPedia 和 CN-Probase,借助 entity linking 工具),将具体的实体识别出来,获取这些实体丰富的属性和概念信息,从而可以获取更多的先验知识来进行更精准的实体 typing 。

Sentence-level 的特征主要就是考虑语法特征进去,比较普遍的方法就是用 AMR 工具来对事件表达进行 argument candidate 的识别和事件结构化,即找到每个 argument 和trigger 在语法层面的联系,比如 time,arg0,arg1,place.etc,如下图。

原文作者提出,这种传统的方法在提取这些特征时候严重依赖于已有的工具,但已有的工具的准确程度不能保证,容易导致 error propagation 。因此, sentence-level 和lexical-level 的特征应该使用更好的方式来进行学习和表示。对此,作者提出 Dynamic multi-pooling convolutional neural network 。

已有方法去用 CNN 来对句子进行处理并提取特征,传统的CNN使用一个 max-pooling层来对卷积后的结果来做降维和保留显著特征。池化层(Pooling layer)作用即为此,很多先前工作证明,Max-Pooling 能减少模型参数数量,有利于减少模型过拟合问题,因此在很多 CNN 结构中 Max-Pooling 是很自然的选择。放在句子中的物理含义就是对一个句子的表示做 max 操作,从而找出整个句子最有用的信息。但这样的操作可能会对句子产生信息丢失的错误,如上图的例子,一个摄像师因为美军坦克向一个酒店开火而死亡,使用传统的 CNN 的 Max-Pooling 方式最终会获取的关键信息就是 a man die,这样就会忽略一些重要事实——这个句子还有一个坦克向酒店开火的事件,并且两个事件是包含因果关系的,同时更重要的是,camera man 这个 argument 作为 die 的发起者,同时又是隐含的坦克 fire 事件的受体(虽没有明显指出,但是可以推出来),这些信息都是对 argument role 判定十分重要的。以这个典型的例子原文作者要说明这种用 max-pooling 的方法并不使用于事件抽取任务中。同时,为了使读者相信这种情况不是个例,原文作者使用列数据的方式来直观说明他们研究的必要性和重要性:

作者对问题的统计工作,可见这种问题在数据集的比例很高,直接说明了问题有研究必要

下图为该工作主要模型:

(Architecture. 该图以argument classification的工作过程作为示例)

该工作包含 event trigger identification 和 classification,以及 argument identification 和 argument role classification 的工作,相对比起来 trigger identification and classification要相对简单点,所以就以比较复杂的 argument role identification and classification 作为介绍的重点。

模型的任务是在 trigger identification and classification 做完之后,确定每个句子中的argument 是哪个并且应该是哪种 argument role,每次对句子中除了 trigger 的每个词当做argument candidate,然后进行该 candidate 的分类工作。因此抽象成的就是 word 分类任务,输入是一个句子,以及句子的 trigger(已知,在句子上标注好)和 trigger 的 type (这里讲 trigger 是单个 trigger,多个的话分别去做)。模型从左至右依次介绍:

  • Embedding learning:word embeddings,这个不需要太多介绍,skip-gram 做word2vec。Word-level 的特征就主要用 word embedding 获取,这里如果要引入知识库的知识作为先验知识则需要知识库的 embedding,或者对知识库进行知识的表示建模。
  • Lexical Level Feature Representation:即单词 embeddings 的拼接成向量形式
  • Sentence Level Feature Input:

1)CWF:Context-word feature,上下文特征,这里上下文指的是 argument candidate 上下文,比如图上蓝色部分,即把 cameraman 作为 argument candidate 作为研究,则句子其他部分是上下文。

2)PF:Position feature,当前词和需要进行预测类型的 trigger candidate 或者argument candidate 的相对距离,以 cameraman 为例,则a:-1,cameraman:0,died:1,when:2,an:3, …考虑到上下文位置关系。

3)EF: event-type feature,事件类型特征是对于判定 argument candidate 的类别是十分重要的特征。

  • DCNN:

1)Convolutional layer:对上述的三个 feature 拼接成的矩阵进行卷积操作,这里简单解释一下对句子的卷积操作:在文本中,一句话所构成的词向量作为输入。每一行代表一个词的词向量(这里就是CWF+PF+EF),所以在处理文本时,卷积核通常覆盖上下几行的词,所以此时卷积核的宽度与输入的宽度相同,通过这样的方式,我们就能够捕捉到多个连续词之间的特征,并且能够在同一类特征计算时中共享权重。 CNN 的作用这里就是捕捉句子的组成结构的语义特征并且把这些语义信息压缩要 feature map 中,使用 Multi-filters,在句子处理时候会自动学习有多少个 filters 来学习尽可能多的语义,比如一个 filter学 compositional feature,一个学习词依赖,一个学习构词法等,最终产生多个 feature maps。如果有 m 个 filters,每个 filter 窗口大小为 h,则

2)Dynamic Multi-Pooling:如图,假设有三个 feature map,传统的 max pooling 直接对每个 feature map 做一个 max 操作来提取最有用的信息,这里用的 dynamic pooling 就是将每个 feature map 根据 argument candidate 和 trigger 来进行分割操作,即把每个feature map 都根据 trigger 和 argument 来切成三块,计算的 max value 不是整个 feature map 的 value,而是这三块分别的 max value。因此,可以看到每个 feature map 经过dynamic pooling 的结果是三个部分的 max 值:max(c_11), max(c_12), max(c_13)。到这里核心部分完成。

  • Output:将上面所讲的每个 feature map 的 dynamic pooling 的结果拼接,并加上lexical level feature representation 压缩后的结果作为最终的 feature representation,然后过一个全连接层做分类,分类的结果包括各个 argument role 和 None role。

整个模型的主要过程就如上所示,这个讲的是 argument role 的分类方式。Trigger 分类也用同样的模型架构,但是输入少了EF,dynamic pooling 分割时候也只根据当前 trigger candidate 进行分割,其他的都一样,这里不再赘述。看一下实验结果:

可以看出来这种 DMCNN 模型在 trigger 和 argument role 分类任务上都表现很好,说明了这种模型的效果。

本篇论文总结:

       Dynamic multi-pooling 在这里用的十分契合实际的场景,可以有效解决 argument candidate 可能作为多个 trigger 的 argument 但是扮演不同 role 的问题,并且对特征输入做的十分清晰,输入特征比较完整。在中文场景中由于中文的特殊性参考 nugget event trigger identification 那篇文章则应该把 char feature 考虑进去。这篇文章对事件抽取比较有启发性。

下一节交叉讲一下 pooling 选择的策略,不要一味选择 max pooling。

Pooling 选择的策略

这里交叉介绍 pooling 选择的策略:

•池化的应用:降维和保留显著的特征

•Max pooling 是取整个 feature map 区域的最大值作为特征,即一个 max feature操作,在自然语言处理中常用于文本分类(text classification),观察到的特征是一般都是句子的强特征,以便可以区分出是哪一个类别,减少噪音影响。

•Average-pooling 通常是用于句子主题模型(topic model),考虑到一个句子往往不止一个主题标签,这时需要尽量多的句子上下文信息,如果是使用 Max-pooling 的话信息过少,所以使用 Average 的话可以广泛反映这个 feature map 的特征

•K-max pooling:在一个 feature map 上返回K组最大值,即选择 top k 的 feature 结果,不至于省略的太多,也不至于太平均,这种方式还保留了这k个特征的位置信息。

•Chunk-Max Pooling:类似于本文的 dynamic pooling,将 feature map 分为好几个块,具体怎么分块完全看你关注句子的哪几个部分,要定下哪几个部分来进行split 。Chunk-max pooling 和 K-max pooling 的区别在于,后者是事先不对 feature map 进行分割,然后根据值选最大的几块并保留这些值的顺序,前者是先选好切割成几块,然后对每块选该块中最大的值作为该块的结果。这种策略不止在本任务中,在情感分析也有用。比如我在分析句子情感时候,可能比较关注但是(but)这个词,我就可以根据 but 进行分割。原因就是比如一个评价说“某个商品很好,很漂亮,等等等等夸了一大堆, BUT 太贵了买不起”,其实是在含有负面情感在这边,如果 max pooling 那肯定判定是位正面情感,但用这种 chunk-max pooling 方法就能有效甄别出这种情感转折,特征的位置信息在这里就体现的尤为重要。

Event Argument 对事件抽取的促进

Paper原文:[Shulin Liu.etc,2017]  Exploiting Argument Information to Improve Event Detection viaSupervised Attention Mechanisms. 本节图片均来自此论文

 

这篇文章进行一下简单介绍,跟上面一篇文章是同一个研究组进行的,主要强调的是 eventargument 对于 event trigger detection 的重要性。以一个例子说明:

Fired 这个 event trigger 到底应该对应的是哪个事件类型?如果只用 surface text 的话无法判断 Anwar 到底是什么,根据上下文可以得知 former protégé(role=Position)这个argument 角色,则可以辅助判断这个 fired 应该是一个 end-position 的事件 trigger 类型。

这篇文章进一步说明 event trigger identification and classification (ED任务)和event argument identification and classification (AE任务)这两个任务不应该独立去研究,应该把两个任务放在一起 joint 去研究。但 joint 的模型往往作为一个 multi-task 任务,loss 是联合起来进行训练的,语料中 argument 的数目较 trigger 要多得多,则模型偏向去提高 AE 任务。同时 joint 模型往往需要预 predict 一些 trigger candidate , 在预 predict 的过程也没有考虑 Argument 的影响。这篇文章用 supervised attention 来进行借助 argument role 进行 ED 任务, argument word 将会比其他上下文 word 获取更多 attention 。在训练中 attention 值根据实体的类型、上下文等信息进行确定。结构如下所示:

本篇内容的工作突出点就是用了 context 中的实体的类型信息和 supervised attention机制,他们的 attention 机制也就是用标注的 argument 来使 argument 的部分享有更大的 attention 权重,方法比较简单,有兴趣可以原文仔细阅读。

Imitation Learning 和 GAN 在事件抽取中的应用

Paper原文:[T Zhang, H Ji, etc.] Joint Entity and Event Extraction with Generative Adversarial Imitation Learning

本篇文章来自于 Prof. Ji Heng 的研究组,这篇文章站在更高的角度,将 IE 任务中的两种 entity extraction 和 event extraction 结合起来,提出一种端到端的基于模仿学习( imitation learning ) 的联合实体和事件抽取模型,同时为抽取出的实体打上 argument role 的分类标签。并且作者在训练过程中使用了逆强化学习方法 ( inverse reinforcement learning ) 来提高模型的能力.

 

问题描述和举例:

在两个句子中,有着同一个触发词(mention 相同),并有着相似的事件描述和上下文,传统的方法很难通过上下文词汇和语法特征去正确判别这个触发词应该触发哪个事件,属于哪种类型。即模型对于这种要深层次分析语义从而进行触发词识别的能力不够。

举例描述: Death 这个事件触发词可能触发一个 Execute 事件或者一个 Die 事件。我们可以看到这两句话可以认为有相似的 local information(word embeddings)和contextual features(两件事都在描述一个犯罪事件)。因此,传统的有监督学习的方法会去计算 death 这个词在触发词类型上的概率分布,由于在标准数据集中 death 标注为 Die 类型的比 Execute 多,从而会错误标注成为 Die 类型事件。

之后,原文作者对这种错误的原因进行了精彩的分析,如果有兴趣的读者可以转到原文去仔细阅读 introduction 部分。这里总结分析问题如下:首先原文作者提出这种错误是由于缺乏对错误 label 的学习,传统的多分类问题往往使用交叉熵(cross entropy)来仔细研究为什么学习器学的是对的,但对错误的 label 一视同仁,没有对这些错误的label进行深入的分析。模型学习的是提取大量特征,搞各种奇技淫巧来学习怎么正确去标记句子,但有时候却无法处理一些 ambiguous instances ,这种情况往往错误的特征在计算概率时候没有被减少。因此,从错误 label 中去学习,获取更多信息是提高模型 robust 的关键。

另外,原文引入 RL 也很巧妙,还原到人去学习怎么避免错误的场景,然后让机器去模仿人的动作,原文如下:

•To simulate this behavior fortraining an automatic extractor, we could assign explicit scores on those challenging cases – or rewards in terms of Reinforcement Learning (henceforth,RL).

方法部分:

原文方法归结为几点:使用模仿学习的思想用 Q-Learning 来做序列标记任务,找出哪些 word 是 entity 哪些是 trigger 。之后用用 policy gradient 来做事件对应 argument role 的判定,同时值得注意的是在训练过程中 extractor 的 reward 是由 GAN 来动态评估的。

这里简要介绍下 IRL 的引入原因: 实际任务中设计 reward 很困难,从认了专家提供的ground-truth 去反推 reward 有利于该问题。于是,对于给定状态空间 S,动作空间 A, 并且给定决策轨迹数据集 π,每个 π 由一个 s 和 a 的序列集合组成。

IRL 执行思想:

  • 欲使机器做出和 ground-truth 相同的行为,等价于在某个 reward 的环境里求解最优策略,该最优策略产生的轨迹与范例轨迹一致
  • 初始很难获取所有 policy,可以从随机策略开始,迭代求解更好的 reward 函数,基于  reward 获取更好的 policy,最终求得最符合范例数据集的 reward 和 policy

(RL的一些关键部分对应的信息抽取领域的内容)

下面是 QL 做 entity 和 trigger 识别的框架图,这里进行简要介绍,需要读者有一定 RL背景知识。作者使用 Bi-LSTM 做 context embeddings ,然后输入到 forward LSTM 和全连接层去产生预测结果到 Q-Table 里面。

q-table的生成公式为:

 

其中,f_sl 操作就是 forward lstm 和 fully connect layer,然后 s_1,…s_t-1 ,说的是句子中当前词之前的所有词标记的状态, a 对应的是一系列的标记 action , theta 是参数集。 Q-table 主要获取所有分类的得分, extractor 就从 table 中获取 rank 得分最大的标记作为标记。这样在每一步都会计算一个 extractor 的标记和 ground-truth 的标记的差别,以此来计算 reward。

当前打的标记也会用 Bellman Equation 来对 Q-table 中的值不断地进行更新,更新的策略为:

中间那个 max 前面的符号是用来控制当前状态和下个状态的影响的大小。

以 Die 那个例子来看下学习过程:

从 Q-table 可以看到,刚开始 die 的分高,等式 4 会惩罚 Q 值,后面之后如果extractor 产生了一个对的 label Execute , Q 值就会被升高,从而让决策强化。

接下来是判断 Argument role 的工作,由于是借鉴之前工作的,因此这里也简单说一下,就是考虑了 candidate argument  和 trigger 的上下文,得到 contextual embedding,同时也考虑了句子中各个实体的类型信息和 trigger 的类型信息,这种方式之前的 paper 也强调了,做法其实没有太大本质差别。结构框架图如下所示:

文章另一个重点是用 GAN 来进行 reward 评分,通过不断对比 extractor 的标记结果和 ground truth 进行对抗。具体引入的原因是由于序列标注和角色标注都很复杂,所以reward 值应该是动态变化的

•举个例子:作者认为 extractor 应该给那些把触发词标记成实体的情况比那些对触发词没啥特殊标记的情况更低的分值,就是如果对这些情况都预先定义一个 reward 值的话有点 expensive 。所以用 IRL 来动态评估 reward

1)这里对 GAN 进行训练的过程进行阐述: GAN 在训练过程中扩大了正确和错误标记的 rewards 值的差距,即对学习正确的 label 的例子将会给更高 reward 分,学习错误的label 的例子将会适当给更低的 reward 分,这样不断扩大学习中正负标记的 margins。

2)在训练的最后几个 epoch ,就会获取一个比较好的动态的 reward 值,这个 reward 值就可以反过来导向 extractor 去进行正确标记。

总的来说,这篇文章从写法和思想上都是十分有启发性的,鼓励读者在阅读本次简单的介绍之后去实际读一下这篇文章,现在这篇文章挂在 Arxiv 上。

本篇部分介绍了事件抽取的基本步骤,和一些经典的事件抽取任务的方法,希望能对大家有所帮助。同时,我们这次的介绍将分上下两部分,下部分将在之后的公众号进行推文,主要介绍的是一篇 zero-shot 方法在 event extraction 的使用,以及整个事件推理的专题。近年来事件推理逐渐引起注意,包括事理图谱构建、common sense level 的事件起因和反应的推理,事件因果关系推理,事件时序关系等等都将在下一次的推文中进行详细介绍。

参考文献:

1. Huang L, Ji H,Cho K, et al. Zero-Shot Transfer Learning for Event Extraction[J]. arXiv preprint arXiv:1707.01066, 2017.

2. Ahn D. The stages of event extraction[C]//Proceedings of the Workshop on Annotating and Reasoning about Time and Events. Association for Computational Linguistics,2006: 1-8.

3. Hogenboom F,Frasincar F, Kaymak U, et al. An overview of event extraction from text[C]//Workshop on Detection, Representation, and Exploitation of Events in the Semantic Web (DeRiVE 2011) at Tenth International Semantic Web Conference(ISWC 2011). Koblenz, Germany: CEUR‐WS. org, 2011, 779: 48-57.

4. Zhang T, Ji H.Event Extraction with Generative Adversarial Imitation Learning[J]. arXiv preprint arXiv:1804.07881, 2018.

5. Chen Y, Xu L,Liu K, et al. Event extraction via dynamic multi-pooling convolutional neural networks[C]//Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on NaturalLanguage Processing (Volume 1: Long Papers). 2015, 1: 167-176.

6. Liu S, Chen Y,Liu K, et al. Exploiting argument information to improve event detection viasupervised attention mechanisms[C]//Proceedings of the 55th Annual Meeting ofthe Association for Computational Linguistics (Volume 1: Long Papers). 2017, 1:1789-1798.

7. Event extraction from text.Liu Kang, 2017

8. Huang L, CassidyT, Feng X, et al. Liberal event extraction and event schema induction[C]//Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2016, 1: 258-268.

9. Feng X, Qin B,Liu T. A language-independent neural network for event detection[J]. Science China Information Sciences, 2018, 61(9): 092106.

10. Lin H, Lu Y, HanX, et al. Nugget Proposal Networks for Chinese Event Detection[J]. arXiv preprint arXiv:1805.00249, 2018.

OpenKG.CN

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

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

文章转载自公众号

知识工场

 

技术动态 | 事理图谱,下一代知识图谱

 

本文转载自公众号:DataHorizon

人工智能与认知智能

当前人工智能时代下,机器与人类之间的博弈一直在进行着。如图1所示,从1926年达特茅斯会议的召开标志人工智能诞生到深度学习模型在若干人工智能领域大规模应用的如今,人工智能已经走过近60年的时间。人工智能的发展先后经历了两次黄金期以及两次低谷。1957年第一款神经网络的发明点燃了第一次人工智能的高潮,而随后在20世纪70年代,受限于当时的运算资源,并不能完成大规模的数据训练,人工智能一度陷入低谷,直到1982年德普摩尔神经网络的提出以及BP算法的出现使得大规模神经网络训练成为可能后,人工智能才逐渐缓过神来,并提出了全面实现人工智能计算机的目标,掀起了第二个黄金时期。但直到21世纪初,人工智能计算机并未实现以及政府的撤资,又一次将人工智能拉入低谷。随后,在2006年深度学习神经网络取得突破性进展,一直到2015年深度学习算法在语音和视觉识别上取得的成功,再次引领了以深度学习为主流的人工智能时代第三个黄金期。

图1

人工智能起起落落,但人工智能进步的步伐从未停歇。从人工智能的发展阶段来看,人工智能先后经历了从计算智能到感知智能再到认知智能的三个发展阶段。在计算智能时代,以神经网络、遗传算法为代表的学习算法,让机器能够帮助人类存储和快速处理海量数据,使得机器开始像人类一样“能说会算”。感知智能时代,机器能够开始看懂和听懂,并采取一些行动和听懂语音的音箱,帮助人类高效地完成看和听的相关工作。认知智能时代,是人工智能的终极目标,即机器能够像人一样思考,并采取行动,如完全独立驾驶的无人驾驶汽车、自主行动的机器人等,完成全面辅助或替代人类的工作。随着数据、模型、计算能力的全面提升,计算智能和感知智能已经初步实现,而真正实现机器的认知智能依然面临着诸多挑战。

认知智能与知识图谱

认知智能的核心在于机器的辨识、思考以及主动学习。其中,辨识指能够基于掌握的知识进行识别、判断、感知,思考强调机器能够运用知识进行推理和决策,主动学习突出机器进行知识运用和学习的自动化和自主化。这三个方面概括起来,就是强大的知识库、强大的知识计算能力以及计算资源。

知识存在于我们的大脑当中,我们在从事社会活动的过程中,实际上是对知识的获取和使用过程。就知识库言,大致两类知识,一类是常识知识库(commonsense knowledgebase),另一类是百科类知识库(cyclopedia knowledgebase)。常识知识库包括人类认知系统中的概念、语言规则知识库,如现在的wordnet ,mindnet ,Framenet, Probase等,另一类百科知识库,则描述了现实生活中的事实知识(fact)。如Freebase , YAGO , DBpedia等。

以描述实体与实体、实体与属性值为形式化表示的知识图谱目前已是大家耳熟能详的一个概念,而何谓知识图谱?我们可以从几个方面来看,从AI的视角来看,知识图谱是一种理解人类语言的知识库,从数据库视角来看,知识图谱是一种新型的知识存储结构;从知识表示视角来看,知识图谱是计算机理解知识的一种方法;从web视角来看,知识图谱是知识数据之间的一种语义互联。从最初的逻辑语义网(semantic-net)、到语义网络(semantic-web)再到Linked-data,在到现在的大规模应用的知识图谱,已经前前后后经历了将近50年的时间。而知识图谱真正作为一个突出热点走进大家眼球的,还是在2012年以收购freebase作为后台知识图谱的google,以简洁答案、知识卡片的方式颠覆传统文档搜索形式的横空出世,从这个时间算起,也就7年的时间,所以知识图谱既是年老又是年轻的。

知识图谱,是实现认知智能的知识库,是武装认知智能机器人的大脑,这是知识图谱与认知智能的最本质联系,知识图谱,与以深度神经网络为代表的连接主义不同,作为符号主义,从一开始提出就注定了要从知识表示、知识描述、知识计算与推理上不断前行。目前知识图谱在诸如问答、金融、教育、银行、旅游、司法等领域中取得了大规模的运用。基于知识图谱的智能问答、在抓捕本拉登时斩获战功的Palantir、战胜人类的IBM深蓝机器人、颠覆传统网页搜索模式的谷歌知识图谱等等,都显示出了知识图谱的强大生命力。目前,我们以金融领域和全行业领域为试点,开展了相关对研发工作,构建起了全行业11个主流产业链知识图谱,主要包括246个行业、上万个商品品种的行业知识图谱和涵盖A股的上市公司金融知识图谱。

  1、全行业产业链知识图谱

产业链知识图谱,目标是构建起全行的上下行业图谱,行业之间的上下游关系,行业中个大元素之间的关系,例如行业下产品、公司之间的关联等等。为了保证产业链中数据的准确性,我们通过行业研究员人工定义本体,耗时半年时间,构建起了全行业11个主流产业链知识图谱,主要包括246个行业、上万个商品品种,几千家上市公司,共计几百万条关系边的产业链知识图谱,如下图2所示:

图2

2、上市公司金融知识图谱

公司金融领域研究的核心对象,公司作为金融中的重要角色,构建起公司知识全景图谱对于进一步知识整合、公司监测、公司运营等具有显著作用。我们以A股上市公司为基本数据来源和研究对象,构建起涵盖公司、行业、板块、人物、原料、产品等共17类实体,并购、竞争、供应、投资等共16类实体关系,规模达百万级的A股上市公司知识图谱,如下图3所示:

图3

从知识图谱到事理图谱

从知识图谱的本质上来说,是以传统本体概念为基础进行知识组织的,而在知识处理领域,这种传统本体概念依然存在着一些局限性,传统本体对于概念的描述着重对其静态特征的描述,缺乏对动态特征的描述,经典的“网球”问题就是典型的例子。实际上,许多哲学家认为世界是物质和运动的,物质和运动的世界是由事物和事件组成,物质是相对静态的知识形式,反映了客观世界中事物存在的规律。然而,人类的命题记忆是以“事件”为存储单位的,存储的是组成事件的概念及其之间的关系以及事件及其之间的关系。以事件作为知识的基本单元更能反映客观世界的知识,特别是知识的动态性,从认知心理学的角度来看,事件更符合人类的理解与思维习惯。人类主要是以“事件”为单位进行记忆和理解现实世界的,事件关系到多方面的概念,是比概念粒度更大的知识单元。传统本体所使用的概念模型难以反映事件这一更高层次和更复杂的语义信息,模型缺少了更高层次的结构。

从知识刻画上来说,知识图谱的局限主要体现在两个方面:一是对人类知识的刻画上上不具备动态属性。知识图谱中所刻画和描述的知识是静态的非黑即白的一种确定性事实,而现实人类社会当中,知识是动态变化的,知识本身会因为外部条件的变化而失真。另一个是知识图谱在应用上的一种局限性,知识图谱只能回答什么是什么的问题,对包括基于已知知识推断未知知识,对已知知识进行正确性校验的知识推理,从根本上来说也没有跳出“静态”这一属性。在诸如“怎么了”,“接下来会怎么样?”,“为什么”,“怎么做”等问题上,知识图谱显得有些乏力。

 

事实上,目前关于这方面的知识需求应用场景有很多,如金融投资领域有捕捉外部事件、根据事件的逻辑关系进行推理、推演和预测的需求,例如“智利发生地震会对哪些商品标的造成何种影响?”,情报舆情领域有预测事件后续影响的需求、寻找事件发生原因的需求,如“目标市场区域内棉花采购量突然增多、可能的原因有哪些?”。客服及咨询领域有正确定义、刻画客户服务过程中的状态变化,以提高服务精准化的需求,如“客户购买了此产品,如果中途赎回,哪些产品适合再次推荐给客户?”等等。

 

传统知识图谱中的知识是静态的,描述的是实体以及实体之间的关系,这些关系是相对确定和静态的知识,这个可以作为强大的知识库让机器人“才高八斗,学富五车”。但如何使这“八斗才”和“五车学”给“弄活”,让机器学会知识的运用,真正学会思考。那么就需要给这个知识再加上知识的“把玩规则”,形象的来说,就是一套逻辑规则。

图4

举例来说,如图4所示,我们在思考的过程当中,脑海里经常会比如“为什么”,“按以往的经验”、“八成会”、“据我分析”、“这个应该是”、“怎么可能”等词,这些词很形象的表现表示出了我们思考的过程,我们将思考的过程,定义为运用“事理”的过程,所谓“事理”,就是“事情”的道理,是思考的那条路径,这个“事情”就是我们所需要的事件。对于事理,我们可以有多种理解,事理是一套经验总结,是一套对知识的规则,是一套逻辑推理的方法论,是对特定环境下知识在时空域上的展开。图5展示了知识、事件、实体、事理之间的关系,事件高于实体,实体是事件的组成部分,事件是事理的重要组成部分,事理和实体共同组成了知识。

图5

目前,“事理图谱”还是较新的概念,国内多家公司和科研机构都在“事理图谱”的相关研究上进行了探索,如哈尔滨工业大学信息检索实验室刘挺老师团队首先提出了“事理图谱”这一概念,并做了一些实验和基础性的工作[1][2][3];中科院自动化所赵军老师团队,上海大学刘宗田老师团队分别在事件抽取[4]和事件本体表示[5]上取得了丰硕的成果。

与知识图谱的组织形式相仿,实体通过头尾相连,可以组织形成图谱状的知识图谱,事理采用类似的组织方式,可以形成事理图谱。知识图谱与事理图谱两者之间存在着诸多异同之处,我们在参考前人的工作上,结合自己的研究工作,从描述知识、研究对象、构建目标、知识形式等共10个方面进行了总结,如图6所示:

图6

知识图谱描述知识是万物实体,所研究的对象是名词性实体及其属性、关系。事理图谱所要描绘的是一个逻辑社会,研究对象是谓词性事件及其内外联系。两者都是有向图的组织性质,在知识的确定性上,知识图谱中的知识是以事实三元组为存储型的、确定的,知识状态相对静态,变化缓慢,但精度要求极高,实时性要求极高。事理图谱中的知识时一个包含事件、论元集合、逻辑关系等的多元组,知识逻辑是不确定的,存在一种转移概率。在应用上,知识图谱可以完成when / who/ what/ where等常识问题。事理图谱可以回答Why/How等动态问题。传统概念之间的分类关系即上下文关系不同,事件与事件之间除了上下位等分类关系外,还存在非分类关系,包括组成关系、因果关系、并发关系、条件关系、排斥关系等,这些关系一起对现实动态知识种的逻辑知识进行了描述。图7主要列举了事理逻辑的几种类型主要包括因果事理、条件事理、反转事理、顺承事理、顺承事理、上下位事理、组成事理、并发事理共七类事理:

图7

因果事理描述的是认知体系中的一种前因后果联系,前面一个事件会导致后面一事件的发生;条件事理描述的是认知体系中的一种条件结果关系,是一种预设与结果逻辑;反转事理往往描述的是认知体系中的一种互斥逻辑,是一种真假值逻辑;顺承事理描述的认知体系中的一种时间上的偏序关系,是一种先后动作逻辑;组成事理,刻画的是事件之间整体与部分的逻辑;上下位事理,描述的是事件在分类体系中一种逻辑;并发事理,描述的是事件在时间上的一种共生关系,指一个事件发生下另一个事件一定发生;

事理图谱的构建

目前关于事理图谱的构建方式上,主要包括领域专家手动构建以及基于海量文本自动化获取两种方法。前者准确率高但构建成本较大,且规模难以快速增长;后者所见即所得,构建成本较低,规模可快速扩充,能够迅速挖掘出海量逻辑,但缺点是精确度受多方面因素影响,准确率较前者要低。事实上,目前事理逻辑广泛存在于海量文本当中,当我们打开百度或者谷歌搜索引擎,输入“导致”或者“lead to”这一词时,会返回多个包含因果事理的结果,如图8所示。此外,问答社区等资源也为基于海量文本自动化获取事理逻辑提供了可能。

图8

事理逻辑的挖掘,可以分成基于显式因果逻辑的挖掘和隐式因果逻辑的逻辑两种。前者通过人工设定因果模式可以获取大量的因果事件对,例如对于句子“受范冰冰阴阳合同事件牵连,唐德影视、华谊兄弟开盘大跌”,可以结构化出<范冰冰阴阳合同事件,导致,唐德影视、华谊兄弟开盘大跌>这样的因果事件对。通过对原因事件和结果事件进行进一步解析,我们可以得到原因事件的关联主体是人物,即影视明星“范冰冰”,事件的动作是“阴阳合同”,结果事件中关联的主体是两家传媒上市公司,华德影视和华谊兄弟,事件的动作是股价大跌。结合上下文,可进一步明确事件发生的时间信息,为2018年6月4日。对这样的事件对,可进一步抽象泛化成一种逻辑规则,即影视明星“阴阳合同->传媒公司股价下跌”这样一条因果模式链。更进一步,通过对动作本身的情感极性进行泛化,我们可以发现,“阴阳合同”属于负面消息,股价下跌这一事件属于负面影响,因此,可以进一步泛化成“明星负面消息->公司利空”这条更为抽象的因果模式链。这样,通过大量的显示模式对事理逻辑进行结构化,对不同来源的事理知识进行融合并层层抽象,可以得到大规模不同层级的事理逻辑,借助知识图谱首尾相接的方式,我们对构建好的一条条事理逻辑进行链接,就形成了一个图谱形式的事理逻辑脉络,即事理图谱。

说到事理图谱,就不得不说事件表示。事件表示是事理图谱中的重要问题之一,目前学界和业界正在寻求一种尽可能灵活、简单的方式去表示事件。在事件表示上,有上海大学刘宗田老师团队提出的“事件六要素本体模型”[5],即将事件建模成e = { A,O,T,V,P,L}的表示形式, 其中: A 为动作要素; O 为对象要素; T 为时间要素; V 为环境要素; P 为断言要素; L 为语言表现。 而这种表示方式无法直接用于图谱节点表示,更可能成为一种事件描述信息隐藏于图谱事件节点背后。我们在实际的工作当中,尝试了几种事件表示方式,如含义、举例、优缺点如图9所示:

图9

当前人工智能时代下,机器与人类之间的博弈一直在进行着。如图1所示,从1926年达特茅斯会议的召开标志人工智能诞生到深度学习模型在若干人工智能领域大规模应用的如今,人工智能已经走过近60年的时间。人工智能的发展先后经历了两次黄金期以及两次低谷。1957年第一款神经网络的发明点燃了第一次人工智能的高潮,而随后在20世纪70年代,受限于当时的运算资源,并不能完成大规模的数据训练,人工智能一度陷入低谷,直到1982年德普摩尔神经网络的提出以及BP算法的出现使得大规模神经网络训练成为可能后,人工智能才逐渐缓过神来,并提出了全面实现人工智能计算机的目标,掀起了第二个黄金时期。但直到21世纪初,人工智能计算机并未实现以及政府的撤资,又一次将人工智能拉入低谷。随后,在2006年深度学习神经网络取得突破性进展,一直到2015年深度学习算法在语音和视觉识别上取得的成功,再次引领了以深度学习为主流的人工智能时代第三个黄金期。

我们从汉语句法学和语义学的角度出发,全面梳理了上千条事件逻辑关系显示表达模式,构建起了两千万领域新闻资讯库,运用事件抽取、事件对齐、事件融合以及泛化技术,形成了规模约400万的事理图谱,并实现了事理图谱的动态更新。接下来,我们分别介绍在顺承事理图谱和因果事理图谱上的一些成果:

图10分别是部分“出行”和“烹饪”两个顺承子图谱。从中我们看到,围绕着“去丽江”这一事件所产生的顺承逻辑,如“拿#身份证”->“去#售票口”-> “去#买票”->“遇上#旺季”->“去#丽江”这一顺承逻辑,“去#丽江”-> “预订#客栈”->“看过#攻略”->“结合#眼光”->“没有#价值”->“擦亮#眼睛”这一顺承逻辑结构。“去#庄园”->“去#竹林”->“挖#冬笋”->“切成#块”->“配上#鳊鱼”-> “匀以#薯粉”->“成#棒状”->“入#油锅”->“炸成#小块”这一顺承事件链形象地描述了“烹饪”这一事件的时序关系。这种顺承事理逻辑在揭示叙述性与步骤型事务的刻画上是一种很好的形式。

图10

以下分别是以“银行降准”和“智利地震”事件为核心所关联的因果事理逻辑链,今年10月07日,央行宣布银行降准,这势必会造成多骨诺米牌效应,如图11中所示:

图11

银行降准会导致保险股高开、银行股持续走强,银行股持续走强先后带来银行板块集体拉升、板块个股出现普涨状态等结果。在“智利地震”这一事件因果事理图谱中,我们可以看到受波及的一些列后续事件,如高档鱼粉价格上浮、早盘稀土板块高开、国际纸浆价格大幅上涨等事件,这些事件又进一步传导,最终导致之家集体反弹、北京生活用纸普遍提价、沪铝价格波动区间上移等结果。这些因果逻辑在普通人看来,并不能立刻想到,相反的,只有具有专业背景的人员才能有这种逻辑推导思维。如此看来,事理图谱对于这类专业的逻辑链条可以进行良好的组织和刻画。

事理图谱和知识图谱的融合

如上面所介绍到的事理图谱中是以事件为单位一种逻辑链路,而实体识事件的一个重组成部分,通过实体识别和实体链接技术可以将事件中的实体链接到相应的实体知识库当中。如图12所示:“范冰冰阴阳合同违法”这一事件当中,人物“范冰冰”可以链接到包含“范冰冰”这个人物的人物关系图谱,如搜狗人物关系图谱,导致光线传媒、华谊嘉信、华谊兄弟等传媒公司的股价下跌这一事件中,光线传媒、华谊嘉信以及华谊兄弟这些公司类实体,实体可以进一步连接到以公司为实体的公司金融知识图谱,该图谱中包含了公司的主营产品、所属板块、竞争对手等各方面的信息,图13显示了融合后的状态。

图12

图12显示了事理图谱和知识图谱融合后的状态(部分),通过因果关系事件,将事件中的实体进行关联,结合实体之间的关联,可以进一步进行拓展,查询,从而实现整体图谱的联动。

图13

除公司知识图谱与事理图谱的融合之外,我们在产业链知识图谱和事理图谱融合的工作上进行了尝试,如图14所示展示了“澳大利亚锌矿执行复产计划事件”的融合效果子图(部分),从“澳大利亚锌矿执行复产计划事件”缓解相关铅产量恢复等事件出发,可以将事件与“铅”商品这一商品、有色产业链等行业板块类实体与行业相链接,进一步找到相应的商品、个股等信息,通过这种链接和融合,可以进一步对事件进行知识信息的扩展,形成从事理到知识概念的通路。

图14

事理图谱的应用探讨

事理图谱有多种应用场景,我们在实践过程中,主要总结出了以下5种应用形式:

1、基于事理图谱的知识问答。由于后台有以事件和静态知识为核心的事理逻辑,可以在完成“when”,“who”,“what”,“where”等常识问题的同时,进一步回答“how”以及“why”的问题,这种问答的形式既可以是可视化搜索式,也可以是问答形式,如图15所示:

图15

当用户输入“特朗普和金正恩又骂战了会怎么样?”这一问句后,系统能够给出直接的回答“这很有可能会是的美国朝鲜局势更为紧张,朝鲜局势紧张可能会带来全球股市走低、避险情绪升温、金价上涨等一系列影响”。通过对该回答,再配以可视化因果逻辑链的展示方式,可以进一步为这一回答提供佐证。

2、基于事理图谱的消费意图识别。本文在前面说到,顺承事理图谱对具有时序特征的叙述性事件能够很好的刻画,它描绘了叙述性事件的整个阶段。而我们正好可以利用这种阶段性的特征,完成消费推荐的任务。如图16所示:

图16

例如,当用户发出“丽江是个好地方,我想去看看”的状态时,通过分析该用户的消费意图,将消费意图识别为一个出行事件时,通过游走以“丽江出行”这一个顺承图谱可以推出多种消费行为。例如“出机场、看到接待点”这个子事件可以推出“机票预订与推荐”与“接送机”服务;“预订#客栈”这一子事件可以引出“酒店预订”服务,“买卧铺票”这一子事件可引出“火车票预订”这项需求。全局的来看,整个出行图谱可以作为一个整体的出行指南提供给用户,充当用户规划的“探路者”与“规划师”。

 

3、基于事理图谱的重要新闻判别与推荐。大数据时代下,海量新闻在网络上快速传播,新闻个性化推荐以及重要新闻筛选成为了新闻检索中的两个重要任务。目前的推荐算法主要基于协同过滤、基于内容推荐和混合推荐方法,这几种方法从本质上来说都是对内容与用户进行建模并进行相似性计算得到的一种结果。事理图谱的出现,提供了一种重要性判别方式和新闻推荐方式。“历史总是相似的,重要的事情总是周而复始的出现”,在这一假设下,通过对新闻文本进行事件提取,并结合背后的事理图谱,根据事件后续产生影响的重要性可以为整个新闻进行重要性评分,并给出该新闻事件所蕴含的已有事件和未来事件信息。通过这种方式对新闻资讯进行建模和筛选,并结合用户兴趣模型,可以完成重要新闻的判别和推荐,如图17所示:

图17

4、基于事理图谱的知识管理

知识图谱的本质上是一种以实体、实体属性、实体与实体/属性之间关系形成的一个知识库。而由于知识图谱中的知识是动态变化的,尤其在多源知识融合、知识对齐当中,为了保证知识的准确性、实时性,通常需要进行知识管理和编辑,这种操作可以类似成数据库的增、删、改、查操作,图18是我们开发的一个知识图谱编辑和管理工具,该工具可以支持对知识图谱中知识数据的CRUD操作。当然,这种知识更新的方式是人工自动发现并进行编辑,本质上来说,并没有实现知识图谱中数据的全自动更新。

图18

与知识图谱不同,事理图谱这一以事件为实体节点,并融入静态实体的知识组织方式将静态的知识和动态的逻辑规则(前面说到的多种事件关系)形紧密相连,形成一个强大的逻辑链路网络,使得事理图谱天生具备了知识更新指导能力。将事理图谱与实际的业务逻辑系统相结合,并不断赋予事理更全面、更精细的逻辑体系,能够在一方面对根据外界事件知识的变化而对已有静态知识进行及时动态更新,如银行客服系统中的会话流程控制、互斥业务控制,用户邮储状态的更新等,这将提升银行客户系统的体验和智能水平。举一个实际的例子:银行业务中知识图谱中有一条知识数据,即用户同时办理了业务A和业务B,而实际上,办理业务A和办理业务B两者之间存在一种互斥关系,那么则可以通过两个业务办理的先后顺序,更新用户的业务知识信息,将办理业务B这条知识进行移除。类似的例子还有很多。

 

5、基于事理图谱的推理与辅助决策

知识推理是知识图谱的终极目标,基于过去已知知识进行知识推理,采用如事件驱动传导路径等进行知识发现,能够在业务的推理和辅助决策上也能带来一定帮助,如智能投研中的未知风险预警、公司舆论控制等,如图19展示了我们目前开发形成的事件驱动工具,通过人工自定义构造传导链,进行既定模式检索,可以完成对既定知识逻辑路线的发现与探索。

图19

以上图中描述的“寻迹”模式进行逻辑链条传导的方式不同,基于事理图谱的事件传导中的逻辑联系更为接近于人脑中的真实逻辑链条。前者传导的路径存在着一个基本型的假设,即知识与知识之间的属性或关系通过人工方式强制地进行映射和编制,其中有个十分明显的缺陷就是传导边上的逻辑概率量化问题。

 

“事理图谱”的出现,则从事件状态的逻辑转移上为这种推理机制提供了一个新的方向。如图20所示的demo所示,用户输入一个事件点击提交之后,运用事件规范化和事件相似性计算等方法,我们会在后台400万个事理图谱找到一个与用户输入事件最为相似的一个事件,以该事件为核心会返回多条相似事件所造成的影响事件。针对影响事件,我们运用事件重要性判定技术和事件实体链接技术对影响事件进行过滤,使得造成的事件中一定是某种商品或者公司的类似事件,这种方式能够就用户给定的事件,给出一个最为直接了当的标的结果。图20中展示了以“螺纹钢价格上涨”为核心的因果逻辑传导推理链条,在经过不断进行链条的推理扩展之后,步步推理至各类实体事件后最终产生的结果图。从一度推理的“螺纹钢价格上涨”导致废钢库存小幅减少,到小麦期货小幅收低等多层推理结果等,能够在一定程度上描绘出整个逻辑链条的传导机制。

图20

当然,基于因果事理图谱的逻辑影响推理仍然存在着诸多不足,比如多层逻辑推理上的效应传导量化与误差传播问题,事件对齐与泛化问题,这些对事理逻辑的准确性都有着较大的影响,这都是后续努力攻克的方向。

事理图谱的未来和挑战

知识图谱从提出至今,经过技术的更新和体系的逐步完善,已经在各方面得到了一定规模的运用,但在描述动态现实社会知识和认知智能思考上还存在一定不足,如何解决以上两个问题,赋予知识图谱更大的力量,将是未来知识图谱努力的方向。就知识而言,静态的知识需要一个上层的知识运用逻辑体系,一个知识逻辑体系需要底层强大的知识库作为有效承载,事理图谱,作为一个新的知识组织、表示和管理方式,是认知智能的一个重要突破口。事理图谱是知识图谱“动起来”的神经,知识图谱是事理图谱运行的血肉载体,描述知识逻辑架构的事理图谱与刻画静态概念知识内容的知识图谱携手并进将是未来的一个趋势。

事理图谱是一个庞大的课题,未来还有很长的路要走,如何找到一种灵活的事件表示方式,事理的执行、预测和推演机制,构造出一种知识的自我更新和生长方式,最终实现机器知识的自我更新和生长,将是未来漫漫长路中需要攻克的难题。得益于前人在事理图谱上的一系列非常有启发性的探索工作,我们在知识图谱、事理图谱上的应用场景、技术理论、技术实现上做了一些基础性的推进工作,未来,我们将进一步细化事理关系,完善事理图谱各方面的技术体系,深化事理图谱的构建以及在场景中的应用,愿同各位一道,在通往认知智能的道路上,努力前行!

 

我们将实现动态更新的400万事理图谱与商品产业链图谱、上市公司金融图谱进行融合,并运用事件标准化、实体链接、融合以及事件重要性判定等技术对事理逻辑进行约束,研制上线了商品金融领域事理图谱Demo,Demo地址:http://39.106.1.94:8080  (请复制链接到PC浏览器中打开),欢迎体验并提出宝贵意见。

参考文献

[1]中科院赵军,《开放域事件抽取》, https://www.leiphone.com/news/201807/2QQZ2aRIZNHFODBY.html

[2]哈工大信息检索实验室,《事理图谱:事件演化的规律和模式》, http://blog.sina.com.cn/s/blog_72d083c70102y3jv.html

[3]哈工大信息检索实验室,《抽象因果事理图谱的构建和应用》, http://www.sohu.com/a/137802985_657157

[4]哈工大信息检索实验室,《从知识图谱到事理图谱》,https://www.leiphone.com/news/201711/Fx6Mgs9WRPBshnIG.html

[5]刘宗田等,《面向事件的本体研究》[J],计算机科学,2009, vol.36

OpenKG.CN

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

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

文章转载自公众号

DataHorizon