论文浅尝 | Aligning Knowledge Base and Document Embedding Models

 

本文是我们于苏黎世大学合作的关注与知识图谱和文本对齐的论文,发表于ISWC2018.

 

文本和知识图谱都包含了丰富的信息, 其中知识图谱用结构化的三元组表示信息,文本用自由文本形式表示信息,信息表示的差异给知识图谱和文本融合对齐造成了困难,本文关注于如何将知识图谱于文本进行对齐,并提出了基于正则的多任务学习的对齐模型KADE。

 

文本选择了将知识图谱的实体和描述实体的文本进行对齐,首先将文本和知识图谱都通过表示学习映射到向量空间,学习到文本和实体的向量表示,在学习过程中加入正则约束使表示同一实体的实体向量和描述文本在向量空间中尽可能接近,知识图谱和文本的表示学习模型交替进行训练,从而在不影响文本和知识图谱各自的表示学习效果的情况下实现对齐。KADE的核心想法如下:

本文的实验主要采用了三个数据集,FB15k, FB40K和DBP50。实验中知识图谱表示学习采用了TransE,TransH 和TransD,并在链接预测任务上进行了测试,实验结果如下并表明了KADE对知识图谱表示学习模型本身的效果没有影响且稍有提升。

实验中文本表示学习模型采用了PV-DM, 并在文本分类任务上进行了测试,实验结果如下并标明了KADE对文本表示学习模型的效果没有影响且有明显提升。

本文还验证了KADE的对齐效果,提出了一个评价对齐效果的指标normalizedalignment score, 这是一个介于0到1之间的值且值越大说明对齐效果越好。我们构造了一个对齐的baseline通过非线性函数实现文本表示学习向量空间和知识图谱表示学习向量空间的互相转换,实验结果如下:

从上图的实验结果能够看出,简单了非线性空间映射几乎无法完成对齐任务,同时KADE实现了知识图谱实体和实体描述文本的对齐。

 

对本文有兴趣的读者欢迎阅读原文~

 

笔记整理:张文,浙江大学在读博士,研究方向为知识图谱的表示学习,推理和可解释。

OpenKG.CN

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

 

论文浅尝 | AMUSE: 基于 RDF 数据的多语言问答语义解析方法

 

来源:ISWC 2017

链接:https://link.springer.com/content/pdf/10.1007%2F978-3-319-68288-4.pdf

 

本文主要关注基于RDF数据的多语言问答任务中,对不同语言问句的语义分析工作。作者提出一种基于DUDES(Dependency-based Underspecified Discourse Representation Structures)的因子图推理方法,对多语言问句中的词进行角色定义和识别,并根据获取到的语义解析结果,规则生成问题的SPARQL。文中表示,使用因子图进行推理对语言类型的敏感程度较低,是一种有效的多语言语义解析方法。模型的性能评测基于QALD-6发布的英语,德语以及西班牙语数据。

动机

多语言问答是 QALD 提出的一个问答子任务,目标是将给定的多语言问题映射到知识库中或是得到对应的SPARQL。

 

例如:问句“Who createdWikipedia?” 目标生成的SPARQL为

SELECT DISTINCT ?uri WHERE { dbr:Wikipedia dbo:author ?uri .}

 

多语言问答的一个主要难点在于“语义鸿沟”,当问题语言与知识库语言不相同的时候,就无法直接生成有效的映射。虽然机器翻译模型可以实现语言之间的转换,但是存在两个明显局限:其一,现有的双语或者多语言平行问答语料数量不足以训练出高质量的机器翻译模型;其二,基于QALD定义的跨语言问答任务,语言的转换完全取决于对问题句子的转换,然而问句中可能包含部分噪声信息,影响翻译的效果。

为了解决语义鸿沟,作者提出了AMUSE——一个基于因子图推理的跨语言解析模型。

方法

AMUSE的方法主要由两步推理构成:

1.    L2KB

这一步以实体链接为目标,将问题中的局部与知识库相关联

2.    QC

利用 L2KB 的链接结果,以及问题中的主要关键词的词类/词性等因素,构建问句的逻辑表达形式(SPARQL)

关键技术:DUDES(Dependency-based Underspecified Discourse Representation Structures),一种用于指定意义表示及构成的结构化方式。

模型流程如图 2 所示,这里为了方便读者阅读,作者以英语问题为例子来表现推理过程,使用其他语言的过程也是一样。

描述如下:

1.    输入问句为“Who created Wikipedia”,首先得到对应的依存解析树

2. 对问句中的词进行 L2KB 推理过程,找到 Wikipedia 链接到的知识库中实体:Wikipedia,以及 created 链接到知识库中的属性:author,细节如图3,此时的结果构成的部分SPARQL成分为:

3.    进入 QC 推理过程,根据问句中各词的词性,及依存关系,给出问句中疑问词的推理标签,此时完成 SPARQL 构成如:

SELECT DISTINCT ?y WHERE { dbr:Wikipedia dbo:author ?y .}

对于问题语言与知识库不相同的案例,作者提出的处理方式是利用多语言词典 Dict.cc 的词级别翻译配合 word embedding 检索找到知识库中可能的目标实体。

 

实验

文章表示,由于本工作是首个多语言语义解析器,为了测试模型性能,作者构建了多种词典+word embedding 的组合,分别在英,德,西班牙语上进行 Linking 与 QA 的两组实验,评价指标为 F1 值,结果如表 1:

总结

文章的主要贡献在于提出了一个具备语言通用性的语义解析方法,并且在QALD的定义下,提出了一种词典+embedding相似性检索的方式应对语义鸿沟(用于应对没有平行语料训练翻译模型的情况)。

 

 

论文笔记整理:谭亦鸣,东南大学博士生,研究兴趣:知识问答,自然语言处理,机器翻译

OpenKG.CN

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

 

技术动态 | 北京大学计算机所邹磊教授研究组开源面向 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)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

 

领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践

 

本文转载自公众号:美团技术团队

本文介绍了大众点评搜索核心排序层模型的演化之路,包括结合知识图谱信息构建适合搜索场景的Listwise深度学习排序模型LambdaDNN以及特征工程实践和相关工具建设。

1. 引言

挑战与思路

搜索是大众点评App上用户进行信息查找的最大入口,是连接用户和信息的重要纽带。而用户搜索的方式和场景非常多样,并且由于对接业务种类多,流量差异大,为大众点评搜索(下文简称点评搜索)带来了巨大的挑战,具体体现在如下几个方面:

  • 意图多样:用户查找的信息类型和方式多样。信息类型包括POI、榜单、UGC、攻略、达人等。以找店为例,查找方式包括按距离、按热度、按菜品和按地理位置等多种方式。例如用户按照品牌进行搜索时,大概率是需要寻找距离最近或者常去的某家分店;但用户搜索菜品时,会对菜品推荐人数更加敏感,而距离因素会弱化。
  • 业务多样:不同业务之间,用户的使用频率、选择难度以及业务诉求均不一样。例如家装场景用户使用频次很低,行为非常稀疏,距离因素弱,并且选择周期可能会很长;而美食多为即时消费场景,用户行为数据多,距离敏感。
  • 用户类型多样:不同的用户对价格、距离、口味以及偏好的类目之间差异很大;搜索需要能深度挖掘到用户的各种偏好,实现定制化的“千人千面”的搜索。
  • LBS的搜索:相比电商和通用搜索,LBS的升维效应极大地增加了搜索场景的复杂性。例如对于旅游用户和常驻地用户来说,前者在搜索美食的时候可能会更加关心当地的知名特色商户,而对于距离相对不敏感。

上述的各项特性,叠加上时间、空间、场景等维度,使得点评搜索面临比通用搜索引擎更加独特的挑战。而解决这些挑战的方法,就需要升级NLP(Natural Language Processing,自然语言处理)技术,进行深度查询理解以及深度评价分析,并依赖知识图谱技术和深度学习技术对搜索架构进行整体升级。在美团NLP中心以及大众点评搜索智能中心两个团队的紧密合作之下,经过短短半年时间,点评搜索核心KPI在高位基础上仍然大幅提升,是过去一年半涨幅的六倍之多,提前半年完成全年目标。

基于知识图谱的搜索架构重塑

美团NLP中心正在构建全世界最大的餐饮娱乐知识图谱——美团大脑(相关信息请参见《美团大脑:知识图谱的建模方法及其应用》)。它充分挖掘关联各个场景数据,用NLP技术让机器“阅读”用户公开评论,理解用户在菜品、价格、服务、环境等方面的喜好,构建人、店、商品、场景之间的知识关联,从而形成一个“知识大脑”[1]。通过将知识图谱信息加入到搜索各个流程中,我们对点评搜索的整体架构进行了升级重塑,图1为点评搜索基于知识图谱搭建的5层搜索架构。本篇文章是“美团大脑”系列文章第二篇(系列首篇文章请参见《美团餐饮娱乐知识图谱——美团大脑揭秘》),主要介绍点评搜索5层架构中核心排序层的演变过程,文章主要分为如下3个部分:

  • 核心排序从传统机器学习模型到大规模深度学习模型的演进。
  • 搜索场景深度学习排序模型的特征工程实践。
  • 适用于搜索场景的深度学习Listwise排序算法——LambdaDNN。

图1 基于知识图谱的点评搜索5层架构

2. 排序模型探索与实践

搜索排序问题在机器学习领域有一个单独的分支,Learning to Rank(L2R)。主要分类如下:

  • 根据样本生成方法和Loss Function的不同,L2R可以分为Pointwise、Pairwise、Listwise。
  • 按照模型结构划分,可以分为线性排序模型、树模型、深度学习模型,它们之间的组合(GBDT+LR,Deep&Wide等)。

在排序模型方面,点评搜索也经历了业界比较普遍的迭代过程:从早期的线性模型LR,到引入自动二阶交叉特征的FM和FFM,到非线性树模型GBDT和GBDT+LR,到最近全面迁移至大规模深度学习排序模型。下面先简单介绍下传统机器学习模型(LR、FM、GBDT)的应用和优缺点,然后详细介绍深度模型的探索实践过程。

传统机器学习模型

图2 几种传统机器学习模型结构

  • LR可以视作单层单节点的线性网络结构。模型优点是可解释性强。通常而言,良好的解释性是工业界应用实践比较注重的一个指标,它意味着更好的可控性,同时也能指导工程师去分析问题优化模型。但是LR需要依赖大量的人工特征挖掘投入,有限的特征组合自然无法提供较强的表达能力。
  • FM可以看做是在LR的基础上增加了一部分二阶交叉项。引入自动的交叉特征有助于减少人工挖掘的投入,同时增加模型的非线性,捕捉更多信息。FM能够自动学习两两特征间的关系,但更高量级的特征交叉仍然无法满足。
  • GBDT是一个Boosting的模型,通过组合多个弱模型逐步拟合残差得到一个强模型。树模型具有天然的优势,能够很好的挖掘组合高阶统计特征,兼具较优的可解释性。GBDT的主要缺陷是依赖连续型的统计特征,对于高维度稀疏特征、时间序列特征不能很好的处理。

深度神经网络模型

随着业务的发展,在传统模型上取得指标收益变得愈发困难。同时业务的复杂性要求我们引入海量用户历史数据,超大规模知识图谱特征等多维度信息源,以实现精准个性化的排序。因此我们从2018年下半年开始,全力推进L2核心排序层的主模型迁移至深度学习排序模型。深度模型优势体现在如下几个方面:

  • 强大的模型拟合能力:深度学习网络包含多个隐藏层和隐藏结点,配合上非线性的激活函数,理论上可以拟合任何函数,因此十分适用于点评搜索这种复杂的场景。
  • 强大的特征表征和泛化能力:深度学习模型可以处理很多传统模型无法处理的特征。例如深度网络可以直接中从海量训练样本中学习到高维稀疏ID的隐含信息,并通过Embedding的方式去表征;另外对于文本、序列特征以及图像特征,深度网络均有对应的结构或者单元去处理。
  • 自动组合和发现特征的能力:华为提出的DeepFM,以及Google提出的DeepCrossNetwork可以自动进行特征组合,代替大量人工组合特征的工作。

下图是我们基于Google提出的Wide&Deep模型搭建的网络结构[2]。其中Wide部分输入的是LR、GBDT阶段常用的一些细粒度统计特征。通过较长周期统计的高频行为特征,能够提供很好的记忆能力。Deep部分通过深层的神经网络学习Low-Order、高维度稀疏的Categorical型特征,拟合样本中的长尾部分,发现新的特征组合,提高模型的泛化能力。同时对于文本、头图等传统机器学习模型难以刻画的特征,我们可以通过End-to-End的方式,利用相应的子网络模型进行预处理表示,然后进行融合学习。

图3 Deep&Wide模型结构图

3. 搜索深度排序模型的特征工程实践

深度学习的横空出世,将算法工程师从很多人工挖掘和组合特征的事情中解放出来。甚至有一种论调,专做特征工程的算法工程师可能面临着失业的风险。但是深度学习的自动特征学习目前主要集中体现在CV领域,CV领域的特征数据是图片的像素点——稠密的低阶特征,深度学习通过卷积层这个强力工具,可以自动对低阶特征进行组合和变换,相比之前人工定义的图像特征从效果上来说确实更加显著。在NLP领域因为Transformer的出现,在自动特征挖掘上也有了长足的进步,BERT利用Transformer在多个NLP Task中取得了State-of-The-Art的效果。

但是对于CTR预估和排序学习的领域,目前深度学习尚未在自动特征挖掘上对人工特征工程形成碾压之势,因此人工特征工程依然很重要。当然,深度学习在特征工程上与传统模型的特征工程也存在着一些区别,我们的工作主要集中在如下几个方面。

3.1 特征预处理

  • 特征归一化:深度网络的学习几乎都是基于反向传播,而此类梯度优化的方法对于特征的尺度非常敏感。因此,需要对特征进行归一化或者标准化以促使模型更好的收敛。
  • 特征离散化:工业界一般很少直接使用连续值作为特征,而是将特征离散化后再输入到模型中。一方面因为离散化特征对于异常值具有更好的鲁棒性,其次可以为特征引入非线性的能力。并且,离散化可以更好的进行Embedding,我们主要使用如下两种离散化方法:
    • 等频分桶:按样本频率进行等频切分,缺失值可以选择给一个默认桶值或者单独设置分桶。
    • 树模型分桶:等频离散化的方式在特征分布特别不均匀的时候效果往往不好。此时可以利用单特征结合Label训练树模型,以树的分叉点做为切分值,相应的叶子节点作为桶号。
  • 特征组合:基于业务场景对基础特征进行组合,形成更丰富的行为表征,为模型提供先验信息,可加速模型的收敛速度。典型示例如下:
    • 用户性别与类目之间的交叉特征,能够刻画出不同性别的用户在类目上的偏好差异,比如男性用户可能会较少关注“丽人”相关的商户。
    • 时间与类目之间的交叉特征,能够刻画出不同类目商户在时间上的差异,例如,酒吧在夜间会更容易被点击。

3.2 万物皆可Embedding

深度学习最大的魅力在于其强大的特征表征能力,在点评搜索场景下,我们有海量的用户行为数据,有丰富的商户UGC信息以及美团大脑提供的多维度细粒度标签数据。我们利用深度学习将这些信息Embedding到多个向量空间中,通过Embedding去表征用户的个性化偏好和商户的精准画像。同时向量化的Embedding也便于深度模型进一步的泛化、组合以及进行相似度的计算。

3.2.1 用户行为序列的Embedding

用户行为序列(搜索词序列、点击商户序列、筛选行为序列)包含了用户丰富的偏好信息。例如用户筛选了“距离优先”时,我们能够知道当前用户很有可能是一个即时消费的场景,并且对距离较为敏感。行为序列特征一般有如下图所示的三种接入方式:

Pooling:序列Embedding后接入Sum/Average Pooling层。此方式接入成本低,但忽略了行为的时序关系。

RNN:LSTM/GRU接入,利用循环网络进行聚合。此方式能够考虑行为序列的时序关系;代价是增大了模型复杂度,影响线上预测性能。

Attention:序列Embedding后引入Attention机制,表现为加权的Sum Pooling;相比LSTM/GRU计算开销更低[4]。

图4 行为序列特征接入的几种方法

同时,为了突显用户长期偏好和短期偏好对于排序的不同影响,我们按照时间维度对行为序列进行了划分:Session、半小时、一天、一周等粒度,也在线上取得了收益。

3.2.2 用户ID的Embedding

一种更常见的刻画用户偏好的方式,是直接将用户ID经过Embedding后作为特征接入到模型中,但是最后上线的效果却不尽如人意。通过分析用户的行为数据,我们发现相当一部分用户ID的行为数据较为稀疏,导致用户ID的Embedding没有充分收敛,未能充分刻画用户的偏好信息。

Airbnb发表在KDD 2018上的文章为这种问题提供了一种解决思路[9]——利用用户基础画像和行为数据对用户ID进行聚类。Airbnb的主要场景是为旅游用户提供民宿短租服务,一般用户一年旅游的次数在1-2次之间,因此Airbnb的用户行为数据相比点评搜索会更为稀疏一些。

图5 按照用户画像和行为信息聚类

如上图所示,将用户画像特征和行为特征进行离散分桶,拼接特征名和所属桶号,得到的聚类ID为:US_lt1_pn3_pg3_r3_5s4_c2_b1_bd2_bt2_nu3。

我们也采取了类似Airbnb的方案,稀疏性的问题得到了很好的解决,并且这样做还获得了一些额外的收益。大众点评作为一个本地化的生活信息服务平台,大部分用户的行为都集中自己的常驻地,导致用户到达一个新地方时,排序个性化明显不足。通过这种聚类的方式,将异地有相同行为的用户聚集在一起,也能解决一部分跨站的个性化问题。

3.2.3 商户信息Embedding

商户Embedding除了可以直接将商户ID加入模型中之外,美团大脑也利用深度学习技术对UGC进行大量挖掘,对商家的口味、特色等细粒度情感进行充分刻画,例如下图所示的“好停车”、“菜品精致”、“愿意再次光顾”等标签。

图6 美团大脑提供的商家细粒度情感标签

这些信息与单纯的商户星级、点评数相比,刻画的角度更多,粒度也更细。我们将这些标签也进行Embedding并输入到模型中:

  • 直连:将标签特征做Pooling后直接输入模型。这种接入方式适合端到端的学习方式;但受输入层大小限制,只能取Top的标签,容易损失抽象实体信息。
  • 分组直连:类似于直连接入的方式,但是先对标签进行分类,如菜品/风格/口味等类别;每个分类取Top N的实体后进行Pooling生成不同维度的语义向量。与不分组的直连相比,能够保留更多抽象信息。
  • 子模型接入:可以利用DSSM模型,以标签作为商户输入学习商户的Embedding表达。此种方式能够最大化保留标签的抽象信息,但是线上实现和计算成本较高。

3.2.4 加速Embedding特征的收敛

在我们的深度学习排序模型中,除了Embedding特征,也存在大量Query、Shop和用户维度的强记忆特征,能够很快收敛。而Embedding特征是更为稀疏的弱特征,收敛速度较慢,为了加速Embedding特征的收敛,我们尝试了如下几种方案:

  • 低频过滤:针对出现频率较低的特征进行过滤,可以很大程度上减少参数量,避免过拟合。
  • 预训练:利用多类模型对稀疏Embedding特征进行预训练,然后进入模型进行微调:
    • 通过无监督模型如Word2vec、Fasttext对用户-商户点击关系建模,生成共现关系下的商户Embedding。
    • 利用DSSM等监督模型对Query-商户点击行为建模得到Query和商户的Embedding。
  • Multi-Task:针对稀疏的Embedding特征,单独设置一个子损失函数,如下图所示。此时Embedding特征的更新依赖两个损失函数的梯度,而子损失函数脱离了对强特征的依赖,可以加快Embedding特征的收敛。

图7 Multi-Task加速Embedding特征收敛

3.3 图片特征

图片在搜索结果页中占据了很大的展示面积,图片质量的好坏会直接影响用户的体验和点击,而点评商户首图来自于商户和用户上传的图片,质量参差不齐。因此,图片特征也是排序模型中较为重要的一类。目前点评搜索主要用了以下几类图片特征:

  • 基础特征:提取图片的亮度、色度饱和度等基础信息,进行特征离散化后得到图片基础特征。
  • 泛化特征:使用ResNet50进行图片特征提取[3],通过聚类得到图片的泛化特征。
  • 质量特征:使用自研的图片质量模型,提取中间层输出,作为图片质量的Embedding特征。
  • 标签特征:提取图片是否是食物、环境、价目表、Logo等作为图片分类和标签特征。

图8 图片特征接入

4. 适用于搜索场景的深度学习Listwise排序算法:LambdaDNN

4.1 搜索业务指标与模型优化目标的Gap

通常模型的预测目标与业务指标总会存在一些Gap。如果模型的预测目标越贴近业务目标,越能保证模型优化的同时业务指标也能够有相应的提升;反之则会出现模型离线指标提升,但线上关键业务指标提升不明显,甚至出现负向的问题。工业届大部分深度学习排序采用Pointwise的Log Loss作为损失函数,与搜索业务指标有较大的Gap。体现在如下两个方面:

  • 搜索业务常用的指标有QV_CTR或者SSR(Session Success Rate),更关心的是用户搜索的成功率(有没有发生点击行为);而Pointwise的Log Loss更多是关注单个Item的点击率。
  • 搜索业务更关心排在页面头部结果的好坏,而Pointwise的方法则对于所有位置的样本一视同仁。

图9 Pointwise和Listwise优化目标的区别

基于上述理由,我们对于深度学习模型的损失函数进行了优化。

4.2 优化目标改进:从Log Loss到NDCG

为了让排序模型的优化目标尽量贴近搜索业务指标,需要按照Query计算损失,且不同位置的样本具有不同的权重。搜索系统常用的指标NDCG(Normalized Discounted Cumulative Gain)相较于Log Loss显然更贴近搜索业务的要求,NDCG计算公式如下:

累加部分为DCG(Discounted Cumulative Gain)表示按照位置折损的收益,对于Query下的结果列表l,函数G表示对应Doc的相关度分值,通常取指数函数,即G(lj)=2lj-1(lj表示的是相关度水平,如{0,1,2});函数 η 即位置折损,一般采用 η(j)=1/log(j+1),Doc与Query的相关度越高且位置越靠前则DCG值会越大。另外,通常我们仅关注排序列表页前k位的效果,Zk 表示 DCG@k 的可能最大值,以此进行归一化处理后得到的就是NDCG@k。

问题在于NDCG是一个处处非平滑的函数,直接以它为目标函数进行优化是不可行的。LambdaRank提供了一种思路:绕过目标函数本身,直接构造一个特殊的梯度,按照梯度的方向修正模型参数,最终能达到拟合NDCG的方法[6]。因此,如果我们能将该梯度通过深度网络进行反向传播,则能训练一个优化NDCG的深度网络,该梯度我们称之为Lambda梯度,通过该梯度构造出的深度学习网络称之为LambdaDNN。

要了解Lambda梯度需要引入LambdaRank。LambdaRank模型是通过Pairwise来构造的,通常将同Query下有点击样本和无点击样本构造成一个样本Pair。模型的基本假设如下式所示,令Pij为同一个Query下Doci相比Docj更相关的概率,其中si和sj分别为Doci和Docj的模型得分:

使用交叉熵为损失函数,令Sij表示样本Pair的真实标记,当Doci比Docj更相关时(即Doci有被用户点击,而Docj没有被点击),有Sij=1,否则为-1;则损失函数可以表示为:

在构造样本Pair时,我们可以始终令i为更相关的文档,此时始终有Sij≡1,代入上式并进行求导,则损失函数的梯度为:

到目前为止,损失函数的计算过程中并未考虑样本所在的位置信息。因此进一步对梯度进行改造,考虑Doci和Docj交换位置时的NDCG值变化,下式即为前述的Lambda梯度。可以证明,通过此种方式构造出来的梯度经过迭代更新,最终可以达到优化NDCG的目的。

Lambda梯度的物理意义如下图所示。其中蓝色表示更相关(用户点击过)的文档,则Lambda梯度更倾向于位置靠上的Doc得到的提升更大(如红色箭头所示)。有了Lambda梯度的计算方法,训练中我们利用深度网络预测同Query下的Doc得分,根据用户实际点击Doc的情况计算Lambda梯度并反向传播回深度网络,则可以得到一个直接预测NDCG的深度网络。

图10 Lambda梯度的物理意义

4.3 LambdaDNN的工程实施

我们利用TensorFlow分布式框架训练LambdaDNN模型。如前文所述,Lambda梯度需要对同Query下的样本进行计算,但是正常情况下所有的样本是随机Shuffle到各个Worker的。因此我们需要对样本进行预处理:

  • 通过QueryId进行Shuffle,将同一个Query的样本聚合在一起,同一个Query的样本打包进一个TFRecord。
  • 由于每次请求Query召回的Doc数不一样,对于可变Size的Query样本在拉取数据进行训练时需要注意,TF会自动补齐Mini-Batch内每个样本大小一致,导致输入数据中存在大量无意义的默认值样本。这里我们提供两点处理方式:
    • MR过程中对Key进行处理,使得多个Query的样本聚合在一起,然后在训练的时候进行动态切分。
    • 读取到补齐的样本,根据设定的补齐标记获取索引位,去除补齐数据。

图11 Lambda梯度的分布式实现

为了提升训练效率,我们与基础研发平台数据平台中心紧密协同,一起探索并验证了多项优化操作:

  • 将ID类特征的映射等操作一并在预处理中完成,减少多轮Training过程中的重复计算。
  • 将样本转TfRecord,利用RecordDataSet方式读取数据并计算处理,Worker的计算性能大概提升了10倍。
  • Concat多个Categorical特征,组合成Multi-Hot的Tensor进行一次Embedding_Lookup操作,减少Map操作的同时有助于参数做分片存储计算。
  • 稀疏Tensor在计算梯度以及正则化处理时保留索引值,仅对有数值的部分进行更新操作。
  • 多个PS服务器间进行分片存储大规模Tensor变量,减少Worker同步更新的通讯压力,减少更新阻塞,达到更平滑的梯度更新效果。

整体下来,对于30亿左右的样本量、上亿级别的特征维度,一轮迭代大概在半小时内完成。适当的增加并行计算的资源,可以达到分钟级的训练任务。

4.4 进一步改进优化目标

NDCG的计算公式中,折损的权重是随着位置呈指数变化的。然而实际曝光点击率随位置变化的曲线与NDCG的理论折损值存在着较大的差异。

对于移动端的场景来说,用户在下拉滑动列表进行浏览时,视觉的焦点会随着滑屏、翻页而发生变动。例如用户翻到第二页时,往往会重新聚焦,因此,会发现第二页头部的曝光点击率实际上是高于第一页尾部位置的。我们尝试了两种方案去微调NDCG中的指数位置折损:

  • 根据实际曝光点击率拟合折损曲线:根据实际统计到的曝光点击率数据,拟合公式替代NDCG中的指数折损公式,绘制的曲线如图12所示。
  • 计算Position Bias作为位置折损:Position Bias在业界有较多的讨论,其中[7][8]将用户点击商户的过程分为观察和点击两个步骤:a.用户需要首先看到该商户,而看到商户的概率取决于所在的位置;b.看到商户后点击商户的概率只与商户的相关性有关。步骤a计算的概率即为Position Bias,这块内容可以讨论的东西很多,这里不再详述。

图12 真实位置折损与理论折损的差别

经过上述对NDCG计算改造训练出的LambdaDNN模型,相较Base树模型和Pointwise DNN模型,在业务指标上有了非常显著的提升。

图13 LambdaDNN离线NDCG指标与线上PvCtr效果对比

4.5 Lambda深度排序框架

Lambda梯度除了与DNN网络相结合外,事实上可以与绝大部分常见的网络结构相结合。为了进一步学习到更多交叉特征,我们在LambdaDNN的基础上分别尝试了LambdaDeepFM和LambdaDCN网络;其中DCN网络是一种加入Cross的并行网络结构,交叉的网络每一层的输出特征与第一层的原始输入特征进行显性的两两交叉,相当于每一层学习特征交叉的映射去拟合层之间的残差。

图14 DCN模型结构

离线的对比实验表明,Lambda梯度与DCN网络结合之后充分发挥了DCN网络的特点,简洁的多项式交叉设计有效地提升模型的训练效果。NDCG指标对比效果如下图所示:

图15 Lambda Loss与DCN网络结果的效果

5. 深度学习排序诊断系统

深度学习排序模型虽然给业务指标带来了大幅度的提升,但由于深度学习模型的“黑盒属性”导致了巨大的解释性成本,也给搜索业务带来了一些问题:

  • 日常搜索Bad Case无法快速响应:搜索业务日常需要应对大量来自于用户、业务和老板们的“灵魂拷问”,“为何这个排序是这样的”,“为什么这家商户质量跟我差不多,但是会排在我的前面”。刚切换到深度学习排序模型的时候,我们对于这样的问题显得手足无措,需要花费大量的时间去定位问题。
  • 无法从Bad Case中学习总结规律持续优化:如果不明白为什么排序模型会得出一个很坏的排序结果,自然也无法定位模型到底出了什么问题,也就无法根据Bad Case总结规律,从而确定模型和特征将来的优化方向。
  • 模型和特征是否充分学习无从得知:新挖掘一些特征之后,通常我们会根据离线评测指标是否有提升决定特征是否上线。但是,即使一个有提升的特征,我们也无法知道这个特征是否性能足够好。例如,模型拟合的距离特征,会不会在特定的距离段出现距离越远反而打分越高的情况。

这些问题都会潜在带来一些用户无法理解的排序结果。我们需要对深度排序模型清晰地诊断并解释。

关于机器学习模型的可解释性研究,业界已经有了一些探索。Lime(Local Interpretable Model-Agnostic Explanations)是其中的一种,如下图所示:通过对单个样本的特征生成扰动产生近邻样本,观察模型的预测行为。根据这些扰动的数据点距离原始数据的距离分配权重,基于它们学习得到一个可解释的模型和预测结果[5]。举个例子,如果需要解释一个情感分类模型是如何预测“我讨厌这部电影”为负面情感的,我们通过丢掉部分词或者乱序构造一些样本预测情感,最终会发现,决定“我讨厌这部电影”为负面情感的是因为“讨厌”这个词。

图16 Lime解释器的工作原理

基于Lime解释器的思想,我们开发了一套深度模型解释器工具——雅典娜系统。目前雅典娜系统支持两种工作模式,Pairwise和Listwise模式:

  • Pairwise模式用来解释同一个列表中两个结果之间的相对排序。通过对样本的特征进行重新赋值或者替换等操作,观察样本打分和排序位次的变化趋势,诊断出当前样本排序是否符合预期。如下图所示,通过右侧的特征位次面板可以快速诊断出为什么“南京大牌档”的排序比“金时代顺风港湾”要更靠前。第一行的特征位次信息显示,若将“金时代顺风港湾”的1.3km的距离特征用“南京大牌档”的0.2km的距离特征进行替换,排序位次将上升10位;由此得出,“南京大牌档”排在前面的决定性因素是因为距离近。
  • Listwise模式与Lime的工作模式基本类似,通过整个列表的样本生成扰动样本,训练线性分类器模型输出特征重要度,从而达到对模型进行解释的目的。

图17 深度学习排序诊断系统:雅典娜

6. 总结与展望

2018年下半年,点评搜索完成了从树模型到大规模深度学习排序模型的全面升级。团队在深度学习特征工程、模型结构、优化目标以及工程实践上都进行了一些探索,在核心指标上取得了较为显著的收益。当然,未来依然有不少可以探索的点。

在特征层面,大量知识图谱提供的标签信息尚未充分挖掘。从使用方式上看,简单以文本标签的形式接入,损失了知识图谱的结构信息,因此,Graph Embedding也是未来需要尝试的方向。同时团队也会利用BERT在Query和商户文本的深层语义表达上做一些工作。

模型结构层面,目前线上依然以全连接的DNN网络结构为主,但DNN网络结构在低秩数据的学习上不如DeepFM和DCN。目前LambdaDeepFM和LambdaDCN在离线上已经取得了收益,未来会在网络结构上做进一步优化。

在模型优化目标上,Lambda Loss计算损失的时候,只会考虑Query内部有点击和无点击的样本对,大量无点击的Query被丢弃,同时,同一个用户短时间内在不同Query下的行为也包含着一些信息可以利用。因此,目前团队正在探索综合考虑Log Loss和Lambda Loss的模型,通过Multi-Task和按照不同维度Shuffle样本让模型充分学习,目前我们已经在线下取得了一些收益。

最后,近期Google开源的TF Ranking提出的Groupwise模型也对我们有一些启发。目前绝大部分的Listwise方法只是体现在模型训练阶段,在打分预测阶段依然是Pointwise的,即只会考虑当前商户相关的特征,而不会考虑列表上下文的结果,未来我们也会在这个方向上进行一些探索。

参考资料

  1. 美团大脑:知识图谱的建模方法及其应用
  2. Wide & Deep Learning for Recommender Systems
  3. Deep Residual Learning for Image Recognition
  4. Attention Is All You Need
  5. Local Interpretable Mode l- Agnostic Explanations: LIME
  6. From RankNet to LambdaRank to LambdaMART: An Overview
  7. A Novel Algorithm for Unbiased Learning to Rank
  8. Unbiased Learning-to-Rank with Biased Feedback
  9. Real-time Personalization using Embeddings for Search Ranking at Airbnb

作者简介

非易,2016年加入美团点评,高级算法工程师,目前主要负责点评搜索核心排序层的研发工作。

祝升,2016年加入美团点评,高级算法工程师,目前负责点评搜索核心排序层的研发工作。

汤彪,2013年加入美团点评,高级算法专家,点评平台搜索技术负责人,致力于深层次查询理解和大规模深度学习排序的技术落地。

张弓,2012年加入美团点评,美团点评研究员。目前主要负责点评搜索业务演进,及集团搜索公共服务平台建设。

仲远,博士,美团AI平台部NLP中心负责人,点评搜索智能中心负责人。在国际顶级学术会议发表论文30余篇,获得ICDE 2015最佳论文奖,并是ACL 2016 Tutorial “Understanding Short Texts”主讲人,出版学术专著3部,获得美国专利5项。此前,博士曾担任微软亚洲研究院主管研究员,以及美国Facebook公司Research Scientist。曾负责微软研究院知识图谱、对话机器人项目和Facebook产品级NLP Service。

———-  END  ———-

OpenKG.CN

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

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

文章转载自公众号

美团技术团队

论文浅尝 | 区分概念和实例的知识图谱嵌入方法

 

链接:https://arxiv.org/pdf/1811.04588.pdf

 

