什么是知识图谱

1. 来源

2012年5月17日,Google正式提出了知识图谱(Knowledge Graph)的概念,其初衷是为了优化搜索引擎返回的结果,增强用户搜索质量及体验。

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

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

目前,随着智能信息服务应用的不断发展,知识图谱已广泛应用于智能搜索,智能问答,个性化推荐等领域。

2. 定义

知识图谱,本质上,是一种揭示实体之间关系的语义网络。

看一张简单的知识图谱:

img

如图所示,你可以看到,如果两个节点之间存在关系,他们就会被一条无向边连接在一起,那么这个节点,我们就称为实体(Entity),它们之间的这条边,我们就称为关系(Relationship)。

如果你看过网络综艺《奇葩说》第五季第17期:你是否支持全人类一秒知识共享,你也许会被辩手陈铭的辩论印象深刻。他在节目中区分了信息和知识两个概念:

信息是指外部的客观事实。举例:这里有一瓶水,它现在是7°。

知识是对外部客观规律的归纳和总结。举例:水在零度的时候会结冰。

“客观规律的归纳和总结” 似乎有些难以实现。Quora 上有另一种经典的解读,区分 “信息” 和 “知识” 。

img

这样我们就很容易理解,在信息的基础上,建立实体之间的联系,就能行成 “知识”,或者称为叫事实(Fact)更为合适。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Object)。

img

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

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

3. 数据类型和存储方式

知识图谱的原始数据类型一般来说有三类(也是互联网上的三类原始数据):

  • 结构化数据(Structed Data):如关系数据库

  • 半结构化数据(Semi-Structed Data):如XML、JSON、百科

  • 非结构化数据(UnStructed Data):如图片、音频、视频、文本

如何存储上面这三类数据类型呢?一般有两种选择,一个是通过RDF(资源描述框架)这样的规范存储格式来进行存储,还有一种方法,就是使用图数据库来进行存储,常用的有Neo4j等。

4. 体系架构

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

知识图谱在逻辑结构上可分为模式层数据层两个层次,数据层主要是由一系列的事实组成,而知识将以事实为单位进行存储。如果用(实体1,关系,实体2)、(实体、属性,属性值)这样的三元组来表达事实,可选择图数据库作为存储介质,例如开源的 Neo4j、Twitter 的 FlockDB、JanusGraph 等。模式层构建在数据层之上,主要是通过本体库来规范数据层的一系列事实表达。本体是结构化知识库的概念模板,通过本体库而形成的知识库不仅层次结构较强,并且冗余程度较小。

知识图谱的体系架构是指其构建模式的结构,如下图所示:

img

img

大规模知识库的构建与应用需要多种智能信息处理技术的支持。通过知识抽取技术,可以从一些公开的半结构化、非结构化的数据中提取出实体、关系、属性等知识要素。通过知识融合,可消除实体、关系、属性等指称项与事实对象之间的歧义,形成高质量的知识库。知识推理则是在已有的知识库基础上进一步挖掘隐含的知识,从而丰富、扩展知识库。分布式的知识表示形成的综合向量对知识库的构建、推理、融合以及应用均具有重要的意义。

5. 知识抽取

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

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

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

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

6. 知识表示

近年来,以深度学习为代表的表示学习技术取得了重要的进展,可以将实体的语义信息表示为稠密低维实值向量,进而在低维空间中高效计算实体、关系及其之间的复杂语义关联,对知识库的构建、推理、融合以及应用均具有重要的意义。

7. 知识融合

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

  • 实体链接:是指对于从文本中抽取得到的实体对象,将其链接到知识库中对应的正确实体对象的操作。

  • 知识合并:常见的知识合并需求有两个,一个是合并外部知识库,另一个是合并关系数据库。

8. 知识加工

事实本身并不等于知识。要想最终获得结构化,网络化的知识体系,还需要经历知识加工的过程。知识加工主要包括三方面内容:本体构建知识推理质量评估

9. 知识更新

从逻辑上看,知识库的更新包括概念层的更新数据层的更新

  • 概念层的更新是指新增数据后获得了新的概念,需要自动将新的概念添加到知识库的概念层中。

  • 数据层的更新主要是新增或更新实体、关系、属性值,对数据层进行更新需要考虑数据源的可靠性、数据的一致性(是否存在矛盾或冗杂等问题)等可靠数据源,并选择在各数据源中出现频率高的事实和属性加入知识库。

知识图谱的内容更新有两种方式:

  • 全面更新:指以更新后的全部数据为输入,从零开始构建知识图谱。这种方法比较简单,但资源消耗大,而且需要耗费大量人力资源进行系统维护;

  • 增量更新:以当前新增数据为输入,向现有知识图谱中添加新增知识。这种方式资源消耗小,但目前仍需要大量人工干预(定义规则等),因此实施起来十分困难。

10. 知识图谱应用

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

智能搜索,智能问答,社交网络,个性化推荐,情报分析,反欺诈等等

11. 总结

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

知识图谱肯定不是人工智能的最终答案,但知识图谱这种综合各项计算机技术的应用方向,一定是人工智能未来的形式之一。

12. 参考资料

https://www.cnblogs.com/huangyc/p/10043749.html

https://zhuanlan.zhihu.com/p/71128505