知识图谱概述知识图谱的构建,用户可以使用自然语言来查询相关的信息,更加符合人的思维方式,从而更快速的帮助用户找到所需的信息。目前除了搜索引擎之外,知识图谱还广泛应用于社交、金融、教育、医疗等多个领域。接下来,我们分别详细介绍一下知识图谱的技术要点。
1. 知识图谱概述 1.1 什么是知识图谱人工智能的终极目标,是让计算机可以使用人类思考问题的方式来解决问题,达到智能化从而解放人类的脑力,让人们的生活更加便捷,更加有效率。虽然自90年代以来互联网技术已经蓬勃发展了30年,但是计算机的能力还远远达不到人们期望的智能化水平,根本的原因在于目前计算机对于数据的存储和使用方式,与人脑思考问题的方式还有着本质上的区别。
目前以网页为主要载体的互联网信息,都是以字符串、数组等半结构化的数据类型组合而成的超文本链接。对于计算机而言,任何一个以文字来表示的信息都是0和1组成的二进制字符串,其中的差异只是文本存储空间所占大小的不同,文字所表示的语义信息并不能被计算机所理解。
而人却可以从不同的文字中解读不同的信息,这是因为人可以理解不同的文字所指代的不同含义,并且可以根据一些规则,对文字之间的关系进行推理。
举个简单的例子来说,当看到“他儿子今年出生了”这段文字时,我们可以推断出文中的“他”应该有个妻子,也就是“儿子”的母亲,并且儿子的年龄是现在是0岁。虽然文字中并没有明确的表达这些信息,但可以根据常识推断出这些信息,这些常识或者规则我们称之为“知识”。
那么,有没有可能让计算机可以理解这些文字所代表的真实含义,做到像人一样通过知识对这些信息进行理解和推理呢?
万维网之父蒂姆·伯纳斯·李(Tim Berners-Lee)曾说过:“我有两个梦想:第一个是连接世界上的每个人,现在这个梦想已经通过互联网实现了,第二个梦想是连接世界上的每个事物,这个光荣的使命交给了语义网。”
时至今日,这项技术已经经历了语义网络、本体论、语义网、链接数据、知识图谱几个阶段。
在2012年,谷歌首次将知识图谱技术应用在搜索引擎中,以提升搜索的能力。在过去没有使用知识图谱技术时,用户搜索某些信息,搜索引擎会将搜索的关键词与网站的文本做匹配,根据匹配度来展示对应的网页信息,所以如果用户想知道一个问题的答案,但却不知道答案的关键词应该搜什么的时候,往往会搜不到自己想要的结果。
但引入知识图谱之后,引擎会根据知识图谱来展示相关信息,用户可以使用自然语言来进行搜索,搜索引擎分析用户的问题之后根据知识图谱来查询对应的结果,自此正式开始了知识图谱在产品中的应用。
现在各大搜索引擎也都会根据知识图谱来展示搜索的内容,例如在百度中搜索“中国的首都”,搜索的结果会直接显示“北京市”相关的百度百科信息,如图所示。
通过知识图谱的构建,用户可以使用自然语言来查询相关的信息,更加符合人的思维方式,从而更快速的帮助用户找到所需的信息。目前除了搜索引擎之外,知识图谱还广泛应用于社交、金融、教育、医疗等多个领域。接下来,我们分别详细介绍一下知识图谱的技术要点。
1.2 对象、实例与RDF知识表示首先,我们需要了解一下如何描述一个“知识”。在之前的章节,我们提到过数据分为三种类型,分别是名义数据、登记数据和连续数据。但是日常生活中不是所有的事物都可以用这三个数据类型来被描述,比如一个人、一张图片、一段视频,这些东西应该怎么描述呢?这里要用到面向对象的概念。
什么是对象呢?我们刚说的一个人、一张照片、一段视频,都可以称之为一个对象,对象中包含了各种各样的属性,例如人有名字,年龄,身高这些属性,每个人都会有这些属性,但属性的值可能不一样,当我们把属性的值具象化之后,就可以定义到一个具体的人,例如张三,那么张三就称之为人这个对象的实例。
如图所示:
对于对象而言,如果互相之间存在包含关系,则称之为父类对象和子类对象。例如把人作为一个对象,这个对象其实可以进一步细分为男人和女人,那么人就是男人的父类对象,男人是人的子类对象,张三则是男人这个子类对象的实例。如图所示:
了解了对象、类与实例之间的关系之后,我们就可以进入到知识图谱的正题——知识表示了。根据Web技术领域权威标准机构W3C指定的知识图谱描述标准,所有的知识应该用资源描述框架(Resource Description Framework,RDF)进行描述,并对其他与知识图谱相关的技术进行了定义,如图所示:
RDF中的R表示页面、图片、视频等任何具有统一资源标识符(Uniform Resource Identifier,URI)的资源,D表示属性,即特征和资源之间的关系,F表示模型以及描述的语法。简单来说,每一条RDF知识表述都可以以一个主谓宾的语句形式出现,例如{中国,首都是,北京},其中“中国”“北京”是两个实体,而“首都是”则表示两个实体之间的关系。
在RDF中总是两个实体,以及两个实体之间的关系三者构成,所以RDF又简称三元组,如图所示:
需要注意的是,每个RDF的实体都要有一个唯一的URI进行标识,但RDF也是允许空白节点存在的,同时实体资源也可以允许匿名资源的存在,即不标识具体的资源,只标识资源的类型,作为连接别的实体的桥梁。
虽然RDF是知识图谱的基石,但其本身对于事物的描述能力非常有限,根据RDF的定义我们可以发现,组成RDF的三元组中,两个实体都具有唯一标识,因此缺乏泛化抽象的能力,无法对同一个类别的事物进行定义和描述。举个例子来说,我们可以通过RDF来描述中国的首都是北京,但如果希望归纳出所有国家与首都之间的关系以及他们的属性,仅仅用一条实例的RDF是无法实现的。
知识的泛化能力对于知识图谱实现智能化而言非常重要,只有具备归纳出抽象知识的能力,才能覆盖更广泛的知识。那么要如何做才能解决RDF的这个问题呢?
我们在之前讲解了父类、子类与实例之间的关系,对于RDF而言也可以通过类似的结构来对知识进行泛化的描述,这就是我们接下来要讲到的本体语言——RDFS和OWL。
1.3 RDFS与OWL本体语言RDFS是最基础的本体语言,其中的S表示Schema,可以表示某些实例的抽象属性。具体而言,包括的核心词汇如表所示: