【知识图谱】概述

时间:2022-11-11 16:16:24

知识工程最早在1977年被提出,当时围绕知识工程的主要研究是专家系统。所谓专家系统是指利用某种方法将专业领域的专家知识收集下来,并存储在程序中,然后利用程序代码模拟人类的思维(推理+搜索)过程,去尝试解决某些专业领域的问题。

专家系统是人工智能发展前期阶段的一个主要研究方向,也是一种利用程序去试图模拟人类在某些特定领域内的思维的一种尝试。

专家系统的核心在于知识表示、知识获取以及推理机制

知识表示是指知识知识的组织结构与表现形式,知识在计算机中的存储形式。知识的表示直接关乎知识的获取以及推理机制。

知识获取是指如何从领域专家或则其它来源去获取和整理知识,获取的内容要全面,但不能冗余,而且还要准确,这是一个比较大的难题。

推理机制是指将人类的推理方法用程序代码表示出来。

这几个方面在之后的二三十年中都各自有一定的发展,直到二十一世纪初,互联网时代的到来,海量数据的爆发,传统的专家系统的模式对这些已经无能为力了,专家系统的思路不能够满足发展对于“智能”方面的需求了。

2012年谷歌提出了知识图谱,不过知识图谱相关的一些技术研究基本都是前面几十年技术的延续,而不是革新。目前,随着智能信息服务应用的不断发展,知识图谱已广泛应用于智能搜索,智能问答,个性化推荐等领域。

知识图谱主要在知识表示方面有了一些比较重大的改变,主要的变化在于更利于海量数据的知识图谱的构建,以及更加利于自动化方法构建,而不是主要依赖人工构建。

传统的专家系统中的知识库的数据量一般在数万或数十万左右,一些经过几十年积累至今的知识库也就几千万的数据量。但是现在比较知名的知识图谱的数据量都在数十到数百亿的量级上。

知识图谱中使用的自动化构建主要是指一些机器学习算法、自然语言处理等方面的内容。

知识加工方面,由于是通过程序自动获取的数据,那么就需要对数据的内容进行处理,包括提取本体、实体、事件来构建本体库、实体库、事件库等,还需要对内容进行匹配,链接,去冗余,融合,以及在知识库中使用推理机制进行内部构建,利用知识发现新的知识等。

在知识的应用方面,从传统的专家系统的注重逻辑推理,转向了注重事实知识的检索,知识图谱更多的下沉到人工智能领域的基础设施中,提供基础的结构化知识,比如基于知识图谱可以构建智能搜索、智能问答、对话机器人等应用,而不是像专家系统那样作为一个独立的应用出现。

语义网

实际上,知识图谱并不是一个全新的概念,早在 2006 年就有文献提出了语义网(Semantic Network)的概念,呼吁推广、完善使用本体模型来形式化表达数据中的隐含语义,RDF(resource description framework,资源描述框架)模式和 OWL(Web ontology language,万维网本体语言)就是基于上述目的产生的。用电子科技大学徐增林教授的论文原文来说:

知识图谱技术的出现正是基于以上相关研究,是对语义网标准与技术的一次扬弃与升华。

语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系(is-a关系,比如:猫是一种哺乳动物;part-of关系,比如:脊椎是哺乳动物的一部分),如下图。在表现形式上,语义网络和知识图谱相似,但语义网络更侧重于描述概念与概念之间的关系,(有点像生物的层次分类体系——界门纲目科属种),而知识图谱则更偏重于描述实体之间的关联

【知识图谱】概述

知识图谱定义

信息与知识

  • 信息是指外部的客观事实。

    举例:这里有一瓶水,它现在是7°。

  • 知识是对外部客观规律的归纳和总结。

    举例:水在零度的时候会结冰。

另一种解读:

在信息的基础上,建立实体之间的联系,就能形成 “知识”

【知识图谱】概述

知识图谱的概念诞生于2012年,由谷歌公司首先提出。大家都知道,谷歌是做搜索引擎的,所以他们最早提出了Google Knowledge Graph后,首先利用知识图谱技术改善了搜索引擎核心。

目前在学术界还没有给知识图谱一个统一的定义,但是在谷歌发布的文档中有明确的描述:“知识图谱是一种用图模型来描述知识和建模世界万物之间关联关系的技术方法”

谷歌的Singhal博士用三个词点出了知识图谱加入之后搜索发生的变化:

“Things,not string.”

知识图谱是由一些相互连接实体和他们的属性构成的

A knowledge graph consists of a set of interconnected typed entities and their attributes.

【知识图谱】概述

在知识图谱中,通过三元组 <实体 × 关系 × 属性> 集合的形式来描述事物之间的关系

  • 实体:又叫作本体,指客观存在并可相互区别的事物,可以是具体的人、事、物,也可以是抽象的概念或联系,实体是知识图谱中最基本的元素
  • 关系:在知识图谱中,边表示知识图谱中的关系,用来表示不同实体间的某种联系
  • 属性:知识图谱中的实体和关系都可以有各自的属性

这里所说的实体和普通意义上的实体略有不同,借用NLP中本体的概念来理解它会比较好:

本体定义了组成主题领域的词汇表的基本术语及其关系,以及结合这些术语和关系来定义词汇表外延的规则

【知识图谱】概述

构建方式

曾经知识图谱非常流行自顶向下(top-down)的构建方式。自顶向下指的是先为知识图谱定义好本体与数据模式,再将实体加入到知识库。该构建方式需要利用一些现有的结构化知识库作为其基础知识库,例如 Freebase 项目就是采用这种方式,它的绝大部分数据是从*中得到的。

然而目前,大多数知识图谱都采用自底向上(bottom-up)的构建方式。自底向上指的是从一些开放链接数据(也就是 “信息”)中提取出实体,选择其中置信度较高的加入到知识库,再构建实体与实体之间的联系。

存储方式

知识图谱主要有两种存储方式:一种是基于RDF的存储;另一种是基于图数据库的存储。它们之间的区别如下图所示。RDF一个重要的设计原则是数据的易发布以及共享,图数据库则把重点放在了高效的图查询和搜索上。其次,RDF以三元组的方式来存储数据而且不包含属性信息,但图数据库一般以属性图为基本的表示形式,所以实体和关系可以包含属性,这就意味着更容易表达现实的业务场景

【知识图谱】概述

从不同的视角去审视知识图谱:

  • 在Web视角下,知识图谱如同简单文本之间的超链接一样,通过建立数据之间的语义链接,支持语义搜索
  • 在自然语言处理视角下,知识图谱就是从文本中抽取语义和结构化的数据
  • 在知识表示视角下,知识图谱是采用计算机符号表示和处理知识的方法
  • 在人工智能视角下,知识图谱是利用知识库来辅助理解人类语言的工具
  • 在数据库视角下,知识图谱是利用图的方式去存储知识的方法

【知识图谱】概述

体系架构

知识图谱的架构主要包括自身的逻辑结构以及体系架构

知识图谱在逻辑结构上可分为模式层与数据层两个层次。

底层存储数据三元组的逻辑层次可以被称为数据层,通常通过本体库来管理数据层,本体库的概念相当于对象中“类”的概念。

而建立在数据层之上的模式层,是知识图谱的核心,它借助本体库来管理公理、规则和约束条件,规范实体、关系、属性这些具体对象间的关系。

知识图谱的体系架构是指其构建模式的结构

【知识图谱】概述

总的来说,整体过程可以分为下面5步:

  1. 数据获取:主要获取半结构化数据,为后续的实体与实体属性构建做准备。结构化数据则为数值属性做准备
  2. 知识抽取:从文本数据集中自动识别出命名实体,包括抽取人名、地名、机构名等;从语料中抽取实体之间的关系,形成关系网络;从不同的信息源中采集特定的属性信息
  3. 知识融合:完成指示代词与先行词的合并;完成同一实体的歧义消除;将已识别的实体对象,无歧义地指向知识库中的目标实体
  4. 知识加工:构建知识概念模块,抽取本体;进行知识图谱推理,并对知识图谱的可信度进行量化评估,评估过关的知识图谱流入知识图谱库中存储,评估不过关的知识图谱返回一开始的数据环节进行调整,而后重复相同环节直到评估过关
  5. 知识存储与计算:存储是为了快速查询与运用知识,需支持底层数据描述与上层计算,有的主体计算包含在存储中

知识抽取

知识抽取主要是面向开放的链接数据,通过自动化的技术抽取出可用的知识单元,知识单元主要包括实体(概念的外延)、关系以及属性3个知识要素,并以此为基础,形成一系列高质量的事实表达,为上层模式层的构建奠定基础。知识抽取有三个主要工作:

  • 实体抽取
  • 关系抽取
  • 属性抽取

