分享

邹磊|知识图谱的数据应用和研究动态

 老沈阅览 2017-09-02

来源:来源:《中国计算机学会通讯》2017年第8期《专栏》

   近年来,随着“人工智能”概念再度活跃,除了“深度学习”这个炙手可热的名词以外,“知识图谱”也是研究者、工业界和投资人心目中的又一颗“银弹”。简单地说,“知识图谱”是一种数据模型,是以图形(Graph)的方式来展现“实体”、实体“属性”,以及实体之间的“关系”。图1所示的例子中有4个实体,分别是“达·芬奇”“意大利”“蒙拉丽莎”和“米开朗基罗”。这个图明确地展示了“达·芬奇”的各个属性和属性值(例如名字、生日和逝世时间等),以及这4个实体之间的关系(例如蒙拉丽莎是达·芬奇的画作,达·芬奇出生在意大利等)。说到这里,很多读者会不经意地联想到数据库课程中“实体-联系图”(ER图,ER Diagram)的概念。从某种角度来说,两者确实有异曲同工之处。根据传统数据库理论,当我们将现实世界的事物映射到信息世界时,最需要关注的是两个方面的信息:实体(包括实体属性)和实体关系;而ER图是反映实体和实体关系的最为经典的概念模型。我们之所以称ER图是概念模型,是因为它的设计是帮助人理解客观世界的事物的,不是计算机实现的模型。在数据库管理系统(DBMS)历史上,出现过层次模型、网状模型和关系模型,这些是数据库管理系统所实现的计算机模型。因此实际的数据库应用项目中就存在一个从概念模型到实现模型的转换问题,例如如何根据ER图来构建关系表。从这个角度来看,知识图谱又不同于ER图,因为知识图谱不仅显式地刻画了实体和实体关系,而且其本身也定义了一种计算机所实现的数据模型。