知识图谱的表示学习最近几年被广泛研究,表示学习的结果对知识图谱补全和信息抽取都有很大帮助。本文提出了一种新的区分概念和实例的知识图谱表示学习方法,将上下位关系与普通的关系做了区分,可以很好的解决上下位关系的传递性问题,并且能够表示概念在空间中的层次与包含关系。本文的主要贡献有三点:(1)第一次提出并形式化了知识图谱嵌入过程中概念与实例区分的问题。(2)提出了一个新的嵌入模型TransC模型,该模型区分了概念与实例,并能处理isA关系的传递性。(3)基于YAGO新建了一个用于评估的数据集。

Background

传统的表示学习方法没能区分概念(concept)和实例(instance)之间的区别,而是多数统一看作实体(entity),而概念显然和实例不是同一个层次的,统一的表示是有欠缺的。更重要的是,之前的方法多数无法解决上下位关系传递性的问题,这是不区分概念和实例表示的弊端。本文创造性的将概念表示为空间中的一个球体,实例为空间中的点,通过点和球体的空间包含关系和球体间的包含关系来表示上下位关系,这种表示可以很自然地解决上下位关系传递性的问题。下图是一个区分了概念,实例的层次关系图。

Model

通常在人们的脑海里,概念都是通过层级的方式组织起来的,而实例也应归属于与它们各自对应的概念,受此启发,本文提出了 TransC 模型来处理概念和实例区分的问题。在 TransC 模型里,每一个概念都被表示成一个球体,而每一个实例都被表示到与对应概念相同的语义空间中。概念与实例以及概念与概念之间的相对位置分别通过 instanceOf 关系与 subClassOf 关系来刻画。InstanceOf 关系用来表示某个实例是否在概念所表示的球体中,subClassOf 关系用来表示两个概念之间的相对位置,文中提出了四种可能的相对位置:

图1

如图1所示,(a)、(b)、(c)、(d)分别表示两个概念所表示球体的相对位置,其中m为球体半径,d 为两个球体中心的距离,Si 与 Sj 分别表示概念i与概念j所表示成的球体。对于 instanceOf 关系与 subClassOf 关系,文中有比较巧妙的设计以便保留 isA 关系的传递性,即 instanceOf-subClassOf 的传递性通过 来体现,而 subClassOf-subClassOf 的传递性通过 来体现,其中 (i, r_e, c) 表示InstanceOf三元组,(c_i, r_c, c_j) 表示SubClassOf三元组。

文中设计了不同的损失函数去度量embedding空间中的相对位置,然后用基于翻译的模型将概念,实例以及关系联合起来进行学习。在文中主要有三类triple,所以分别定义了不同的损失函数。

