多读书多实践,勤思考善领悟

知识图谱基础 之 一.知识图谱基本概念

本文于1566天之前发表,文中内容可能已经过时。

一. 本体论

1. 定义

维基:本体实际上就是对特定领域之中某套概念及其相互之间关系的形式化表达(formal representation)。

本体就是对那些可能相对于某一智能体(agent)或智能体群体而存在的概念和关系的一种描述。 ——汤姆·格鲁伯——《迈向知识共享型本体的设计原则》

我的理解:本体首先是哲学上提出来的,简单来说就是一种概念,如人这个概念集合,它是一种抽象集合用来表达世界上的具体的实际的物体,而在人工智能领域上我们主要将本体论的观念用在知识表达上,即借由本体论中的基本元素:概念及概念间的关连,作为描述真实世界的知识模型。如图

如我们输入鱼这个名词,可以得知它是一种动物且住在水里。

2. 分类

1)领域本体(domain ontology或者说domain-specific ontology,即领域特异性本体)
所建模的是某个特定领域。如医学领域的氨基酸本体(Amino Acid Ontology)、细胞周期本体(Cell-Cycle Ontology,CCO)、疾病本体(Disease Ontology)等。

2)上层本体(upper ontology或者说foundation ontology,即基础本体)
指一种由那些在各种各样的领域本体之中都普遍适用的共同对象所构成的模型。其中所收录的核心词表,可以用来描述一套领域当中的对象。如openCyc。

3)openCyc:是一个致力于将各个领域的本体及常识知识综合地集成在一起,并在此基础上实现知识推理的人工智能项目。其目标是使人工智能的应用能够以类似人类推理的方式工作。Cyc知识库中表示的知识一般形如“每棵树都是植物”、“植物最终都会死亡”。当提出“树是否会死亡”的问题时,推理引擎可以得到正确的结论,并回答该问题。

3. 本体要素

常见的本体构成要素包括:

  • 个体(实例):基础的或者说“底层的”对象。
  • 类:集合(sets)、概念、对象类型或者说事物的种类。
  • 属性:对象(和类)所可能具有的属性、特征、特性、特点和参数。
  • 关系:类与个体之间的彼此关联所可能具有的方式。
  • 函数术语:在声明语句当中,可用来代替具体术语的特定关系所构成的复杂结构。
  • 约束(限制):采取形式化方式所声明的,关于接受某项断言作为输入而必须成立的情况的描述。
  • 规则:用于描述可以依据特定形式的某项断言所能够得出的逻辑推论的,if-then(前因-后果)式语句形式的声明。
  • 公理:采取特定逻辑形式的断言(包括规则在内)所共同构成的就是其本体在相应应用领域当中所描述的整个理论。这种定义有别于产生式语法和形式逻辑当中所说的“公理”。在这些学科当中,公理之中仅仅包括那些被断言为先验知识的声明。就这里的用法而言,“公理”之中还包括依据公理型声明所推导得出的理论。
  • 事件 (哲学):属性或关系的变化。

4. 本体语言

W3C组织也开始定义了许多本体论的相关语言,如RDF、OWL等。

1)RDF:资源描述框架(Resource Description Framework, 简称 RDF)
是一个用于表达关于万维网(World Wide Web)上的资源的信息的语言. 它专门用于表达关于Web资源的元数据, 比如Web页面的标题、作者和修改时间,Web文档的版权和许可信息,某个被共享资源的可用计划表等。

(就是用URls来标识食物,再用简单的属性来描述事物)

2)网络本体语言 (Ontology Web Language,OWL)
旨在提供一种可用于描述网络文档和应用之中所固有的那些类及其之间关系的语言。

Owl是基于RDF基础之上的,而RDF是建立在XML之上的。

二. 知识图谱的定义

在维基百科的官方词条中:知识图谱是Google用于增强其搜索引擎功能的知识库。本质上, 知识图谱旨在描述真实世界中存在的各种实体或概念及其关系,其构成一张巨大的语义网络图,节点表示实体或概念(也可表示为实体:概念、实例),边则由属性或关系构成。

现在的知识图谱已被用来泛指各种大规模的知识库。 我们先来看下知识类型的定义:

知识图谱中包含的节点:

  • 实体: 指的是具有可区别性且独立存在的某种事物。如某一个人、某一个城市、某一种植物等、某一种商品等等。世界万物由具体事物组成,此指实体。如下图的“中国”、“美国”、“日本”等。实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。

  • 语义类(概念):具有同种特性的实体构成的集合,如国家、民族、书籍、电脑等。 概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等。

  • 内容: 通常作为实体和语义类的名字、描述、解释等,可以由文本、图像、音视频等来表达。

  • 属性(值): 从一个实体指向它的属性值。不同的属性类型对应于不同类型属性的边。属性值主要指对象指定属性的值。如下图所示的“面积”、“人口”、“首都”是几种不同的属性。属性值主要指对象指定属性的值,例如960万平方公里等。

  • 关系: 形式化为一个函数,它把 k k个点映射到一个布尔值。在知识图谱上,关系则是一个把k k个图节点(实体、语义类、属性值)映射到布尔值的函数。

基于上述定义。三元组是知识图谱的一种通用表示方式,即G=(E,R,S),其中E={e1,e2,⋯,e|E|}是知识库中的实体集合,共包含|E|种不同实体;R={r1,r2,⋯,r|E|}是知识库中的关系集合,共包含|R|种不同关系;S⊆E×R×ES⊆E×R×E代表知识库中的三元组集合。

三元组的基本形式主要包括实体1、关系、实体2和概念、属性、属性值等,实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等;属性主要指对象可能具有的属性、特征、特性、特点以及参数,例如国籍、生日等;属性值主要指对象指定属性的值,例如中国、1988-09-08等。每个实体(概念的外延)可用一个全局唯一确定的ID来标识,每个属性-属性值对(attribute-value pair,AVP)可用来刻画实体的内在特性,而关系可用来连接两个实体,刻画它们之间的关联。

就覆盖范围而言,知识图谱也可分为通用知识图谱和行业知识图谱。通用知识图谱注重广度,强调融合更多的实体,较行业知识图谱而言,其准确度不够高,并且受概念范围的影响,很难借助本体库对公理、规则以及约束条件的支持能力规范其实体、属性、实体间的关系等。通用知识图谱主要应用于智能搜索等领域。行业知识图谱通常需要依靠特定行业的数据来构建,具有特定的行业意义。行业知识图谱中,实体的属性与数据模式往往比较丰富,需要考虑到不同的业务场景与使用人员。

如下图的知识图谱例子所示,中国是一个实体,北京是一个实体,中国-首都-北京 是一个(实体-关系-实体)的三元组样例北京是一个实体 ,人口是一种属性2069.3万是属性值。北京-人口-2069.3万构成一个(实体-属性-属性值)的三元组样例。

三. 知识图谱的架构

知识图谱的架构主要包括自身的逻辑结构以及体系架构,分别说明如下。

1. 知识图谱的逻辑结构

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

1)数据层主要是由一系列的事实组成,而知识将以事实为单位进行存储。如果用(实体 A,关系,实体 B)、(实体、属性,属性值)这样的三元组来表达事实,可选择图数据库作为存储介质,例如开源的 Neo4j、Twitter 的 FlockDB、Sones 的 GraphDB 等。

2)模式层构建在数据层之上,主要是通过本体库来规范数据层的一系列事实表达。本体是结构化知识库的概念模板,通过本体库而形成的知识库不仅层次结构较强,并且冗余程度较小。

2. 知识图谱的体系架构

知识图谱的体系架构是指其构建模式结构,其中虚线框内的部分为知识图谱的构建过程,也包含知识图谱的更新过程。如下图所示:

img

知识图谱构建从最原始的数据(包括结构化、半结构化、非结构化数据)出发,采用一系列自动或者半自动的技术手段,从原始数据库和第三方数据库中提取知识事实,并将其存入知识库的数据层和模式层,这一过程包含:信息抽取、知识表示、知识融合、知识推理四个过程,每一次更新迭代均包含这四个阶段。

知识图谱主要有自顶向下与自底向上两种构建方式:

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

2)自底向上指的是从一些开放链接数据中提取出实体,选择其中置信度较高的加入到知识库,再构建顶层的本体模式。目前,大多数知识图谱都采用自底向上的方式进行构建,其中最典型就是 Google 的 Knowledge Vault。

四. 知识图谱技术概览


上图表示了知识图谱的技术体系,首先在最底层我们有大量的文本、结构化数据库、多媒体文件等数据来源。通过知识抽取、知识融合、知识众包等技术,获取我们需要的数据,而后通过知识表示和知识推理、知识链接等将知识规范有序的组织在一起并存储起来。最终用于知识问答、语义搜索、可视化等方面。

1. 知识抽取

知识抽取技术,可以从一些公开的半结构化、非结构化的数据中提取出实体、关系、属性等知识要素。

知识抽取主要包含实体抽取、关系抽取、属性抽取等,涉及到的自然语言处理(NLP) 技术有命名实体识别、句法依存、实体关系识别等。

首先从网络上获取大量的各种非结构化的文本数据,经过文本预处理后得到干净的文本数据。而后借助机器学习相关程序对文本进行分词、词性标注、词法解析、依存分析等工作,此时词法及句法层次的分析结束,接下来对该文本进行 命名实体识别 (NER)和实体链接工作,为关系抽取和时间抽取做准备,最终形成KR用的三元组、多元关系、模态知识等构成知识图谱。

2. 知识表示

知识表示形成的综合向量对知识库的构建、推理、融合以及应用均具有重要的意义。

基于三元组的知识表示形式受到了人们广泛的认可,但是其在计算效率、数据稀疏性等方面却面临着诸多问题。近年来,以深度学习为代表的表示学习技术取得了重要的进展,可以将实体的语义信息表示为稠密低维实值向量,进而在低维空间中高效计算实体、关系及其之间的复杂语义关联。

知识表示学习主要包含的 NLP 技术有语义相似度计算、复杂关系模型,知识代表模型如距离模型、双线性模型、神经张量模型、矩阵分解模型、翻译模型等。

下图给出官方推荐的语义网知识表示框架:

其中最底层的是URI/IRI是网络链接,其上是XML和RDF为资源表示框架。SPARQL是知识查询语言。被蓝色部分覆盖的是推理模块,它包含了如RDFS和OWL这样的支持推理的表示框架。在往上就是trust和interaction部分。

1)RDF

RDF(Resource Description Framework)即资源描述框架,是W3C制定的。用于描述实体/资源的标准数据模型。在知识图谱中,我们用RDF形式化地表示三元关系。(Subject, predicate, object)。例如:

RDFS在RDF的基础上定义了一些固定的关键词如:Class,subClassOf,type, Property, subPropertyOf, Domain, Range以及多了Schema层。它的表示为:

2)OWL

OWL(Web Ontology Language), 这个本体就是从哲学那面借鉴来的。OWL在RDF的基础上扩充了Schema层,使它支持推理等操作。如:

3)SPARQL

SPARQL是RDF的查询语言,它基于RDF数据模型,可以对不同的数据集撰写复杂的连接,由所有主流的图数据库支持。其操作如:

4)JSON-LD

JSON for Linking Data: 适用于作为程序之间做数据交换,在网页中嵌入语义数据和Restful Web Service。存储格式如:

5)知识图谱的分布式表示–KG Embedding

其实看到 Embedding这个词我们就知道,它是一个向量嵌入。详细来说就是在保留语义的同时,将知识图谱中的实体和关系映射到连续的稠密的低维向量空间。

3. 知识融合

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

在知识融合过程中,实体对齐、知识加工是两个重要的过程。

实体融合(Knowledge Fusion),也叫数据连接(Data Linking)等,目的是在不同的数据集中找出一个实体的描述记录,主要目的是对不同的数据源中的实体进行整合,形成更加全面的实体信息。典型的工具为Dedupe(一个基于python的工具包)和LIMES。

4. 知识推理

知识推理则是在已有的知识库基础上进一步挖掘隐含的知识,从而丰富、扩展知识库。在推理的过程中,往往需要关联规则的支持。由于实体、实体属性以及关系的多样性,人们很难穷举所有的推理规则,一些较为复杂的推理规则往往是手动总结的。对于推理规则的挖掘,主要还是依赖于实体以及关系间的丰富情况。知识推理的对象可以是实体、实体的属性、实体间的关系、本体库中概念的层次结构等。

知识推理方法主要可分为基于逻辑的推理与基于图的推理两种类别。

按照解决方法分类可分为:基于描述逻辑的推理、基于规则挖掘的推理、基于概率逻辑的推理、基于表示学习与神经网络的推理。按照推理类型分类可分为:缺省推理、连续变化推理、空间推理、因果关系推理等等。

5. 知识问答

知识问答(Knowledge-Based Question Answering, KBQA)是基于知识库的问题回答,它以直接而准确的方式回答用户自然语言提问的自动问答系统,它将构成下一代搜索引擎的基本形态。如搜索姚明的身高,就可以给出226cm的回答。其实现流程为:

6. 知识众包

允许各网站基于一定的方式如RDFa、JASON-LD等方式在网页和邮件等数据源中嵌入语义化数据,让个人和企业定制自己的知识图谱信息。

五. 知识图谱的典型应用

知识图谱为互联网上海量、异构、动态的大数据表达、组织、管理以及利用提供了一种更为有效的方式,使得网络的智能化水平更高,更加接近于人类的认知思维。

基于大规模开放知识库或知识图谱的应用,目前尚处在持续不断的发展与探索的阶段。下面列出了一些国内外比较出色的应用。

1. 语义检索

谷歌公司通过建立 Google Knowledge Graph,实现了对知识的体系化组织与展示,试图从用户搜索意图感知、以及查询扩展的角度,直接提供给用户想要的知识。

2. 智能问答

IBM 公司通过搭建知识图谱,并通过自然语言处理和机器学习等技术,开发出了 Watson 系统。在2011年2月的美国问答节目《Jeopardy!》上,Watson 战胜了这一节目的两位冠军选手,可与1996年同样来自 IBM 的“深蓝”战胜国际象棋大师卡斯帕罗夫产生的影响相提并论,被认为是人工智能历史上的一个里程碑。

3. 领域专家快速生成

构建面向特定领域、特定主题的大规模知识库是实现对某一领域深度分析和计算的重要基础,OpenKN 通过实现端到端的开放知识库构建工具集,实现了在给定部分种子(Seed)的情况下,从无到有的生成领域知识库,进而形成领域专家。

4. 行业生态深度分析与预测

利用开放大数据可以帮助企业发现潜伏在数据中的威胁,将结构化网络日志、文本数据、开源和第三方数据整合进一个单一的环境,屏蔽可疑的信号与噪声,有效保护用户网络,可在信用卡欺诈行为识别、医疗行业疾病预测、电商商品推荐、强化组织数据安全、不一致性验证、异常分析、金融量化交易、法律分析服务等多方面提供有价值的服务。

六. 知识图谱的前景与挑战

在关注到知识图谱在自然语言处理、人工智能等领域展现巨大潜力的同时,也不难发现知识图谱中的知识获取、知识表示、知识推理等技术依然面临着一些困难与挑战,在未来的一段时间内,知识图谱将是大数据智能的前沿研究问题,有很多重要的开放性问题亟待学术界和产业界协力解决。我们认为,未来知识图谱研究有以下几个重要挑战:

  • 知识类型与表示。知识图谱主要采用(实体1、关系、实体2)三元组的形式来表示知识,这种方法可以较好地表示很多事实性知识。然而,人类知识类型多样,面对很多复杂知识,三元组就束手无策了。例如,人们的购物记录信息、新闻事件等,包含大量实体及其之间的复杂关系,更不用说人类大量的涉及主观感受、主观情感和模糊的知识了。
  • 知识获取。如何从互联网大数据萃取知识,是构建知识图谱的重要问题。目前已经提出各种知识获取方案,并已成功抽取大量有用的知识。但在抽取知识的准确率、覆盖率和效率等方面,都仍不如人意,有极大的提升空间。
  • 知识融合。来自不同数据的抽取知识可能存在大量噪音和冗余,或者使用了不同的语言。如何将这些知识有机融合起来,建立更大规模的知识图谱,是实现大数据智能的必由之路。
  • 知识应用。目前大规模知识图谱的应用场景和方式还比较有限,如何有效实现知识图谱的应用,利用知识图谱实现深度知识推理,提高大规模知识图谱计算效率,需要人们不断锐意发掘用户需求,探索更重要的应用场景,提出新的应用算法。

参考

知识图谱技术综述: http://www.xml-data.org/dzkj-nature/html/201645589.htm