从零构建知识图谱:技术、方法与案例
上QQ阅读APP看书,第一时间看更新

1.2 知识图谱基本概念

结合上文的例子,相信读者对基于知识图谱的搜索有了一定的了解,本节将详细阐述知识图谱的基本概念,包括知识图谱的背景、定义以及典型示例。

1.2.1 知识图谱背景

在给出知识图谱的定义之前,我们先分开讨论一下什么是知识,什么是图谱。

首先看一下什么是知识。有读者可能会提出这样的问题,在大数据时代,人类拥有海量的数据,这是不是代表人类可以随时随地利用无穷无尽的知识呢?答案是否定的。

知识是人类在实践中认识客观世界(包括人类自身)的成果,它包括事实、信息、描述以及在教育和实践中获得的技能。知识是人类从各个途径中获得的经过提升、总结与凝炼的系统的认识。

因此,可以这样理解,知识是人类对信息进行处理之后的认识和理解,是对数据和信息的凝炼、总结后的成果。

让我们来看一下Rowley在2007年提出的DIKW体系[1],如图1-3所示,从数据、信息、知识到智慧,是一个不断凝炼的过程。

000

图1-3 DIKW体系

举一个简单的例子,226.1厘米,229厘米,都是客观存在的孤立的数据。此时,数据不具有任何意义,仅表达一个客观事实。而“姚明臂展226.1厘米”“姚明身高229厘米”是事实型的陈述,属于信息的范畴。知识,则是对信息层面的抽象和归纳,把姚明的身高、臂展,及其他属性整合起来,就得到了对于姚明的一个认知,也可以进一步了解到姚明的身高是比普通人高的。对于最后的智慧层面,Zeleny提到的智慧是指知道为什么(Know-Why)[2],感兴趣的读者可以自行了解,本书暂不对此进行深入探讨。

那么什么是图谱?图谱的英文是Graph,直译过来就是“图”的意思。在图论(数学的一个研究分支)中,图表示一些事物(Object)与另一些事物之间相互连接的结构。一张图通常由一些结点(Vertice或Node)和连接这些结点的边(Edge)组成。“图”这一名词是由詹姆斯·约瑟夫·西尔维斯特在1878年首次提出的[3]。图1-4是一个非常简单的图,它由6个结点和7条边组成。

000

图1-4 由6个结点和7条边组成的图示例

从字面上看,知识图谱就是用图的形式将知识表示出来。图中的结点代表语义实体或概念,边代表结点间的各种语义关系。

我们再将姚明的一些基本信息,用计算机所能理解的语言表示出来,构建一个简单的知识图谱。比如,<姚明,国籍,中国>表示姚明的国籍是中国,其中“姚明”和“中国”是两个结点,而结点间的关系是“国籍”。这是一种常用的基于符号的知识表示方式——资源描述框架(Resource Description Framework,RDF),它把知识表示为一个包含主语(Subject)、谓语(Predicate)和宾语(Object)的三元组<S,P,O>,至于如何从非结构化文本中抽取三元组,我们会在后面的章节详细说明。

1.2.2 知识图谱的定义

上一节对知识图谱给出了一个具象的描述,即它是由结点和边组成的语义网络。那么该如何准确定义知识图谱呢?这里我们可以先回顾一下其概念的演化历程。

知识图谱概念的演化历程如图1-5所示。

000

图1-5 知识图谱概念的演化历程

语义网络由剑桥语言研究所的Richard H. Richens提出,前文中已经简单介绍了语义网络的含义。它是一种基于图的数据结构,是一种知识表示的手段,可以很方便地将自然语言转化为图来表示和存储,并应用在自然语言处理问题上,例如机器翻译、问答等。到了20世纪80年代,研究人员将哲学概念本体(Ontology)引入计算机领域,作为“概念和关系的形式化描述”,后来,Ontology也被用于为知识图谱定义知识体系(Schema)。

