知识图谱从0到1:原理与Python实战
上QQ阅读APP看书,第一时间看更新

1.1 知识图谱的概念

知识图谱(knowledge graph,KG)旨在描述客观世界的概念、实体、事件及其之间的关系,本质是语义网络知识库,可以对现实世界的事物及其相互关系进行形象化的描述,也可以从互联网海量信息中形象化出实体关系进行知识存储。

2012年谷歌(Google)正式推出知识图谱的概念并将其应用在谷歌搜索,其初衷是提高搜索引擎的能力,优化用户体验。有了知识图谱作为辅助,搜索引擎能够洞察用户查询背后的语义信息,返回更为精准、结构化的信息,更好地满足用户的查询需求。Google知识图谱[1]的宣传语“things not strings”给出了知识图谱的精髓,即不要无意义的字符串,而是获取字符串背后隐含的对象或事物。谷歌搜索“鲁迅”的结果如图1.1所示。

下面以图1.1为例解释知识图谱的概念,谷歌搜索引擎检索关键词时,右边knowledge graph card更直观地展示了人物实体的具体信息。

互联网上拥有丰富的资源。但是,大多数的资源都只能被人理解,却无法被机器理解,如何让机器像人一样理解文本?答案是使用知识图谱技术,即使用知识图谱建立和应用的技术,融合了认知计算、知识表示与推理、信息检索与抽取、自然语言处理与语义Web、数据挖掘与机器学习等方向的交叉研究。知识图谱本质上是一种语义网络,以实体或者概念作为节点,通过语义关系相连接。知识图谱来源于语义搜索、机器问答、情报检索、电子阅读、在线学习等实际应用。以“孔子”为例,知识图谱数据节点的显示如图1.2所示。

图1.1 谷歌搜索“鲁迅”的结果

图1.2 知识图谱中的数据节点:“孔子”示例

通过上面的例子我们会有一个大致的认识,那什么是知识图谱?我们分两个方面来看,即知识(knowledge)与图(graph)。什么是知识?知识是人类文明发展以来人类对客观世界探索的结果,如俄罗斯科学家德米特里·伊万诺维奇·门捷列夫发表归纳的元素周期表,或是被我们所熟知的爱因斯坦提出的狭义相对论中的e=mc2公式。知识作为人类对客观世界认识的表达,具备一定的局限性。针对地球的形状,人类文明的不同时期就有着不同的解释,随着人类科技的发展,才确定了地球是一个两极稍扁、赤道略鼓的不规则球体。知识的形成伴随着推理、归纳、实践,当然,在知识的形成中往往也伴随着大量的冲突和辩证。

图1.3 DIKW体系示意图

图1.3为DIKW体系,即关于数据、信息、知识及智慧的体系,可以很直观地看出从数据获取到智慧形成的层级关系和流程。该体系可以追溯至托马斯·斯特尔那斯·艾略特所写的诗——《岩石》。在首段,他写道:“我们在哪里丢失了知识中的智慧?又在哪里丢失了信息中的知识?”(Where is the wisdom we have lost in knowledge?/Where is the knowledge we have lost in information?)

上面介绍了知识的概念,下面进一步对图进行阐释,在计算机课程中,图是一种比较松散的数据结构,图往往用来表示和存储具备“多对多的关系”,是一种很重要的数据结构。它有一些节点,节点与节点之间也会存在着联系,一张图往往由一些节点和连接节点的边组成。例如,计算机网络就是由许多节点(例如计算机)和节点之间的边(如网线)构建的。城市的地铁系统也可以理解为图,地铁站可以理解为节点,北京地铁示意图如图1.4所示(图片来源为北京地铁官网https://www.bjsubway.com/)。

图1.4 北京地铁示意图

通过对上面知识和图的了解,可以知道知识图谱与此类似。图1.5是构建的一个人物图谱的片段,可以看出图上有很多节点和边,知识图谱也是由节点和边构成的。节点表示实体或概念,边表示实体的属性或实体间的关系。图1.5中“项羽”与“虞姬”是两个节点,节点的关系是“妻子”。我们将“项羽-妻子-虞姬”这种表达方式称为资源描述框架(resource description framework,RDF),简称为三元组,把实体、属性、属性值归纳为RDF,这是一种常见的表达知识图谱的方式。它属于实体属性,常见的还有实体关系。

图1.5 知识图谱节点示例

知识图谱中的节点可以分为以下两种。

(1)实体:指具有可区别性且独立存在的某种事物,如一个人、一座城市、一种商品等。某个时刻、某个地点、某个数值也可以作为实体。实体是一个知识图谱中最基本的元素,每个实体可以用一个全局唯一的ID进行标识。

(2)语义类/概念:语义类指具有某种共同属性的实体的集合,如国家、民族、性别等;而概念则反映一组实体的种类或对象类型,如人物、气候、地理等。

知识图谱中的边分为以下两种。

(1)属性(值):指某个实体可能具有的特征、特性、特点以及参数,是从某个实体指向它的属性值的“边”,不同的属性对应不同的边,而属性值是实体在某一个特定属性下的值。例如,“人口”“首都”是不同的属性,“北京”是中国在“首都”这一属性下的属性值。

(2)关系:是连接不同实体的“边”,可以是因果关系、相近关系、推论关系、组成关系等。在知识图谱中,将关系形式化为一个函数。这个函数把若干个节点映射到布尔值,其取值反映实体间是否具有某种关系。

基于以上定义,可以更好地理解三元组。三元组是知识图谱中的一种基本元素,由三个部分组成:主语、谓语和宾语。主语表示一个实体,谓语表示该实体与另一个实体之间的关系,宾语则表示与主语相关的另一个实体或值。三元组用于描述实体之间的关系,是知识图谱中一种直观、简洁的通用表示方式,能够方便计算机对实体关系进行处理,也是实现语义网的基础。

对于上面三元组的构成,我们用三元组G=(E, R, S)表示知识图谱。其中,E={e1,e2,…,eE}是知识图谱中的实体集合,包含|E|种不同的实体;R={r1, r2,…,rE}是知识图谱中的关系集合,共包含|R|种不同的关系;SE×R×E是知识图谱中的三元组集合。三元组的基本形式主要包括(实体1,关系,实体2)以及(概念属性,属性值)等。(实体1,关系,实体2)和(实体,属性,属性值)都是典型的三元组。