实体抽取

实体抽取,在技术上更多称为 NER(named entity recognition,命名实体识别),指的是从原始语料中自动识别出命名实体。由于实体是知识图谱中的最基本元素,其抽取的完整性、准确、召回率等将直接影响到知识库的质量。因此,实体抽取是知识抽取中最为基础与关键的一步;这一过程还是针对不同结构的数据来看:

  • 结构化数据:包括站内/垂直网站信息、部分百科网站信息,可以利用策略模式,将抽取的具体规则用groovy脚本来实现
  • 半结构化数据:包括百科网站中的表格以及列表,可以利用基于监督学习的包装器归纳方法进行抽取
  • 非结构化数据:包括百科网站中的文本以及站内文本,可以利用自然语言处理的手段处理

关系抽取

目标是解决实体间语义链接的问题,早期的关系抽取主要是通过人工构造语义规则以及模板的方法识别实体关系。随后,实体间的关系模型逐渐替代了人工预定义的语法与规则。

回顾一下我们前面提到过的知识图谱三要素,分别是实体、关系和属性。关系抽取我们同样可以用一个三元组表示的RDF graph

【知识图谱】概述

这样的一个(S,P,O)三元组,就可以将一份知识分解为主语、谓语、宾语。这样的SPO结构,在配合知识图谱进行存储时可以被用来当做存储单元。

在RDF中可以声明一些规则,从一些关系推导出另一些关系,这些规则被称为RDF Schema。规则可以用一些词汇表示,如classsubClassOftypepropertysubPropertyOfdomainrange等。

下面这个例子中,节点到节点之间的关系就可以理解为前面提到的本体中的联系,而这一关联过程就可以被称为知识图谱中的推导或关联推理:

【知识图谱】概述

属性抽取

属性抽取主要是针对实体而言的,通过属性可形成对实体的完整勾画。由于实体的属性可以看成是实体与属性值之间的一种名称性关系,因此可以将实体属性的抽取问题转换为关系抽取问题。

知识融合

由于知识图谱中的知识来源广泛,存在知识质量良莠不齐、来自不同数据源的知识重复、知识间的关联不够明确等问题,所以必须要进行知识的融合。知识融合是高层次的知识组织,使来自不同知识源的知识在同一框架规范下进行异构数据整合、消歧、加工、推理验证、更新等步骤,达到数据、信息、方法、经验以及人的思想的融合,形成高质量的知识库。

其中,知识更新是一个重要的部分。人类的认知能力、知识储备以及业务需求都会随时间而不断递增。因此,知识图谱的内容也需要与时俱进,不论是通用知识图谱,还是行业知识图谱,它们都需要不断地迭代更新,扩展现有的知识,增加新的知识。

主要包括指代消解、实体对齐、实体链接等过程

知识补全

知识图谱普遍存在不完备的问题,因此需要基于图谱里已有的关系,去推理出缺失的关系。

在下面的这张知识图谱的实体网络中,黄色的箭头表示已经存在的关系,红色的虚线则是缺失的关系。我们可以根据实体之间的关系,来补全缺失的e3到e4之间的关系。

【知识图谱】概述

补全过程可采用基于路径查找的方法,基于强化学习的方法,基于推理规则的方法,基于元学习的方法等等。

知识存储

知识图谱的存储依赖于图数据库及其引擎,不同厂商的实现可能大有不同,例如可以选用的图数据库有RDF4j、Virtuoso、Neo4j等。例如爱奇艺的图数据库引擎选择了JanusGraph,借助云平台的Hbase和ES集群,搭建了自己的JanusGraph分布式图数据库引擎。

【知识图谱】概述

JanusGraph通过借助外部的存储系统与外部索引系统的支持,支撑了上游的在线查询服务。

总结

从技术来说,知识图谱的难点在于 NLP,因为我们需要机器能够理解海量的文字信息。但在工程上,我们面临更多的问题,来源于知识的获取,知识的融合。搜索领域能做的越来越好,是因为有成千上万(成百万上亿)的用户,用户在查询的过程中,实际也在优化搜索结果,这也是为什么百度的英文搜索不可能超过 Google,因为没有那么多英文用户。知识图谱也是同样的道理,如果将用户的行为应用在知识图谱的更新上,才能走的更远。

Inspiration