而真正对知识图谱产生深远影响的是Web的诞生。Tim Berners-Lee在1989年发表的“Information Management: A Proposal”[4]中提出了Web的愿景,Web应该是一个以“链接”为中心的信息系统(Linked Information System),以图的方式相互关联。Tim认为“以链接为中心“和“基于图的方式”,相比基于树的固定层次化组织方式更加有用,从而促成了万维网的诞生。我们可以这样理解,在Web中,每一个网页就是一个结点,网页中的超链接就是边。但其局限性是显而易见的,比如,超链接只能说明两个网页是相互关联的,而无法表达更多信息。

1994年,在第一届国际万维网大会上,Tim又指出,人们搜索的并不是页面,而是数据或事物本身,由于机器无法有效地从网页中识别语义信息,因此仅仅建立Web页面之间的链接是不够的,还应该构建对象、概念、事物或数据之间的链接。

随后在1998年,Tim正式提出语义网(Semantic Web)的概念。语义网是一种数据互连的语义网络,它仍然基于图和链接的组织方式,但图中的结点不再是网页,而是实体。通过为全球信息网上的文档添加“元数据”(Meta Data),让计算机能够轻松理解网页中的语义信息,从而使整个互联网成为一个通用的信息交换媒介。我们可以将语义网理解为知识的互联网(Web of Knowledge)或者事物的互联网(Web of Thing)。

2006年,Tim又提出了链接数据(Linked Data)的概念,进一步强调了数据之间的链接,而不仅仅是文本的数据化。后文还会介绍链接开放数据(Linked Open Data,LOD)项目,它也是为了实现Tim有关链接数据作为语义网的一种实现的设想。随后在2012年,Google基于语义网中的一些理念进行了商业化实现,其提出的知识图谱概念也沿用至今。

可以看到,知识图谱的概念是和Web、自然语言处理(NLP)、知识表示(KR)、数据库(DB)、人工智能(AI)等密切相关的。所以我们可以从以下几个角度去了解知识图谱。

  • 从Web的角度来看,像建立文本之间的超链接一样,构建知识图谱需要建立数据之间的语义链接,并支持语义搜索,这样就改变了以前的信息检索方式,可以以更适合人类理解的语言来进行检索,并以图形化的形式呈现。
  • 从NLP的角度来看,构建知识图谱需要了解如何从非结构化的文本中抽取语义和结构化数据。
  • 从KR的角度来看,构建知识图谱需要了解如何利用计算机符号来表示和处理知识。
  • 从AI的角度来看,构建知识图谱需要了解如何利用知识库来辅助理解人类语言,包括机器翻译问题的解决。
  • 从DB的角度来看,构建知识图谱需要了解使用何种方式来存储知识。

由此看来,知识图谱技术是一个系统工程,需要综合利用各方面技术。国内的一些知名学者也给出了关于知识图谱的定义。这里简单列举了几个。

电子科技大学的刘峤教授给出的定义是:

知识图谱,是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体–关系–实体”三元组,以及实体及其相关属性–值对,实体之间通过关系相互联结,构成网状的知识结构[5]

清华大学的李涓子教授给出的定义是:

知识图谱以结构化的方式描述客观世界中概念、实体及其关系,将互联网的信息表示成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力[6]

浙江大学的陈华钧教授对知识图谱的理解是:

知识图谱旨在建模、识别、发现和推断事物、概念之间的复杂关系,是事物关系的可计算模型,已经被广泛应用于搜索引擎、智能问答、语言理解、视觉场景理解、决策分析等领域。

东南大学的漆桂林教授给出的定义是:

知识图谱本质上是一种叫作语义网络的知识库,即一个具有有向图结构的知识库,其中图的结点代表实体或者概念,而图的边代表实体/概念之间的各种语义关系[7]

当前,无论是学术界还是工业界,对知识图谱还没有一个唯一的定义,本书的重点也不在于给出理论上的精确定义,而是尝试从工程的角度,讲解如何构建有效的知识图谱。在剩下的章节中,也会有一些常见概念,这里列举如下。

  • 实体:对应一个语义本体,例如“姚明”“中国”等。
  • 属性:描述一类实体的特性(例如“身高”:姚明的身高是229厘米)。
  • 关系:对应语义本体之间的关系,将实体连接起来(例如“国籍”:姚明的国籍是中国)。

有些学者也将属性定义为关系,属于属性关系的一种。但本书将属性和关系作为两种不同的概念区别对待。

1.2.3 典型知识图谱示例

本节将列举几个典型的知识图谱项目。图1-6给出了具有代表性的知识图谱项目的发展历史。

000

图1-6 知识图谱发展历史

从20世纪80年代开始的CYC项目,到Google 2012年提出的知识图谱,再到现在不同语种、不同领域的知识图谱项目大量涌现,知识图谱已经被深入研究并广泛应用于各个行业。例如,WordNet是典型的词典知识库,BabelNet也是类似于WordNet的多语言词典知识库,YAGO集成了Wikipedia、WordNet、GeoNames三个源的数据,NELL则持续不断从互联网上自动抽取三元组知识。由于这些项目的相关资料较为丰富,本书仅挑选若干具有代表性的知识图谱项目加以介绍。

(1)CYC[1]

CYC项目开始于1984年,最初目标是建立人类最大的常识知识库,将上百万条知识编码成机器可用的形式。根据维基百科数据,CYC包含320万条人类定义的断言,涉及30万个概念和15000个谓词。1986年,Douglas Lenat推断要构建这样庞大的知识库需设计25万条规则,同时需要350个人年才能完成。这个看似疯狂的计划之所以能够推进,和当时的历史背景是不可分开的。

在CYC中,大部分工作是以知识工程为基础,且大部分事实都是通过手动添加到知识库上的。CYC主要由两部分构成,第一部分是作为数据载体的多语境知识库,第二部分是系统本身的推理引擎。比如,通过“每棵树都是植物”和“植物最终都会死亡”的知识,推理引擎可以推断出“树会死亡”的结论。1994年图灵奖获得者爱德华·费根鲍姆曾称:“CYC是世界上最大的知识库,也是技术论的最佳代表。”

(2)ConceptNet[2]

ConceptNet是一个利用众包构建的常识知识图谱,起源于麻省理工大学媒体实验室的Open Mind Common Sense(OMCS)项目,它免费开放并且具有多语言版本。其英文版本自1999年发布以来,由15000个贡献者积累了超过100多万个事实。ConceptNet的一大特点是它的知识描述是非形式化的,更加贴近自然语言的描述。图1-7给出了ConceptNet的一个组织架构。这里列举了一些更为具体的描述,例如:“企鹅是一种鸟”“企鹅出现在动物园”“企鹅想要有足够的食物”等。

000

图1-7 ConceptNet的组织架构示例

(3)DBpedia[3]

DBpedia是指数据库版本的Wikipedia,是从Wikipedia中的信息框抽取出的链接数据库。英文版本的DBpedia包含600万实体,其中510万个实体可以链接到本体上。并且,DBpedia还和Freebase、OpenCYC、Bio2RDF等多个数据集建立了数据链接。截至目前,DBpedia是链接开放数据(LOD)中最大的具有代表性的开放链接数据库之一。

(4)LOD[4]

上文提到,LOD的初衷是实现Tim有关链接数据作为语义网的一种实现的设想。其遵循四个原则:使用URI进行标识;使用HTTP URI,以便用户可以像访问网页一样查看事物的描述;使用RDF和SPARQL标准;为事物添加与其他事物的URI链接,建立数据关联。截至2020年7月,LOD有1260个知识图谱,包含16187个链接。图1-8给出了LOD统计的知识图谱的示意图,它按照不同的颜色将知识图谱分为9个大类,其中社交媒体、政府、出版和生命科学四个领域的数据占比之和超过90%。

000

图1-8 LOD知识图谱概览


[1] https://www.cyc.com/。

[2] https://conceptnet.io/。

[3] https://wiki.dbpedia.org/。

[4] https://lod-cloud.net/。