本文是基于知乎专栏 https://zhuanlan.zhihu.com/knowledgegraph 的学习笔记,按自己理解简单叙述整理。

知识图谱是什么

我们从传统搜索与知识图谱搜索的不同之处开始说:

对于传统搜索:
从前人们上网查一个东西,输入关键词后出来很多相关链接,比如搜索“周润发”,如下图:
知识图谱---基础概念(学习笔记)
于是人们需要一个个点开这些链接去寻找想要了解的信息,如果想知道他的身世,可能要直接搜“周润发身世”,或者想知道他演的电影,就要搜“周润发 电影”。搜索引擎只是单纯地从各个网页中提取用户输入的关键词进行匹配,然后把结果按相关度排序,再按排序返回搜索出的条目。也就是说,计算机没有去“理解”人们输入的词,而只是把这些词当做一个个字段去匹配而已。

对于知识图谱搜索:

  1. 搜索一个关键词,它返回关于这个关键词的各方面信息,如下图:

知识图谱---基础概念(学习笔记)包括他的经历,生活,主要作品,相关电影,相关艺人等。比传统搜索更全面而系统。百度百科其实就是一个大的中文知识图谱,它把中文中各种各样的“知识”连接起来,可以理解为一个大的知识网络。大家都知道点开百度百科过后里面有许多词都是超链接,一点又进入另一个词条的界面,于是整个中文知识网络大概就有了了如下的结构:
知识图谱---基础概念(学习笔记)
无数的知识点被相互串联起来并且互通。

  1. 在知识图谱搜索中,电脑“理解”了你输入的内容,从而返回了更为精确的结果:
    知识图谱---基础概念(学习笔记)
    图中红框框出的为知识图谱搜索的结果,其他内容为普通搜索结果。
    以及一个更鲜明的例子,感受一下什么叫做“理解”了你输入的内容:
    知识图谱---基础概念(学习笔记)
    所以谷歌在于2012年5月16日发布知识图谱时候的宣传语是“things not strings”。意思是这些“内容”并不是单纯的“字段”而已。

综上所述,知识图谱是个大的知识网络,而且能一定程度上“理解”人们输入的内容。那么这种“理解”是怎么实现的呢。如上面我们输入的这句话“成龙的儿子的爸爸的妻子”,联系上面那幅大脑形状的图,“成龙”“林凤娇”“房祖名”分别是大脑中一个一个的亮点。“的儿子”是一条由“成龙”指向“房祖名”的线,“的爸爸”是一条从“房祖名”指向“成龙”的线,“的妻子”是一条由成龙指向“林凤娇”的线。于是搜索引擎找到了最终结果—林凤娇。

两个节点,一条线,是知识图谱的基本单位,我们把这两个点叫做“实体”(entity),这条线叫做“关系”(relation)。像上述这样有方向的一段关系中,关系出发的那个节点叫做“主体”(subject),中间的属性叫做“谓语”(predicate),指向的节点叫“宾语”(object)。形成如下的SPO三元组结构:
知识图谱---基础概念(学习笔记)

(当然中间的这条线也可以是双向的比如“夫妻”。这里暂不赘述。)
无数这样的三元组构成了一个巨大的网络,就是我们的知识图谱。所以我们知道了如下概念:

  1. 知识图谱是由无数知识相互连接形成的巨大网络。
  2. 知识图谱的基本单位是一个个三元组,一个三元组可以表示两个实体之间的关系。
    所以我们可以说:知识图谱是表示实体之间关系的巨大网络。

而这些实体的关系,即是一个一个的小“知识”,所以叫“知识”图谱吧。

知识图谱的大致构建流程

  1. 信息获取,形成结构化的数据;
  2. 把数据按三元组形式连接起来;
  3. 形成可用网络;

简单粗暴的三部其实包含了很多信息。第一步中涉及数据挖掘、自然语言处理等;第二步涉及结构化数据到RDF(Resource Description Framework)的转化;第三步涉及工程化的内容。

第一部分相当于一些准备工作,第三部分主要是应用,所以这里主要展开讲第二部分。实践内容在下一篇文章里。接下来先做一些概念铺垫。

RDF,RDFS,与OWL

RDF
即资源描述框架,是一个用于表达万维网上资源信息的语言,常用来表达知识图谱中的这类三元组。基于它开发出的SPARQL(SPARQL Protocol and RDF Query Language)可以用来查询这类结构的数据。就像sql(Structured Query Language)被我们用来查询结构化数据一样。

如上所述,RDF由节点和边组成,节点表示实体、属性,边表示关系,其形式上表示为SPO三元组,一个三元组称为一条“知识”。
那么RDF数据怎么储存和传输呢,主要可以把他们序列化(Serialization)为:
RDF/XML,N-Triples,Turtle,RDFa,JSON-LD等形式。

RDFS
即“Resource Description Framework Schema”,对RDF的数据进行预定义。相当于RDF的扩展,以解决RDF无法区分类和对象,也无法定义和描述类的关系/属性的问题。类似于把不同的“实体”分为大类。比如“成龙”“房祖名”都属于“人”这个类。“身高”“体重”都属于"身体属性"这个类。还可以根据需要把大类再归于更高级别的类,如“人类”“猫科动物类”都属于“哺乳类”。以此类推。

OWL
即“Web Ontology Language”,对RDFS的扩展,添加可额外的自定义词汇,主要是实现高效的自动推理。如属性的传递性(如A位于B,B位于C, 那么A位于C),对称性(如A与B在一个班,那么B与A在一个班),唯一性(A是B的生母,C是B的生母,那么A=C),相反关系(A是B的父母,那么B是A的子女)等。括号里“那么”后面的内容即是推断出来的。OWL便是通过预定义实现这些自动推理。

相关文章: