什么是知识图谱?知识图谱的定义是什么?如何构建知识图谱?知识图谱应该怎么应用?
我想,对于刚接触知识图谱的同学,一定连连摇头。
今天,我们不介绍定义,也不详解具体的构建和应用过程,而是以最容易理解的方式,去了解知识图谱。
顾名思义,“知识图谱”应该拆开分析,“知识”和“图谱”。英文是Knowledge Graph,缩写是KG,如果是复数,还要写成KGs。
从名字来看,知识图谱实际上就是Graph,也就是“图”。
图是什么呢?如果学习过《图论》或《离散数学》等,那么一定对下面这个Graph很熟悉:

没错,这就是一个Graph。A、B、C、D....H这些被圈圈包起来的字母,我们一般称之为“节点”,或者是“顶点”,而标着数字的线段,把节点连接了起来,我们一般称之为“边”。
事实上,“知识图谱”正是这样的结构。只不过,节点不再是字母,边也不再是数字。我们可以用“节点”代表具体的人名、地名等,用“边”代表“节点”之间的关系。
举例来说,(美国,首都,华盛顿),就是说,我们有两个节点“美国”和“华盛顿”,这个时候我们应该在两个节点之间连接上一条边,这条边上边应该写上“首都”。如下图:

显而易见,这就是一条知识,代表了美国的首都是华盛顿。而且一般来说,这两者之间的关系是有向的,也就是说美国的首都是华盛顿,而不能说成是华盛顿的首都是美国。所以说,两者之间的关系是一个单向的箭头。
在知识图谱中,有大量的节点,也有海量的关系。无数条知识,就构成一个巨大的Graph。一般来说,在知识图谱中,我们把节点叫做“实体”(entity),边叫做“关系”(relation)。
到这里,我想有关知识图谱的介绍就可以告一段落了。后续阅读知识图谱相关的文章,不会有太大的障碍。
只不过,还需要额外补充的是,带Knowledge的Graph,和普通的Graph,有什么区别呢?
实际上,Knowledge Graph就是Graph。只是知识图谱更加特殊一点:首先,知识图谱里面的关系普遍是多种多样的,比如说,我们有(美国,首都,华盛顿)这样的知识,也有(莫言,获得,诺贝尔文学奖)这样的知识。知识图谱里面拥有 “首都”、“获得”等等多种多样的关系,是和普通的Graph最大的不同。其次,知识图谱更加强调现实世界的知识,比如说WordNet这个知识图谱,它存储的就是单词与单词之间的关系,而Freebase这个知识图谱,它存储的就是现实世界中人、地点、事物等之间的关系。
那么,在推荐系统这个方向,用到的人和商品之间的购买关系图,这是不是知识图谱呢?也可以是(虽然在科研领域一般不这么认为)。所以,是不是知识图谱,还是很主观的,他有节点,有边,他就可以是知识图谱。
需要注意的是,知识图谱Knowledge Graph原本是谷歌起的一个名字,是谷歌为了提升搜索服务的质量,提出的一个概念。而现在,Knowledge Graph一般不再特指谷歌知识图谱,而是一个非常宽泛,非常通用的概念。所以,在实际学习和应用的过程中,千万不要陷入误区,不要把知识图谱的范围局限的太小。
特别是不计划发表太高质量文章的同学,可以这样理解:万物都可以是知识图谱。人和人之间的社交网络可以是知识图谱吗?可以!文章之间的引用关系,可以是知识图谱吗?可以!在同步阅读“Graph”领域的文章和“Knowledge Graph”领域的文章,我们也许就会发现,大量Graph领域的思想,都用在了Knowledge Graph领域。比如知识图谱嵌入方向的R-GCN算法,它就是借鉴了图卷积的思想。
那么为什么两个领域可以互相借鉴呢?正是我们前面所说的,Knowledge Graph本质上就是一个Graph,只是这个Graph很特殊,关系的类型很多(这一点很重要),里面的数据一般是现实世界的知识。
再深入一点,我们可以把Graph分成两类,一类是同质图,一类是异质图。同质图,就是说,整张图里面的所有的“边”只有一种类型,而异质图就是说,“边”可能很有多种类型。所以我们可以发现,知识图谱就是一种异质图,所以需要设计专门针对异质图的算法来对知识图谱进行处理。
那么,我们怎么对知识图谱进行构建?构建以后如何存储和应用?知识图谱领域又包含了哪些研究方向?后面我们会再详细介绍。