图1 谷歌的知识图谱示例

   “知识图谱”这个名词是由于2012年5月16日谷歌启动的知识图谱(Knowledge Graph)项目而活跃起来的。目前知识图谱普遍采用了语义网框架中的资源描述框架(Resource Description Framework, RDF)模型来表示数据。语义网是万维网之父蒂姆·伯纳斯-李(Tim Berners-Lee)在1998年提出的概念,其核心是构建以数据为中心的网络,即Web of Data。其中RDF是万维网联盟(W3C)的语义网框架中的数据描述的标准,通常称之为RDF三元组<主语(subject),谓词(predicate),宾语(object)>。其中主语是一个被描述的资源,由统一资源标识符(URI)来表示。谓词可以表示主语的属性,或者表示主语和宾语之间的某种关系;当表示属性时,宾语就是属性值,通常是一个字面值(literal);否则宾语是另外一个由URI表示的资源。

   图2展示了一个人物类百科的RDF三元组的知识图谱数据集。例如y:Abraham_Lincoln表示一个实体URI(其中y表示前缀http://en./wiki/),它有3个属性(hasName, BornOndate, DiedOnDate)和1个关系(DiedIn)。

图2 RDF数据的例子

图3 SPARQL查询的例子

   面向RDF数据集,W3C提出了一种结构化查询语言SPARQL,它类似于面向关系数据库的查询语言SQL。和SQL一样,SPARQL也是一种描述性的结构化查询语言,即用户只需要按照SPARQL定义的语法规则去描述其想查询的信息即可。假设我们需要在上面的RDF数据中查询“在1809年2月12日出生,并且在1865年4月15日逝世的人的姓名”,这个查询可以表示成如图3所示的SPARQL语句。

   我们也可以将RDF和SPARQL分别表示成图的形式。在RDF中,主语和宾语可以分别表示成RDF图中的节点,一条称述(即RDF三元组)可以表示成一条边,其中谓词是边的标签。SPARQL语句同样可以表示成一个查询图。 图4显示了上例所对应的RDF图和SPARQL查询图结构。回答SPARQL查询,本质上就是在RDF图中找到SPARQL查询图的子图匹配的位置,这就是基于图数据库回答SPARQL查询的理论基础。在图4所示的例子中,由节点005、009、010和011所推导的子图就是查询图的一个匹配,根据此匹配很容易知道SPARQL的查询结果是“Abraham Lincoln”。

图4 RDF图和SPARQL查询图

知识图谱目前的应用

   目前,知识图谱在工业界,尤其是在互联网领域中已有相关应用;在工业设计和产品管理、知识出版、健康医疗和情报分析等其他领域也有不少的应用。本文主要介绍互联网领域相关公司的产品。

   谷歌的知识图谱

   如前所述,知识图谱的活跃得益于谷歌的知识图谱项目。谷歌通过构建知识图谱,将内部信息资源都唯一地关联起来。例如“姚明”是知识图谱中的一个实体,包含相关的一些属性,例如出生时间、地点、身高等。同时,可以将搜索引擎中所爬取的和“姚明”相关的文档和图片都与这个实体关联起来。在谷歌的知识图谱项目中,最早的应用方式就是在搜索引擎返回结果里面提供“知识卡片”。传统的搜索引擎返回界面中,通常是查询词所匹配的文档列表。然而,在2012年5月16日以后的谷歌搜索引擎返回结果中,如果查询词匹配了谷歌知识图谱中的某个实体,谷歌还会以知识卡片的形式返回这个实体的一些属性和与其他实体的关系。例如,当我们搜索“姚明”时,谷歌返回的知识卡片会包括姚明的出生时间、地点、身高,以及他的妻子叶莉,甚至包括相关联的姚明的图片。

   谷歌的富摘要

   一般来说,搜索引擎会为每一篇搜索结果提供一个目标网页的摘要,以便用户判断是否为自己想搜索的页面。通常网页的摘要是采用“抽取式”方式生成的,即从网页的页面文本中找到和搜索关键词相关的并且比较重要的句子来构成页面的摘要返回给用户。但是谷歌的富摘要(Google Rich Snippets)产品中,会抽取在用户超文本标记语言(HTML)页面中以结构化形式存在的知识图谱数据,例如描述实体属性的数据。目前这方面的标准包括RDFa、Microdata和Schema.org等结构化数据标签。假设用户搜索“Thinkpad T450”产品,在谷歌返回的沃尔玛线上商店的页面摘要中(见图5)包含了这个产品的打分(Rating,3星)、评论数目(Vote,1份评论)和价格(616.67美元)。实际上,用户已经通过Schema.org等结构化的语义标签在HTML中标示出了这些重要的数据,搜索引擎可以通过解析器(Parser)解析出这些结构化数据,利用这些结构化知识图谱数据来产生摘要。图6展示了利用谷歌的结构化测试工具,可以从上述沃尔玛产品页面的HTML中抽取上面提到的商品的价格和商标等属性信息。

图5 根据抽取的结构化数据产生的“沃尔玛产品页面”搜索结果摘要

图6 谷歌结构化抽取工具所抽取出来的“沃尔玛产品页面”上的结构化数据

脸书的开放内容协议

   脸书(Facebook)也定义了一种类似的标签语言——开放内容协议(Open Graph Protocol, OGP)。脸书利用OGP协议定义了社交网络上的知识图谱(Facebook Social Graph,社交图),用于连接社交网络的用户、用户分享的照片、电影、评论,甚至包括通过脸书定义的应用程序编程接口(Graph API)所链接的第三方的关于社交用户的知识图谱数据。在所构建的社交图基础上,脸书推出了图搜索(Graph Search)功能,将用户的自然语言问题转化为面向社交图的图搜索问题,从而回答用户的问题。假设以我的脸书账号登录,输入自然语言“My friends who live in Canada”,将显示我在加拿大的朋友的账号;同样地,再输入“Photos of my friends who live in Canada”,将显示这些朋友在脸书上分享的照片。这个例子说明,脸书所构建的社交图将用户、地点以及照片都关联起来了,否则无法回答上述两个自然语言问题。

   脸书将用户输入的自然语言转化为面向社交图的结构化查询操作。从图7中可以看出,原始查询语句在经过自然语言接口模块处理后,对应的规范化自然语言查询语句和结构化查询语句分别为:“my friends who live in [id: 12345]”和“intersect(friends(me), residents(12345))”。其中,“12345”代表“Canada”在社交图谱上对应的ID。对应的结构化查询语句会交给脸书内部设计的面向社交图谱的索引和搜索系统Unicorn,最后查询得到答案。

图7 脸书中将自然语言转换为结构化查询的一个示例

面向知识图谱的问答系统

   面向知识图谱的问答系统还包括亚马逊收购的EVI产品。EVI的原名叫True Knowledge,是一家创业公司的产品。本质上就是用三元组的形式来组织数据,根据模板技术将用户的自然语言问题转化为结构化的查询语句找到结果返回给用户。IBM的沃森(Watson)系统中也同样采用DBpedia和Yago知识图谱数据来回答某些自然语言问题。相比于传统基于文档的问答方法,基于知识图谱的问答准确度更高,但能回答的问题相对较少(见图8)。

图8 IBM沃森系统参加《危险边缘》(Jeopardy)挑战的实验数据

知识图谱的管理方法

   知识图谱数据管理的一个核心问题是如何有效地存储和查询RDF数据集。总的来说,有两套完全不同的思路。其一是我们可以利用已有的成熟的数据库管理系统(例如关系数据库系统)来存储知识图谱数据,将面向RDF知识图谱的SPARQL查询转换为面向此类成熟数据库管理系统的查询,例如面向关系数据库的SQL查询,利用已有的关系数据库产品或者相关技术来回答查询,其中最核心的研究问题是如何构建关系表来存储RDF知识图谱数据,并且使得转换的SQL查询语句查询性能更高;其二是直接开发面向RDF知识图谱数据的原生(Native)知识图谱数据存储和查询系统(Native RDF图数据库系统),考虑到RDF知识图谱管理的特性,从数据库系统的底层进行优化。

   由于关系数据库管理系统(RDBMS)在数据管理方面的巨大成功以及成熟的商业软件产品,同时RDF数据的三元组模型可以很容易映射成关系模型,因此大量研究者尝试了使用关系数据模型来设计RDF存储和检索的方案。根据所设计的表结构的不同,相应的存储和查询方法也各异。

   另外一种是采用图的方式来管理知识图谱数据。通过将RDF三元组看作带标签的边,RDF知识图谱数据很自然地符合图模型结构。因此,有的研究者从RDF图模型结构的角度来看待RDF数据,他们将RDF数据视为一张图,并通过对RDF图结构的存储来解决RDF数据存储问题。图模型符合RDF模型的语义层次,可以最大限度地保持RDF数据的语义信息,也有利于对语义信息的查询。此外,以图的方式来存储RDF数据,可以借鉴成熟的图算法、图数据库来设计RDF数据的存储方案与查询算法。然而,利用图模型来设计RDF存储与查询也存在着难以解决的问题。第一,相对于普通的图模型,RDF图上的边具有标签,并可能成为查询目标;第二,典型的图算法往往时间复杂度较高,需要精心的设计以降低实时查询的时间复杂度。

   我们在文献[9]中提出一种利用子图匹配方法回答SPARQL的方法,并构建了相关开源系统gStore。由于基于图结构方法的索引可以考虑到查询图整体信息,因此,总的来说,查询图越复杂(例如查询图的边越多),gStore相对于对比系统的性能越好,有些复杂的SPARQL查询可以达到一个数量级以上的性能优势。gStore的分布式版本在10台机器组成的集群上可以进行50亿~100亿规模的RDF知识图谱管理的任务。

   计算机不同领域对知识图谱研究的侧重

图9 不同领域对“知识图谱”研究的侧重

   知识图谱属于交叉研究领域,不同计算机研究领域从不同的角度对知识图谱进行研究(见图9)。

   在自然语言处理领域,针对知识图谱的研究主要在两个方面。一是“信息抽取”。目前互联网上大部分数据仍然是“非结构化”的文本数据,如何从非结构的文本数据中抽取出知识图谱所需要的三元组数据是一项具有挑战性的工作;二是“语义解析(Semantic Parsing)”,即将用户输入的自然语言问题转化成面向知识图谱的结构化查询。我们在文献[17]中提出利用子图匹配的方法回答面对知识图谱的自然语言问题,并构建系统gAnswer。

   在知识工程领域主要也有两个方面的热点研究问题。其一是大规模本体和知识库的构建。例如,DBpedia和Yago都是通过从维基百科上获取知识从而构建大规模的知识图谱数据集;另外,面向特定封闭领域(closed domain)的知识图谱构建在工业界应用比较广泛。另外一项研究课题是知识图谱上的推理问题研究。不同于传统数据库的闭世界假设(Closed-world assumption),知识图谱采用的是开放世界假设(Open-world assumption)。在开放世界假设情况下,系统并不假设所存储的数据是完备的,系统中没有被显示存储但是可以通过推理得到的“陈述(Statement)”,仍然被认为是正确的数据。

图10 TransE模型示例

   在机器学习领域,热门的课题包括面向知识图谱的“表示学习”,其中最具代表性的研究工作是TransE模型。给定一个知识图谱,我们将知识图谱三元组中的每个主语、谓词和宾语都映射成一个高维向量,其优化目标可以表示为将图10中的公式最小化。这个公式的基本含义是,对于存在于知识图谱G里面的任何一条三元组,其中主语、谓词和宾语的向量分别表示为s、p 和o, 我们要求主语和谓词的向量和(s+p)离宾语的向量表示(o)尽量近;对于不存在于知识图谱G中的三元组,则相互距离尽量远。TransE模型的基本含义是,谓词相同的两个三元组,它们分别的主语与宾语的向量差是近似的。在TransE模型的基础上,学术界提出了很多改进的知识图谱嵌入(Embedding)的方案。这些模型在很多任务上,例如知识图谱的谓词预测、知识补全等,比以前的方法在准确度上都有不小的提升。

   知识图谱从某种角度来说,是一个商业包装的词汇;但是其本身来源于语义网、图数据库、自然语言处理等相关的学术研究领域。由于篇幅和笔者学术研究水平的局限,对于更大范围的知识图谱研究和应用的介绍难免挂一漏万,敬请读者批评指正。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多