InstanceOf Triple表示:对于一个给定的 instanceOf triple,如果它是正确的,那么i就应该被包含在概念c所表示的球体s里。而实际上,除了被包含以外,很显然还有一种相对位置就是实例i在球体s(P,m)之外,损失函数设计为:

    SubClassOf Triple表示:对于一个给定的 subClassOf triple (c_i, r_c, c_j) ,首先定义两个球中心之间的距离: 按照图1所示的四种关系,还有另外三种损失函数需要定义。(1)按照图1中(b)表示的相对位置,两个球是分开的,损失函数表示为: (2)两个球相交,如图1中(c)所示,损失函数表示为 ,与(1)类似。(3)完全包含关系,如图1中(d)所示,损失函数表示为: (减小mj,增大mi

    Relational Triple 表示:对于一个relational triple (h, r, t) ,TransC利用TransE模型的训练方式来得到实体和关系的向量,所以损失函数定义为:

对于模型的训练,分别用 来表示正确和错误的三元组,根据以上几类损失函数,可以对应得到以下几类损失:

对于instanceOf triples,损失表示为 ,对于subClassOf triples,损失表示为 ,对于 relational triples,损失表示为 ,最后,模型的最终损失函数为以上几类损失的线性组合,即

Experiment

以往的大多数模型都用FB15K和WN18来作为评估的数据集,但这两个数据集并不很适合文中的模型,而YAGO数据集不仅含了许多概念而且还有不少实例,所以作者构建了一个YAGO数据集的子集YAGO39K来用作试验评估。

实验分别在链接预测,三元组分类以及instanceOf与subClassOf关系的三元组分类这几项任务上进行,实验结果如下:

链接预测与三元组分类结果:

instanceOf triple分类结果:

subClassOf triple分类结果:

实验结果表明,TransC模型在相关任务上与其它模型相比有较为显著的提升。

 

Conclusion

本文从Ontology层面对知识表示学习进行了较为深入的研究,提出了新的知识图谱嵌入模型TransC模型,该模型将实例、概念以及关系嵌入到同一个空间中以便用来处理isA关系的传递性。在实验部分,作者还创建了一个用来评估模型的新数据集YAGO39K。实验结果表明TransC模型在大多数任务上要优于传统的翻译模型。对于文中将概念表示成球体的想法似乎还可以继续探讨,作者将会继续寻找适合表示概念的方式。另外,每个概念在不同的三元组里可能会有不同的表示,如何进一步地将概念的多意性表达出来也是一个值得探究的方向。在传统的知识工程领域,知识是通过schema组织起来的,有较强的逻辑性,但在语义计算层面相比向量来说没有优势,最近有不少将二者相结合的工作(给语义的向量计算披上逻辑的外衣)值得关注一下。

 

论文笔记整理:张良,东南大学博士,研究方向为知识图谱,自然语言处理。

OpenKG.CN

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

论文浅尝 | 基于深度强化学习的远程监督数据集的降噪

 

论文链接:https://arxiv.org/pdf/1805.09927.pdf

来源:ACL2018

Motivation:

远程监督是以一种生成关系抽取训练样本的方法,无需人工标注数据。但是远程监督引入了噪音,即存在很多的假正例。本文的出发点非常简单,希望通过强化学习的方法来训练一个假正例的判别器,它可以识别出数据集中的假正例,并加入到负例集中。产生更加干净的训练集,从而提高分类器的性能。

Relatedwork:

对于远程监督的噪音,之前常用的做法是加attention机制,给以真正例更大的权重,给以假正例较小的权重,单这种方法是次优的。本文有一个有意思的地方,作者在文中指出,他在提交了ACL之后,发现已经有一篇相同的工作. Reinforcement learning for relation classification from noisy data(参照论文笔记),是 feng 等人发表在AAAI 2018上的,两篇文章从立意到方法都基本一致,唯一不同的就是强化学习的reward不同。feng 等人的论文中 reward 来自预测概率,而这篇论文的 reward 是分类器的性能的改变。

Model:

远程监督中的强化学习框图

模型的整体结构如上图所示。首先对每一个关系,生成相应的正负样本,划训练集和验证集。在每一个epoch中,利用了 policy based 的 agent,对训练集的正样本做筛选,对每个句子选择保留或者移除到负样本集,得到筛选后的训练集。然后在此训练集上训练关系抽取分类器,在验证集上做测试得到分类的F1值。根据分类器的 F1 值的变化得到 reward,最后利用 policy gradient 对参数作更新。下面介绍RL方法中几个基本要素:

  • States:

为了满足MDP的条件,state不仅包含了当前句子的信息,还加入了过去句子的信息。对当前句子给予较大的权重,对过去句子给予较小的权重。句子的向量表示采用了常用的 word embedding 和 position embedding。

  • Actions:

Agent 的作用是识别出正样本中的假正例,所以action包含了两种:判断当前句子为真正例并保留;判断为假正例并移除到负样本集中。

  • Rewards:

Rewards 来自于关系抽取分类器的性能变化,论文中采用的是第i轮的F1值减去第i-1轮的F1值。

  • Policy Network:

Policy Network 的作用相当于一个二元分类器,故论文采取了一个简单的CNN网络。

另外,Policy Network 采用了预训练的策略,目的是加快收敛。训练整体的流程如下图所示:

Experiments:

实验在远程监督常用的 NYT 数据集和主流方法做了比较。下表首先给出了在原始数据集、预训练的 agent 筛选后的数据集上、RL agent 筛选后的数据集上训练得到的分类器性能对比,可以看到,RL 有效提升了分类器的性能。

下面两张图给出了关系抽取分类器分别采用 CNN 和 PCNN 时,加入 RL 和不加 RL 的分类结果的 PR 曲线图,可以看到加入 RL 提升了分类器的性能。

Conclusion:

本文利用强化学习的方法,对远程监督的数据集进行降噪,从而提升分类器的性能。另外,Agent 的 Reward 来自于分类器性能的改变,不需要加入额外的监督信息。

论文笔记整理:叶志权,浙江大学硕士,研究方向为自然语言处理、知识图谱。

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 博客。

文章转载自公众号

知识工场

征稿通知 | 2019 年全国知识图谱与语义计算大会(CCKS2019)

 

2019年全国知识图谱与语义计算大会

China Conference on Knowledge Graph and Semantic Computing (CCKS 2019)

2019年8月24日-27日,杭州

征稿截止: 2019年5月18日

全国知识图谱与语义计算大会(CCKS: China Conference on Knowledge Graph and Semantic Computing)由中国中文信息学会语言与知识计算专业委员会组织和承办。全国知识图谱与语义计算大会是两个全国性会议的合并:中文知识图谱研讨会 the Chinese Knowledge Graph Symposium (CKGS) 和中国语义互联网与Web科学大会 Chinese Semantic Web and Web Science Conference (CSWS)。CCKS2016 (www.ccks2016.cn)、CCKS2017 (www.ccks2017.com) 和CCKS2018 (www.ccks2018.cn)  分别在北京、成都和天津举办。CCKS2018 吸引了800余名来自学术界和工业界的学者和研究人员参加。全国知识图谱与语义计算大会已经成为国内知识图谱、语义技术、链接数据等领域的核心会议,聚集了知识表示、自然语言理解、知识获取、智能问答、链接数据、图数据库、图计算、自动推理等相关技术领域的学者和研究人员。2019 年全国知识图谱和语义计算大会 (www.ccks2019.cn) 将于2019年8月24日至8月27日在杭州召开。

2019 年全国知识图谱与语义计算大会的主题是“知识智能”,旨在探讨大数据环境下语言理解、知识获取与智能服务的关键技术和应用。会议将包括学术讲习班、工业界论坛、评测与竞赛、知识图谱顶会回顾、大会特邀报告及学术论文等环节。大会将邀请国内外知名学者讲授相关领域的最新进展、发展趋势和实战经验,工业界论坛将邀请产业界的主要研发人员分享经验,促进产学研合作。

大会诚挚邀请相关领域的研究者投审英文和中文论文。长文投稿不能超过12页,短文不能超过6页。投稿论文需使用 Springer 的 LNCS 模板(中英文使用相同模板): http://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines(Word模板下载地址;Latex模板下载地址)。CCKS2019英文论文将被Springer出版的论文集收录,中文论文将被推荐到中国科学、中文信息学报、模式识别与人工智能学报等期刊发表。

投稿论文要求论文工作是未经发表的研究成果,通过会议论文网站提交: https://easychair.org/conferences/?conf=ccks2019。论文主题包括(但不限于):

 

知识表示与推理

·知识表示与本体建模

·知识表示学习

·本体重用与演化

·本体映射、融合与对齐

·本体评估

·知识推理

·知识库补全

 

知识获取与知识图谱构建

·开放知识抽取

·众包知识工程与协同知识获取

·人机协同知识库构建

·维基数据的知识获取

·自动化知识库构建工具、语言与系统

·基于监督学习/非监督学习的知识获取

·半监督学习/远程监督学习与文本抽取

 

链接数据、知识融合和知识图谱存储管理

·实体识别、实体消解与实体链接

·术语映射与集成

·异构知识库集成

·异构知识链接与集成

·基于本体的数据集成

·知识查询与搜索

·弹性知识存储与分布式计算

·图数据库

 

自然语言理解、语义计算和知识图谱挖掘

·文本理解

·机器阅读Machine reading

·语义相似度/相关度计算

·同义挖掘

 

知识图谱应用

·知识图谱可视化

·语义搜索

·基于知识的问答系统

·智能个人助理系统

·基于知识的自然语言/语音/图像/视频语义分析

·智能推荐

 

重要日期(tentative)

·摘要提交:2019年5月10日 (23:59, 北京时间)

·全文提交:2019年5月18日 (23:59, 北京时间)

·审稿结果通知: 2019年7月1日

·正式版本提交: 2019年7月15日

·会议日期: 2019年8月24日—27日

主办:中国中文信息学会语言与知识计算专业委员会

承办: 浙江大学

OpenKG.CN

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

 

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

 

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

事件概要

事件是一种重要的知识,近年来,越来越多的工作关注于从开放域或领域文本中抽取结构化事件知识。同时,除了本身就很困难的事件抽取任务之外,近年来,越来越多的研究者开始关注于事件的推理工作中(事理推理,事件时序关系推理,事件 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 博客。

文章转载自公众号

知识工场

 

领域应用 | 从数据到智慧,知识图谱如何推动金融更智能?

 

本文转载在公众号:恒生技术之眼

在《人工智能+知识图谱:如何规整海量金融大数据?》一文中,笔者曾提到,面向人工智能的大数据治理,势必能有效支撑智能金融从感知智能向认知智能变革。这是因为目前在资本市场中,大数据的治理存在一些问题,比如非结构化数据的处理与使用、实时敏捷的数据处理与使用以及多源异构的数据孤岛等。

 

而知识图谱在智能金融中扮演的正是数据加工、处理的角色,能够为数据服务提供相应的支持。比如对于多源异构的数据,知识图谱能做到比较好的集成,通过统一的数据表示与建模、统一数据处理与存储来降低数据的使用难度。

 

正所谓“玉不琢不成器”,数据是金融的生命线,经过知识图谱的“琢磨”,大数据治理会有更多成果呈现出来,从而更好地赋能智能金融,助力金融机构实现数据驱动下的业务运营和创新。那么想要达到这样的目的,资本市场的知识图谱应该如何构建呢?

资本市场知识图谱构建的核心目标

 

有目标,才有方向。在资本市场中,人们都在关注资产的价格、走势以及相关的分析,这是一个永恒的话题。所以资本市场知识图谱的建立应该有两个核心目标:

 

核心目标1:企业画像&企业分析

 

以前,我们为企业做信息规整的时候,以集合企业的360度属性信息为目标。而通过知识图谱技术,我们可以改变这种思路,以企业为中心,把围绕企业的实体关系建立起来,比如企业与企业的关系、企业与人的关系、企业与行业的关系、企业与舆情事件的关系、企业与宏观要素的关系等等。当我们将企业放在关系网络里,把种种关系都建立起来的时候,我们会发现,企业的画像也就完成了。

 

企业分析也是从关系分析开始的。在关系网络具备的情况下,我们可以以关系分析为起点进行企业的分析,一步步达到我们最终所需的分析目标和结果。

 

核心目标2:舆情事件基于知识图谱的传播

 

为企业做画像,是相对静态的一个结果,因为汇集的很多都是关于企业的静态信息。而舆情事件在每天的新闻、公告、研报里都会发生,是相对动态的。那么舆情事件有没有传递效应?有什么样的传递效应?这也是我们在资本市场中构筑知识图谱时需要考虑的。

 

资本市场知识图谱构建的关键点

 

有了这两个核心目标,资本市场的知识图谱应该怎么构建呢?对于资本市场来说,知识图谱的构建也需要知识建模、知识获取、知识融合、知识存储、知识展示、知识计算、知识应用等环节,这与传统行业是一样的。不一样的地方在于以下几个关键点:

 

场景驱动按需迭代

 

在金融行业,新的数据源源不断地产生、汇集,那么我们在构建知识图谱之时,需要以场景驱动来解决这个问题,在数据建模上不断地更新,先建立Schema再去寻找相应的数据,集合起来之后对特定的应用场景提供相应的数据服务。随着Schema 1.0、2.0、3.0不断演化,一个企业级的知识图谱可能就建立起来了。

 

充分利用第三方数据

 

起点不一样,是资本市场知识图谱与其他领域知识图谱的一个不同点。在资本市场中,有很多第三方数据公司为证券公司、基金公司等金融机构提供数据服务,充分利用第三方数据对于知识图谱的构建非常重要。这个起点有什么影响呢?一方面,第三方数据公司会通过自然语言处理等技术做一些数据的梳理工作,其数据结构质量会比较高,基于高质量数据来构建的知识图谱,质量也会比较好,如果我们放弃这种方式,从大规模自动建立开始做,很难达到同等的效果;另一方面,第三方数据也是在不断更新的,因此在知识获取和知识融合方面,第三方数据可以帮我们解决冷启动的问题。

 

事件与时序的支持

 

事件是相对动态的,动态的新闻、资讯对资产价格有非常大的影响,所以我们在资本市场的知识图谱构建中,包括建模、分析、展示、存储等各个环节,都要充分考虑到对事件和时序支持。

 

灵活的图展示方式

 

资本市场的知识图谱对于展示有一些不一样的需求,比如可不可以按照产业链的方式把某一行业的上下游全部展示出来,能不能按照股权结构把实际受益人的图谱关系展示出来等等,这些都是金融领域的图展示需要做到的。

资本市场知识图谱的应用场景

 

从数据的关系网络支撑这个角度来看,知识图谱作为数据治理的工具、手段,可以助力原有的传统金融业务实现智能化的升级。另外,知识图谱与机器学习等技术的结合,也会帮助原有的模型实现升级。那么具体来看,知识图谱能够对现在的金融业务产生哪些方面的赋能呢?

基础赋能

▲基础数据服务:把知识图谱当做数据库、知识库,用KBQA(Knowledge Base Question Answering)的方式,为金融问答系统、智能客服系统以及金融智能搜索等业务提供相应的支持。

 

▲关系穿透/挖掘服务:知识图谱对于关系穿透、挖掘的能力,使其非常适合找到一致行动人、实际控制人以及资本系挖掘,从而有助于关联交易关联账号识别、信息批露等风控控制,并且能够对风控风险的传播和原因做深入分析,这在合规风控领域的应用有非常大的空间。

 

▲建模/推理服务:知识图谱把一些关系的数据梳理得比较清楚,这对于营销服务领域来说是一次革新的机会。无论从数据的提供层面,还是从模型的建立层面,知识图谱在KYC/KYP(Know Your Customer / Know Your Product)、产品服务推荐、智能投顾等领域都会带来非常大的价值。

进阶赋能

▲基于知识图谱事件传播影响的智能资讯服务

 

这是静态与动态知识图谱能够结合并产生金融服务的一个场景。目前对于头部金融机构的终端服务来说,智能资讯已经是一种标配,可以把相应的资讯推送给相应的标的持有人,进行风险警示或投资机会提示。

 

在知识图谱技术的加持下,智能资讯服务能够做进一步的延伸,因为企业是处在关系网络之中的,任何一个事件的传递都会沿着关系网络传播。比如“行业的原材料价格上涨”这样一件事,会在企业的关系网络里沿着企业的上下游来进行传递,据此我们可以把涉及到的相关企业从知识图谱中找出来,命中事件传播波动相关性标的、事件要素投研逻辑相关性标的等,从而对相应投资人进行相应标的的智能资讯服务,例如持仓/自选股预警、投顾等辅助服务。

 

▲基于知识图谱的智能投研:分析师工作平台

 

智能投研是知识图谱能够有较多应用的一个场景。每个行业分析师都有一套行业产业链逻辑,并且依据这套逻辑准确定位市场现状、动态,预测并制作市场模型。借助知识图谱,这套逻辑可以演化成一个投研工具,一个智能投研的分析平台,满足分析师私有化、个性化的要求,做到能够自动添加实体(公司)、关系(产业链条)、属性(私有数据),自定义投研逻辑与预警规则,帮助分析师进行产业链与企业关系的分析。

 

展望

 

在当下的智能金融时代,一方面我们需要着手进行面向人工智能的大数据治理,在数据层面上通过知识图谱将原有的金融数据做再一次的加工、整理;另一方面,一个金融机构往往动辄几十套、上百套系统,如何把知识图谱等人工智能技术的服务能力开放给传统的业务系统,进行面向人工智能的服务治理,这也是我们必须面对的一个挑战。

此外,浙江大学陈华钧教授曾提到过知识图谱的数据源问题,由于数据太容易被复制了,一旦发生数据外泄很容易侵犯个人隐私与数据所有权,所以在知识图谱领域,我们也可以考虑结合区块链技术来对数据来源进行溯源。现在知识图谱更多是集中式的,未来可能有更多分散式的知识图谱架构出现,来帮助我们解决这个问题。

300多年,英国哲学家培根曾说,知识就是力量。而随着人工智能时代的启幕,我们或许也可以说:知识图谱就是力量。知识图谱起于搜索,又不止于搜索,它是底层的,是无处不在的,支撑着人工智能在各个场景中的应用。未来,知识图谱必将让金融更智能,在更多的金融业务场景中发挥更大的价值。

OpenKG.CN

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

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

文章转载自公众号

恒生技术之眼