一.知识图谱技术综述
知识图谱技术是人工智能技术的组成部分,其强大的语义处理和互联组织能力,为智能化信息应用提供了基础。以下内容涵盖了基本定义与架构、代表性知识图谱库、构建技术、开源库和典型应用。
引言
随着互联网的发展,网络数据内容呈现爆炸式增长的态势。由于互联网内容的大规模、异质多元、组织结构松散的特点,给人们有效获取信息和知识提出了挑战。知识图谱(Knowledge Graph) 以其强大的语义处理能力和开放组织能力,为互联网时代的知识化组织和智能应用奠定了基础。最近,大规模知识图谱库的研究和应用在学术界和工业界引起了足够的注意力[1-5]。一个知识图谱旨在描述现实世界中存在的实体以及实体之间的关系。知识图谱于2012年5月17日由[Google]正式提出[6],其初衷是为了提高搜索引擎的能力,改善用户的搜索质量以及搜索体验。随着人工智能的技术发展和应用,知识图谱作为关键技术之一,已被广泛应用于智能搜索、智能问答、个性化推荐、内容分发等领域。
知识图谱的定义
在维基百科的官方词条中:知识图谱是Google用于增强其搜索引擎功能的知识库。本质上, 知识图谱旨在描述真实世界中存在的各种实体或概念及其关系,其构成一张巨大的语义网络图,节点表示实体或概念,边则由属性或关系构成。现在的知识图谱已被用来泛指各种大规模的知识库。 在具体介绍知识图谱的定义,我们先来看下知识类型的定义:
知识图谱中包含三种节点:
实体: 指的是具有可区别性且独立存在的某种事物。如某一个人、某一个城市、某一种植物等、某一种商品等等。世界万物有具体事物组成,此指实体。如图1的“中国”、“美国”、“日本”等。,实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。
语义类(概念):具有同种特性的实体构成的集合,如国家、民族、书籍、电脑等。 概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等。
内容: 通常作为实体和语义类的名字、描述、解释等,可以由文本、图像、音视频等来表达。
属性(值): 从一个实体指向它的属性值。不同的属性类型对应于不同类型属性的边。属性值主要指对象指定属性的值。如图1所示的“面积”、“人口”、“首都”是几种不同的属性。属性值主要指对象指定属性的值,例如960万平方公里等。
关系: 形式化为一个函数,它把kk个点映射到一个布尔值。在知识图谱上,关系则是一个把kk个图节点(实体、语义类、属性值)映射到布尔值的函数。
基于上述定义。基于三元组是知识图谱的一种通用表示方式,即,其中,是知识库中的实体集合,共包含|E|种不同实体; 是知识库中的关系集合,共包含|R|种不同关系;代表知识库中的三元组集合。三元组的基本形式主要包括(实体1-关系-实体2)和(实体-属性-属性值)等。每个实体(概念的外延)可用一个全局唯一确定的ID来标识,每个属性-属性值对(attribute-value pair,AVP)可用来刻画实体的内在特性,而关系可用来连接两个实体,刻画它们之间的关联。如下图1的知识图谱例子所示,中国是一个实体,北京是一个实体,中国-首都-北京 是一个(实体-关系-实体)的三元组样例北京是一个实体 ,人口是一种属性2069.3万是属性值。北京-人口-2069.3万构成一个(实体-属性-属性值)的三元组样例。
图1 知识图谱示例
知识图谱的架构
知识图谱的架构包括自身的逻辑结构以及构建知识图谱所采用的技术(体系)架构。
1) 知识图谱的逻辑结构
知识图谱在逻辑上可分为模式层与数据层两个层次,数据层主要是由一系列的事实组成,而知识将以事实为单位进行存储。如果用(实体1,关系,实体2)、(实体、属性,属性值)这样的三元组来表达事实,可选择图数据库作为存储介质,例如开源的Neo4j[7]、Twitter的FlockDB[8]、sones的GraphDB[9]等。模式层构建在数据层之上,是知识图谱的核心,通常采用本体库来管理知识图谱的模式层。本体是结构化知识库的概念模板,通过本体库而形成的知识库不仅层次结构较强,并且冗余程度较小。
2) 知识图谱的体系架构
图2 知识图谱的技术架构
知识图谱的体系架构是其指构建模式结构,如图2所示。其中虚线框内的部分为知识图谱的构建过程,也包含知识图谱的更新过程。知识图谱构建从最原始的数据(包括结构化、半结构化、非结构化数据)出发,采用一系列自动或者半自动的技术手段,从原始数据库和第三方数据库中提取知识事实,并将其存入知识库的数据层和模式层,这一过程包含:信息抽取、知识表示、知识融合、知识推理四个过程,每一次更新迭代均包含这四个阶段。知识图谱主要有自顶向下(top-down)与自底向上(bottom-up)两种构建方式。自顶向下指的是先为知识图谱定义好本体与数据模式,再将实体加入到知识库。该构建方式需要利用一些现有的结构化知识库作为其基础知识库,例如Freebase项目就是采用这种方式,它的绝大部分数据是从维基百科中得到的。自底向上指的是从一些开放链接数据中提取出实体,选择其中置信度较高的加入到知识库,再构建顶层的本体模式[10]。目前,大多数知识图谱都采用自底向上的方式进行构建,其中最典型就是Google的Knowledge Vault[11]和微软的Satori知识库。现在也符合互联网数据内容知识产生的特点。
代表性知识图谱库
根据覆盖范围而言,知识图谱也可分为开放域通用知识图谱和垂直行业知识图谱[12]。开放通用知识图谱注重广度,强调融合更多的实体,较垂直行业知识图谱而言,其准确度不够高,并且受概念范围的影响,很难借助本体库对公理、规则以及约束条件的支持能力规范其实体、属性、实体间的关系等。通用知识图谱主要应用于智能搜索等领域。行业知识图谱通常需要依靠特定行业的数据来构建,具有特定的行业意义。行业知识图谱中,实体的属性与数据模式往往比较丰富,需要考虑到不同的业务场景与使用人员。下图展示了现在知名度较高的大规模知识库。
图3 代表性知识图谱库概览
知识图谱构建的关键技术
大规模知识库的构建与应用需要多种技术的支持。通过知识提取技术,可以从一些公开的半结构化、非结构化和第三方结构化数据库的数据中提取出实体、关系、属性等知识要素。知识表示则通过一定有效手段对知识要素表示,便于进一步处理使用。然后通过知识融合,可消除实体、关系、属性等指称项与事实对象之间的歧义,形成高质量的知识库。知识推理则是在已有的知识库基础上进一步挖掘隐含的知识,从而丰富、扩展知识库。分布式的知识表示形成的综合向量对知识库的构建、推理、融合以及应用均具有重要的意义。接下来,本文将以知识抽取、知识表示、知识融合以及知识推理技术为重点,选取代表性的方法,说明其中的相关研究进展和实用技术手段 。
1 知识提取
知识抽取主要是面向开放的链接数据,通常典型的输入是自然语言文本或者多媒体内容文档(图像或者视频)等。然后通过自动化或者半自动化的技术抽取出可用的知识单元,知识单元主要包括实体(概念的外延)、关系以及属性3个知识要素,并以此为基础,形成一系列高质量的事实表达,为上层模式层的构建奠定基础。
1.1 实体抽取
实体抽取也称为命名实体学习(named entity learning) 或命名实体识别 (named entity recognition),指的是从原始数据语料中自动识别出命名实体。由于实体是知识图谱中的最基本元素,其抽取的完整性、准确率、召回率等将直接影响到知识图谱构建的质量。因此,实体抽取是知识抽取中最为基础与关键的一步。参照文献[13],我们可以将实体抽取的方法分为4种:基于百科站点或垂直站点提取、基于规则与词典的方法、基于统计机器学习的方法以及面向开放域的抽取方法。基于百科站点或垂直站点提取则是一种很常规基本的提取方法;基于规则的方法通常需要为目标实体编写模板,然后在原始语料中进行匹配;基于统计机器学习的方法主要是通过机器学习的方法对原始语料进行训练,然后再利用训练好的模型去识别实体;面向开放域的抽取将是面向海量的Web语料[14]。
1) 基于百科或垂直站点提取
基于百科站点或垂直站点提取这种方法是从百科类站点(如维基百科、百度百科、互动百科等)的标题和链接中提取实体名。这种方法的优点是可以得到开放互联网中最常见的实体名,其缺点是对于中低频的覆盖率低。与一般性通用的网站相比,垂直类站点的实体提取可以获取特定领域的实体。例如从豆瓣各频道(音乐、读书、电影等)获取各种实体列表。这种方法主要是基于爬取技术来实现和获取。基于百科类站点或垂直站点是一种最常规和基本的方法。
2) 基于规则与词典的实体提取方法
早期的实体抽取是在限定文本领域、限定语义单元类型的条件下进行的,主要采用的是基于规则与词典的方法,例如使用已定义的规则,抽取出文本中的人名、地名、组织机构名、特定时间等实体[15]。文献[16]首次实现了一套能够抽取公司名称的实体抽取系统,其中主要用到了启发式算法与规则模板相结合的方法。然而,基于规则模板的方法不仅需要依靠大量的专家来编写规则或模板,覆盖的领域范围有限,而且很难适应数据变化的新需求。
3) 基于统计机器学习的实体抽取方法
鉴于基于规则与词典实体的局限性,为具更有可扩展性,相关研究人员将机器学习中的监督学习算法用于命名实体的抽取问题上。例如文献[17]利用KNN算法与条件随机场模型,实现了对Twitter文本数据中实体的识别。单纯的监督学习算法在性能上不仅受到训练集合的限制,并且算法的准确率与召回率都不够理想。相关研究者认识到监督学习算法的制约性后,尝试将监督学习算法与规则相互结合,取得了一定的成果。例如文献[18]基于字典,使用最大熵算法在Medline论文摘要的GENIA数据集上进行了实体抽取实验,实验的准确率与召回率都在70%以上。近年来随着深度学习的兴起应用,基于深度学习的命名实体识别得到广泛应用。在文献[19],介绍了一种基于双向LSTM深度神经网络和条件随机场的识别方法,在测试数据上取得的最好的表现结果。
图4 基于BI-LSTM和CRF的架构
4) 面向开放域的实体抽取方法
针对如何从少量实体实例中自动发现具有区分力的模式,进而扩展到海量文本去给实体做分类与聚类的问题,文献[20]提出了一种通过迭代方式扩展实体语料库的解决方案,其基本思想是通过少量的实体实例建立特征模型,再通过该模型应用于新的数据集得到新的命名实体。文献[21]提出了一种基于无监督学习的开放域聚类算法,其基本思想是基于已知实体的语义特征去搜索日志中识别出命名的实体,然后进行聚类。
1.2 语义类抽取
语义类抽取是指从文本中自动抽取信息来构造语义类并建立实体和语义类的关联, 作为实体层面上的规整和抽象。以下介绍一种行之有效的语义类抽取方法,包含三个模块:并列度相似计算、上下位关系提取以及语义类生成 [22]。
1) 并列相似度计算
并列相似度计算其结果是词和词之间的相似性信息,例如三元组(苹果,梨,s1)表示苹果和梨的相似度是s1。两个词有较高的并列相似度的条件是它们具有并列关系(即同属于一个语义类),并且有较大的关联度。按照这样的标准,北京和上海具有较高的并列相似度,而北京和汽车的并列相似度很低(因为它们不属于同一个语义类)。对于海淀、朝阳、闵行三个市辖区来说,海淀和朝阳的并列相似度大于海淀和闵行的并列相似度(因为前两者的关联度更高)。
当前主流的并列相似度计算方法有分布相似度法(distributional similarity) 和模式匹配法(pattern Matching)。分布相似度方法[23-24]基于哈里斯(Harris)的分布假设(distributional hypothesis)[25],即经常出现在类似的上下文环境中的两个词具有语义上的相似性。分布相似度方法的实现分三个步骤:第一步,定义上下文;第二步,把每个词表示成一个特征向量,向量每一维代表一个不同的上下文,向量的值表示本词相对于上下文的权重;第三步,计算两个特征向量之间的相似度,将其作为它们所代表的词之间的相似度。 模式匹配法的基本思路是把一些模式作用于源数据,得到一些词和词之间共同出现的信息,然后把这些信息聚集起来生成单词之间的相似度。模式可以是手工定义的,也可以是根据一些种子数据而自动生成的。分布相似度法和模式匹配法都可以用来在数以百亿计的句子中或者数以十亿计的网页中抽取词的相似性信息。有关分布相似度法和模式匹配法所生成的相似度信息的质量比较参见文献。
2) 上下位关系提取
该该模块从文档中抽取词的上下位关系信息,生成(下义词,上义词)数据对,例如(狗,动物)、(悉尼,城市)。提取上下位关系最简单的方法是解析百科类站点的分类信息(如维基百科的“分类”和百度百科的“开放分类”)。这种方法的主要缺点包括:并不是所有的分类词条都代表上位词,例如百度百科中“狗”的开放分类“养殖”就不是其上位词;生成的关系图中没有权重信息,因此不能区分同一个实体所对应的不同上位词的重要性;覆盖率偏低,即很多上下位关系并没有包含在百科站点的分类信息中。
在英文数据上用Hearst 模式和IsA 模式进行模式匹配被认为是比较有效的上下位关系抽取方法。下面是这些模式的中文版本(其中NPC 表示上位词,NP 表示下位词):
NPC { 包括| 包含| 有} {NP、}* [ 等| 等等]
NPC { 如| 比如| 像| 象} {NP、}*
{NP、}* [{ 以及| 和| 与} NP] 等 NPC
{NP、}* { 以及| 和| 与} { 其它| 其他} NPC
NP 是 { 一个| 一种| 一类} NPC
此外,一些网页表格中包含有上下位关系信息,例如在带有表头的表格中,表头行的文本是其它行的上位词。
3) 语义类生成
该模块包括聚类和语义类标定两个子模块。聚类的结果决定了要生成哪些语义类以及每个语义类包含哪些实体,而语义类标定的任务是给一个语义类附加一个或者多个上位词作为其成员的公共上位词。此模块依赖于并列相似性和上下位关系信息来进行聚类和标定。有些研究工作只根据上下位关系图来生成语义类,但经验表明并列相似性信息对于提高最终生成的语义类的精度和覆盖率都至关重要。
1.3 属性和属性值抽取
属性提取的任务是为每个本体语义类构造属性列表(如城市的属性包括面积、人口、所在国家、地理位置等),而属性值提取则为一个语义类的实体附加属性值。属性和属性值的抽取能够形成完整的实体概念的知识图谱维度。常见的属性和属性值抽取方法包括从百科类站点中提取,从垂直网站中进行包装器归纳,从网页表格中提取,以及利用手工定义或自动生成的模式从句子和查询日志中提取。
常见的语义类/ 实体的常见属性/ 属性值可以通过解析百科类站点中的半结构化信息(如维基百科的信息盒和百度百科的属性表格)而获得。尽管通过这种简单手段能够得到高质量的属性,但同时需要采用其它方法来增加覆盖率(即为语义类增加更多属性以及为更多的实体添加属性值)。
图5 爱因斯坦信息页
由于垂直网站(如电子产品网站、图书网站、电影网站、音乐网站)包含有大量实体的属性信息。例如上图的网页中包含了图书的作者、出版社、出版时间、评分等信息。通过基于一定规则模板建立,便可以从垂直站点中生成包装器(或称为模版),并根据包装器来提取属性信息。从包装器生成的自动化程度来看,这些方法可以分为手工法(即手工编写包装器)、监督方法、半监督法以及无监督法。考虑到需要从大量不同的网站中提取信息,并且网站模版可能会更新等因素,无监督包装器归纳方法显得更加重要和现实。无监督包装器归纳的基本思路是利用对同一个网站下面多个网页的超文本标签树的对比来生成模版。简单来看,不同网页的公共部分往往对应于模版或者属性名,不同的部分则可能是属性值,而同一个网页中重复的标签块则预示着重复的记录。
属性抽取的另一个信息源是网页表格。表格的内容对于人来说一目了然,而对于机器而言,情况则要复杂得多。由于表格类型千差万别,很多表格制作得不规则,加上机器缺乏人所具有的背景知识等原因,从网页表格中提取高质量的属性信息成为挑战。
上述三种方法的共同点是通过挖掘原始数据中的半结构化信息来获取属性和属性值。与通过“阅读”句子来进行信息抽取的方法相比,这些方法绕开了自然语言理解这样一个“硬骨头”而试图达到以柔克刚的效果。在现阶段,计算机知识库中的大多数属性值确实是通过上述方法获得的。但现实情况是只有一部分的人类知识是以半结构化形式体现的,而更多的知识则隐藏在自然语言句子中,因此直接从句子中抽取信息成为进一步提高知识库覆盖率的关键。当前从句子和查询日志中提取属性和属性值的基本手段是模式匹配和对自然语言的浅层处理。图6 描绘了为语义类抽取属性名的主框架(同样的过程也适用于为实体抽取属性值)。图中虚线左边的部分是输入,它包括一些手工定义的模式和一个作为种子的(词,属性)列表。模式的例子参见表3,(词,属性)的例子如(北京,面积)。在只有语义类无关的模式作为输入的情况下,整个方法是一个在句子中进行模式匹配而生成(语义类,属性)关系图的无监督的知识提取过程。此过程分两个步骤,第一个步骤通过将输入的模式作用到句子上而生成一些(词,属性)元组,这些数据元组在第二个步骤中根据语义类进行合并而生成(语义类,属性)关系图。在输入中包含种子列表或者语义类相关模式的情况下,整个方法是一个半监督的自举过程,分三个步骤:
模式生成:在句子中匹配种子列表中的词和属性从而生成模式。模式通常由词和属性的环境信息而生成。
模式匹配。
模式评价与选择:通过生成的(语义类,属性)关系图对自动生成的模式的质量进行自动评价并选择高分值的模式作为下一轮匹配的输入。
1.3 关系抽取
关系抽取的目标是解决实体语义链接的问题。关系的基本信息包括参数类型、满足此关系的元组模式等。例如关系BeCapitalOf(表示一个国家的首都)的基本信息如下:
参数类型:(Capital, Country)
模式:
元组:(北京,中国);(华盛顿,美国);Capital 和 Country表示首都和国家两个语义类。
早期的关系抽取主要是通过人工构造语义规则以及模板的方法识别实体关系。随后,实体间的关系模型逐渐替代了人工预定义的语法与规则。但是仍需要提前定义实体间的关系类型。 文献[26]提出了面向开放域的信息抽取框架 (open information extraction,OIE),这是抽取模式上的一个巨大进步。但OIE方法在对实体的隐含关系抽取方面性能低下,因此部分研究者提出了基于马尔可夫逻辑网、基于本体推理的深层隐含关系抽取方法[27]。
开放式实体关系抽取
开放式实体关系抽取可分为二元开放式关系抽取和n元开放式关系抽取。在二元开放式关系抽取中,早期的研究有KnowItAll[28]与TextRunner[27]系统,在准确率与召回率上表现一般。文献[29]提出了一种基于Wikipedia的OIE方法WOE,经自监督学习得到抽取器,准确率较TextRunner有明显的提高。针对WOE的缺点,文献[30]提出了第二代OIE ReVerb系统,以动词关系抽取为主。文献[31]提出了第三代OIE系统OLLIE(open language learning for information extraction),尝试弥补并扩展OIE的模型及相应的系统,抽取结果的准确度得到了增强。
然而,基于语义角色标注的OIE分析显示:英文语句中40%的实体关系是n元的[32],如处理不当,可能会影响整体抽取的完整性。文献[33]提出了一种可抽取任意英文语句中n元实体关系的方法KPAKEN,弥补了ReVerb的不足。但是由于算法对语句深层语法特征的提取导致其效率显著下降,并不适用于大规模开放域语料的情况。
基于联合推理的实体关系抽取
联合推理的关系抽取中的典型方法是马尔可夫逻辑网MLN(Markov logic network)[34],它是一种将马尔可夫网络与一阶逻辑相结合的统计关系学习框架,同时也是在OIE中融入推理的一种重要实体关系抽取模型。基于该模型,文献[35]提出了一种无监督学习模型StatSnowball,不同于传统的OIE,该方法可自动产生或选择模板生成抽取器。在StatSnowball的基础上,文献[27,36]提出了一种实体识别与关系抽取相结合的模型EntSum,主要由扩展的CRF命名实体识别模块与基于StatSnowball的关系抽取模块组成,在保证准确率的同时也提高了召回率。文献[27,37]提出了一种简易的Markov逻辑TML(tractable Markov logic),TML将领域知识分解为若干部分,各部分主要来源于事物类的层次化结构,并依据此结构,将各大部分进一步分解为若干个子部分,以此类推。TML具有较强的表示能力,能够较为简洁地表示概念以及关系的本体结构。
2 知识表示
传统的知识表示方法主要是以RDF(Resource Deion Framework资源描述框架)的三元组SPO(subject,property,object)来符号性描述实体之间的关系。这种表示方法通用简单,受到广泛认可,但是其在计算效率、数据稀疏性等方面面临诸多问题。近年来,以深度学习为代表的以深度学习为代表的表示学习技术取得了重要的进展,可以将实体的语义信息表示为稠密低维实值向量,进而在低维空间中高效计算实体、关系及其之间的复杂语义关联,对知识库的构建、推理、融合以及应用均具有重要的意义[38-40]。
2.1 代表模型
知识表示学习的代表模型有距离模型、单层神经网络模型、双线性模型、神经张量模型、矩阵分解模型、翻译模型等。详细可参见清华大学刘知远的知识表示学习研究进展。相关实现也可参见 [39]。
1)距离模型
距离模型在文献[41] 提出了知识库中实体以及关系的结构化表示方法(structured embedding,SE),其基本思想是:首先将实体用向量进行表示,然后通过关系矩阵将实体投影到与实体关系对的向量空间中,最后通过计算投影向量之间的距离来判断实体间已存在的关系的置信度。由于距离模型中的关系矩阵是两个不同的矩阵,使得协同性较差。
2)单层神经网络模型
文献[42]针对上述提到的距离模型中的缺陷,提出了采用单层神经网络的非线性模型(single layer model,SLM),模型为知识库中每个三元组(h,r,t) 定义了以下形式的评价函数:
式中, ut的T次幂∈R的k次幂为关系 r 的向量化表示;g()为tanh函数; Mr,1×Mr,2∈R的k次幂是通过关系r定义的两个矩阵。单层神经网络模型的非线性操作虽然能够进一步刻画实体在关系下的语义相关性,但在计算开销上却大大增加。
3)双线性模型
双 线 性 模 型 又 叫 隐 变 量 模 型 (latent factor model,LFM),由文献[43-44]首先提出。模型为知识库中每个三元组 定义的评价函数具有如下形式:
式中,Mr∈R的d×d次幂是通过关系r 定义的双线性变换矩阵;
lh×lt∈R的d次幂是三元组中头实体与尾实体的向量化表示。双线性模型主要是通过基于实体间关系的双线性变换来刻画实体在关系下的语义相关性。模型不仅形式简单、易于计算,而且还能够有效刻画实体间的协同性。基于上述工作,文献[45]尝试将双线性变换矩阵r M 变换为对角矩阵, 提出了DISTMULT模型,不仅简化了计算的复杂度,并且实验效果得到了显著提升。
4)神经张量模型
文献[45]提出的神经张量模型,其基本思想是:在不同的维度下,将实体联系起来,表示实体间复杂的语义联系。模型为知识库中的每个三元组(h,r,t)定义了以下形式的评价函数:
式中, ut的T次幂∈R的k次幂为关系 r 的向量化表示;g()为tanh函数; Mr∈d×k×k是一个三阶张量;Mr,1×Mr,2∈R的k次幂是通过关系r定义的两个矩阵。
神经张量模型在构建实体的向量表示时,是将该实体中的所有单词的向量取平均值,这样一方面可以重复使用单词向量构建实体,另一方面将有利于增强低维向量的稠密程度以及实体与关系的语义计算。
5)矩阵分解模型
通过矩阵分解的方式可得到低维的向量表示,故不少研究者提出可采用该方式进行知识表示学习,其中的典型代表是文献[46]提出的RESACL模型。在RESCAL模型中,知识库中的三元组集合被表示为一个三阶张量,如果该三元组存在,张量中对应位置的元素被置1,否则置为0。通过张量分解算法,可将张量中每个三元组(h,r,t)对应的张量值解为双线性模型中的知识表示形式lh的T次幂×Mr×lt并使|Xhrt-lh的T次幂×Mr×l|尽量小。
6)翻译模型
文献[47]受到平移不变现象的启发,提出了TransE模型,即将知识库中实体之间的关系看成是从实体间的某种平移,并用向量表示。关系lr可以看作是从头实体向量到尾实体向量lt的翻译。对于知识库中的每个三元组(h,r,t),TransE都希望满足以下关系|lh+lt≈lt|:,其损失函数为:fr(h,t)=|lh+lr-lt|L1/L2, 该模型的参数较少,计算的复杂度显著降低。与此同时,TransE模型在大规模稀疏知识库上也同样具有较好的性能和可扩展性。
2.2 复杂关系模型
知识库中的实体关系类型也可分为1-to-1、1-to-N、N-to-1、N-to-N4种类型[47],而复杂关系主要指的是1-to-N、N-to-1、N-to-N的3种关系类型。由于TransE模型不能用在处理复杂关系上[39],一系列基于它的扩展模型纷纷被提出,下面将着重介绍其中的几项代表性工作。
1)TransH模型
文献[48]提出的TransH模型尝试通过不同的形式表示不同关系中的实体结构,对于同一个实体而言,它在不同的关系下也扮演着不同的角色。模型首先通过关系向量lr与其正交的法向量wr选取某一个超平面F, 然后将头实体向量lh和尾实体向量lt法向量wr的方向投影到F, 最后计算损失函数。TransH使不同的实体在不同的关系下拥有了不同的表示形式,但由于实体向量被投影到了关系的语义空间中,故它们具有相同的维度。
2)TransR模型
由于实体、关系是不同的对象,不同的关系所关注的实体的属性也不尽相同,将它们映射到同一个语义空间,在一定程度上就限制了模型的表达能力。所以,文献[49]提出了TransR模型。模型首先将知识库中的每个三元组(h, r,t)的头实体与尾实体向关系空间中投影,然后希望满足|lh+lt≈lt|的关系,最后计算损失函数。
文献[49]提出的CTransR模型认为关系还可做更细致的划分,这将有利于提高实体与关系的语义联系。在CTransR模型中,通过对关系r 对应的头实体、尾实体向量的差值lh-lt进行聚类,可将r分为若干个子关系rc 。
3)TransD模型
考虑到在知识库的三元组中,头实体和尾实体表示的含义、类型以及属性可能有较大差异,之前的TransR模型使它们被同一个投影矩阵进行映射,在一定程度上就限制了模型的表达能力。除此之外,将实体映射到关系空间体现的是从实体到关系的语 义联系,而TransR模型中提出的投影矩阵仅考虑了不同的关系类型,而忽视了实体与关系之间的交互。因此,文献[50]提出了TransD模型,模型分别定义了头实体与尾实体在关系空间上的投影矩阵。
4)TransG模型
文献[51]提出的TransG模型认为一种关系可能会对应多种语义,而每一种语义都可以用一个高斯分布表示。TransG模型考虑到了关系r 的不同语义,使用高斯混合模型来描述知识库中每个三元组(h,r,t)头实体与尾实体之间的关系,具有较高的实体区分。
二.知识图谱及知识图谱应用技术和探索
今天我的分享分为两个部分:
第一个就是对知识图谱及知识图谱应用的技术做一个分享;
然后是对我们应用知识图谱在企业大数据方面的一些探索。
首先我们按照惯例,看一下什么是知识图谱,我这里引用的是语义网之父的一句话:语义网它是一个面向数据的互联网,从某种含义上来说,它其实就是一个全局的数据库。
什么是一个面向数据的互联网?
我们都知道,现在我们看到的网站,可以说是面向文档和网页的一个互联网,在这个互联网中间,它的主要信息是通过网页来表达的,网页方便之处是易于被人类所理解,所以平时我们查阅信息还是比较方便的,但是它有一个缺点,就是语义信息不足,所以机器理解起来比较困难,现在我们的互联网正在转变,它在转变成为一种面向数据的互联网,在这种互联网里面,它的信息和数据是可以被机器理解的。
我们看一下什么是面向数据的互联网,现在我们的互联网中间,它不应该只是一个个的网页,它应该更多的是一个个的事物,或者说是一个个的实体,就像我们这个图中间看到的,互联网里面包含的更多的是对这些具体事物的描述。这张图里面包含了建筑、糖果、化学物,还有艺术作品等。
这就是面向数据的互联网中具体的事物,这些事物本身并不是孤立的,它们相互关联,这就构成了这些事物之间的各种各样的关联关系,这可以说是面向数据的互联网的本质:首先有各种各样的事物,然后是这些事物之间的关联关系。
我们再来看一下,为什么会出现面向数据的互联网这样一个概念,从07年左右开始,我们可以看到,开放链接数据越来越多,这个图从07年到现在,正好是10年左右的时间,我们可以看到它的发展是非常快的,这个网络在不断的增加。这些数据相对来说都是结构化附有语义的,是一个个具体的事物。
在这一背景下面,Google在12年的时候,提出了“知识图谱”的概念,刚刚漆老师提到,Google主要用它来构建下一代的搜索引擎,Google提出知识图谱的时候,用了这么一个短句:
Things, not strings!
也就是说,在互联网中它不是一个个字符串,而是一个个真实存在的事物,事物之间还有相应的关联关系,右下角图我们可以看到,里面有人物,并且还有他们之间的关联。
什么是知识图谱?
其实定义是非常多的,我这里提供一个我们自己的理解:知识图谱主要的目标是用来描述真实世界中间存在的各种实体和概念,以及它们之间的关联关系。
我们最开始的时候也提到了,它是一个全局的数据库,在这个全局的数据库中间,更多的希望它所有的事物都有一个全局唯一确定的ID,就像网页一样,每个网页都有一个唯一的url来标识,对每个实体和概念,我们也同样的用这么一个ID去描述,称之为标识符。
同时对于这些实体,它们的属性,我们就用“属性–值对“来刻画它的内在特性,比如说我们的人物,他有年龄、身高、体重属性;同时我们还用关系来描述两个实体之间的关联。
下面这两个图,就体现了事物和它们之间的关系。
知识图谱的概念还是比较明确的,但是有很多朋友还是会存在疑问。
知识图谱和本体到底有什么关系?
知识图谱并不是一个全新的东西,而是在以前的技术或理论上面,进行的一个重新的定义,引入了一个新的概念。
知识图谱本身不是本体的一个替代品,是在本体的基础上面做了一个丰富和扩充,这种扩充主要体现在实体层面。
本体中突出的主要是概念和概念之间的关联关系,而知识图谱描述的主要是实体,对这些实体我们通常还会去描述它更加丰富的信息。
用一句简单的话来说就是:本体描述了知识图谱的数据模式,本体的动态的特性赋予了知识图谱动态数据模式支持的能力。
这一特性很重要,会用在我们很多的地方,比如说我们在Linked Open Data里面就用到了这种理念,同时我们提到了在后面企业大数据的应用里面,其实也会用到这个特性,它可以支持数据动态变迁的能力。
知识图谱有哪些用途?
我们这里列举了一些,主要是人工智能相关的,因为现在人工智能非常火爆。
第一个就是用来搜索,这也是Google提出知识图谱的初衷;
第二个就是聊天机器人,我相信在坐的各位或多或少都有用过,比如说微软的小冰,王昊奋老师公司的公子小白;
第三个就是用来做问答,有一个贡献非常大的,就是IBM Watson,这在业内非常有名;
然后现在还有很多私人的助理,比如说我们苹果手机里的Siri,还有微软的小娜,百度的度秘;
同时我们还有很多的穿戴设备,它里面也用到了知识图谱相关的技术,比如iWatch里面就用了;
最后一个就是我们出行的助手,国内做的非常好的“出门问问”,它也是用了相关的技术。
以上是对知识图谱用途的一个简单的介绍。
接下来我们来看知识图谱的第一个应用,也就是知识图谱提出的初衷——用来改善搜索。
如果我们现在去 Google 搜北京理工大学的时候,我们可以看到右边有一个知识卡片,它里面包含了北理工的很多基本介绍,同时还有一些基本的属性,这是知识图谱用在搜索里面给我们带来的第一个变化;
如果我们再用百度试一下,很多人搜的时候可能会想,如果要考北京理工大学,大概要多少分,正好这两天也是高考的时间,现在我们搜的时候可以看到,在不同的区域,它会根据你的定位,自动把北理工在当前省份去年、前年和前几年的一个分数展示出来,同时我们也可以看到一个地图,地图的作用是告诉你北理工在什么地方。
通过知识图谱,我们在搜索引擎里面可以看到丰富的结果,在右边我们可以看到和北理工相关的高校,以及和北理工相关的其他一些事物,这就是知识图谱给我们带来的搜索的改变。
同时我们还可以看到,在搜索结果里面,不仅仅是一些结构化的信息,它还有很多关联的关系。
比如我们去搜SuperCell这家公司,这是一个游戏公司,我们可以看到它的很多相关联信息,比如CEO、母公司、创建地址,它是被腾讯收购的一家创建于荷兰的公司。
除了在搜索引擎里面,在社交网络中也用到了知识图谱,如果用过Facebook,它就用了知识图谱的技术去链接里面的人物、地点和事件,正如我们举的两个例子:如果去搜喜欢哈佛大学的人,它可以直接给你答案;第二个例子,搜去过哈佛大学的人,它同样可以给你答案;
这就是在社交网络里面的应用。
再看另外一个例子,这个例子更加复杂。
如果你去搜喜欢哈佛大学,喜欢篮球并且在Facebook工作的人,这其实是一个比较复杂的搜索,或者我们可以把它看作一个问答,这也是知识图谱能够给我们带来的改变,也就是你搜的时候直接能够给你答案。
以上是在通用知识图谱或者社交网络中有这些应用,在行业中也有类似的使用知识图谱技术的产品。
比如金融领域的问财,如果在里面搜“万科A”,它就会很明确的告诉你,搜索的是一个股票,股票最关注的就是它最近的波动,问财会自动的把万科A最近股价波动的曲线给展示出来,同时还会告诉你万科A是房地产行业的,并且在右下方推荐房地产相关行业的公司。
这是知识图谱在行业里面的一些应用。
我们也做了一些探索,在创投知识图谱,也就是对一些初创企业的投资信息。比如“嘀嘀打车”,它的公司名叫“北京小桔科技有限公司”,我们去搜的时候,就会去猜测用户最关心什么?
第一个关心的应该是它的融资事件和历史,我们会用一个时序的图把融资的历史给体现出来;同时对一家初创企业,我们还会关心它的创始人,创始人有哪些,背景如何?我们会一并展示出来;同时还有一些相关的热点事件新闻,这些都是知识图谱在搜索里面给我们带来的一些变化。
搜索如果往后再延伸一步的话,就是问答,我们再来看知识图谱下一个应用场景:
自动问答
自动问答目前也是一个非常热门的方向,这可能是面向应用最直接的方式,目前不管是学术界还是工业界都在做相关的研究,这里有两个例子,左边是百度的度秘,右边是苹果的Siri,可以看到自然语言问答的结果。
现在还有一个比较火的领域就是儿童机器人,这是王昊奋老师上期PPT分享中的一个图,我们可以看到聊天机器人从10年的时候开始流行,一直到现在已经出现了很多具有代表性的产品,其中包含Siri,小冰,IBM Watson,公子小白等。
什么是智能问答?
智能问答是指用户以自然语言提问的形式提出信息查询需求,系统依据对问题的分析,从各种数据资源中自动找出准确的答案。
这就是自动问答要做的事情,它的应用可以分为以下几类:
第一就是情感聊天,典型应用是微软小冰,公子小白;
然后是做私人秘书和个人助理,典型代表就是度秘和Google Allo;
还有作为领域知识的问答,比如IBM Watson,在医疗以及很多其他的领域都有相应的应用;
还有很多企业用来做智能客服,因为客服可能是一个比较枯燥的工作,利用智能客服来代替他们的工作可以省掉很多的人力成本。
我们对知识图谱问答做一个分类可以分为:
开放领域自动问答,
特定领域的自动问答,
常用问题集自动问答,我们称为FAQ。
FAQ在很多场景下面已经达到了很好的效果,但是客观的评价,在开放领域的自动问答还处于一个比较初级的阶段,所以现在更多成功的用例是在特定领域里面,特定领域里面我们一般是基于行业去做,以上是智能问答的一个分类。
智能问答依赖于一些关键的基础及技术,一般需要大量高质量的数据和知识库,这就是我们今天分享的话题,知识图谱;同时还依赖于强大的NLP技术的支撑,需要NLP技术对问题进行解析;同时如果拥有大规模训练语料的话就更加好了,因为现在深度学习是一种趋势。
如果你有大规模语料,尤其是问答对的话,就可以利用深度学习去提供这种端到端的智能问答。
接下来描绘一下自动问答的基本过程。
从用户输入开始,我们的输入是自然语言,输入进去以后,第一步会对你的问题进行解析;
解析完以后就会去理解你的真实意图,去猜测你要查的到底是什么东西;
然后根据对你意图的理解,去查询和检索;
最后是对查询和检索的结果做一个候选答案的生成和排序;
最终再通过一些排序的算法进行最终结果的输出。
智能问答现在的方法主要有这么几类:
第一个是基于信息检索的方法,
第二个是基于语义分析的方法,
第三个是基于规则的专家系统方法,
然后是现在研究的比较火的一个基于深度学习的方法。
接下来对几种方法做一个介绍。
基于信息检索的方法
这个方法更多的还是和传统的检索技术非常相似,首先利用分词、命名实体识别等相关NLP工具去对问句进行解析,得到中间的关键词,进一步得到实体,得到这些关键词和实体之后,再去资源库里进行检索。
它有个缺点,如果我们做过检索,或者在百度或Google中检索过就会发现一个问题,它要求你的答案必须至少包含问句中的一个字或词,所以查全率方面相对会比较低。
如果有了知识图谱以后我们就可以进行改进,可以基于知识图谱对它进行语义的扩充,当对问句进行分词、命名实体识别之后,可以从知识图谱里面去找其它的同义词,或者实体其它的称呼,就可以对其进行语义的扩充,去提高它的匹配率。
同时我们做搜索的朋友应该都会遇到一个问题就是消岐的问题,也就是同一个词或字符串,它代表不同的含义。我们经常的举的一个例子,就是“苹果”,它可能代表很多东西,可以代表水果,也可以是代表苹果公司,也可以代表苹果公司的一些产品,如果通过关键字检索的话,那么很难对这些结果进行语义上的区分,所以有了知识图谱之后,就可以从实体的角度去理解。
基于语义分析的方法
这个方法非常直观,它和人的理解非常相似,就是把自然语言的一个问句,按照特定的语法或语言的规则去进行解析,形成一个语义的表达式,得到这个表达式以后,用这个表达式可以明确的去描绘你的意图,然后就可以非常方便的转换成为一种查询语言,这种查询语言可以是数据库的查询语言,也可以是其它的查询语言。这取决于你的数据,你的查询目标是放在什么地方。
常用的方法就是利用组合范畴语法(CCG)的方式,这种语法最核心的就是词汇,首先我们还是离不开自然语言处理去做映射得到词汇,然后再用语法的规则把这些词汇进行语义上的组合,最终得到语义表达式。
这里面是有一个难点的,也就是中文的自然语言分析尤其是语义分析的准确率,很难达到工业可用的级别,一般通常还是在50%以内,所以这是语义分析方法很难的一个问题,所以如果我们是面向通用的问答去做,它的准确率比较低,因此通用领域的智能问答还处于一个比较初级的阶段。
怎么去改进?同样可以利用知识图谱。但是通用的知识图谱的质量并不能保证,所以它很难在通用的领域利用知识图谱去做很大的改善,所以通常在做的时候,包括我们自己在探索的时候,会在特定的领域里去做。我们会基于知识图谱里面的实体、属性、概念去对问题里面的词或实体进行解析和映射,然后再基于图结构做一个语法规则的匹配,这就相当于是图里面的子图查询匹配问题,通过这种方式,我们就可以把语义解析的范围范畴进行限定,限定范围以后,因为里面知识足够多,并且在领域里面,我们通常还是可以构建相对可靠的知识图谱,从而可以得到正确率比较高的解析,最后再去进行检索,就可以大大改善自动问答的准确率。
基于规则的专家系统方法
第三种方法可以说是比较无脑的,也就是上世纪80年代用的比较多的。
这种方法它的好处非常明显,如果你命中的话准确率非常高,基本上可以达到100%,但他的缺陷也很明显,如果你的问题或应用的领域比较多的话,那么它肯定是不能支持的,因为专家系统的范围一般比较窄,并且其可扩展性、可复用性也是比较差的,如果要构建一个专家系统,需要花费很大的精力,这种方式也通常不可复制。
所以缺点就是通用性比较差,不能覆盖很多应用场景。
基于深度学习的方法
这种最近几年非常热的。深度学习,尤其是Alpha Go出来以后,把它推向了一个高峰。近几年卷积神经网络,循环神经网络这种相关的技术在NLP领域也得到了比较好的应用,并取得了比较好的成果。它主要用来做语言的表示,语言表示就可以扩展到问答里面,就是前面的每一个关键任务,比如在做语言的语义解析的时候,在做问题和答案的匹配、生成的时候,都可以用到。简单来说就是对用户的输入进行解析,对答案检索查询环节进行优化,这是目前用的较多的一种方法。
还有一种使用的方式,就是前面提到的使用深度学习去训练端到端的自动问答,把问题和答案均使用复杂的特征向量进行描述,然后用深度学习来计算问题和答案之间的相似度,最终给出答案。要实现端到端的自动问答,有一个前提就是需要有大规模的语料。
这是自动问答的四种方法,知识图谱在所有的方法里面都是有用的,我们概括一下,知识图谱可以算是自动问答里面的大脑:
它可以辅助去做用户输入的解析,进行语义的扩展;
它可以辅助你去理解用户的意图,从“字符串”到“实体”,也就是到实体级别的去理解;
然后再去进行知识的推理,知识推理之后你不仅可以得到表面的知识,而且可以得到深度的知识;
然后它还可以辅助去做答案的生成。
知识推理可以说是问答系统提高“智力”的一个核心环节,怎么去提高的,等会我们会介绍知识推理相关的一些技术。
这是我们在智能问答里面的一些探索,可以说是基于语义解析的一种自动问答,我们主要还是应用在行业里面,从用户输入开始,我们会基于知识图谱对概念、实体、属性以及一些相关的运算符,进行分词匹配,然后把它与知识图谱里面的元素进行映射;接下来一步就是做语义的解析和验证,知识图谱的结构性特别强,所以我们在做语义理解解析的时候,可以用知识图谱这种图结构去辅助进行理解。
在语义解析和验证这个环节里面,我们应用了知识图谱的结构,比如说实体和属性的链接、实体和实体之间的链接,都是代表语义上面的一些含义。
做完语义解析以后,接下来就是做查询的转换,知识图谱是存在相应的图存储里面,对其做相应的查询转换非常方便;最后再去数据的资源里面去进行查询,最终返回结果。
右边是我们在海洋知识图谱里面做的一个应用的案例,这个例子是我们在查最大的三种鱼,首先我们对问题进行实体的解析,其次再去进行语义的解析,然后再去进行查询,最终给出答案。
以上我们自己在基于语义解析的自动问答系统里面做的一些探索。
刚刚把知识图谱最常用的两个应用场景做了一个简单的描述:一个是搜索,一个是自动问答。
接下来我们对知识图谱应用相关的一些技术做一个描述。
知识图谱的应用技术今天主要分享三类:
图挖掘和图计算;
可视化;
知识推理。
知识图谱之上的图挖掘和计算
有这么一些算法:
第一个是图遍历,知识图谱构建完之后可以理解为是一张很大的图,怎么去查询遍历这个图,要根据图的特点和应用的场景进行遍历;
第二个就是图里面经典的算法,最短路径;
第三个是路径的探寻,即给定两个实体或多个实体去发现他们之间的关系;
第四个是权威节点的分析,这在社交网络分析中用的比较多;
第五个是族群分析;
第六个是相似节点的发现。
图的遍历
图的遍历大家都知道有两种方法,一个是广度优先遍历,一个是深度优先遍历,这个我们就不详细去说了。这里举了一个例子,对于下面这个图,分别用广度优先遍历和深度优先遍历查询的结果。
最短路径
最短路径分为几个场景,第一个是单源最短路径,简单的解释下就是从一个点出发,去求它到其他所有节点的最短路径。
Dijkstra是图论里经典的算法,算法虽然比较经典,但是在现实中间应该说应用场景是比较少的,比如在社交网络里面,我们很少去求一个人到其他所有人的最短路径,这个应用的含义不大。
第二个就是每对节点之间的最短路径,这同样也有一个非常经典的Floyd算法,这个应用场景也比较少,社交网络中间也很少查任意两个人之间的最短路径。
我们举一个最常见的应用场景,也就是给出两个节点,找他们之间的最短路径,这个应用场景就比较多了,在社交网络中两个人,你可能要计算通过几步他们之间会有关联。
在我们的应用场景中间也非常多,比如说在我们的企业知识图谱里面,给定两个公司,要去查他们之间到底有没有关系?几步里面有关系?这就是一个典型的应用场景。
路径探寻
刚刚我们把这个图用来做最短路径,还可以给定两个节点,去看他们之间不仅仅是最短路径,可以查两个企业之间5步以内到底有哪些关系,这就是路径探寻算法,也就是给定两个或多个节点,探寻它们特定步骤里面到底有多少关系,有哪些路径。
这是两个节点,多个节点也是同样的,比如说在我们的创投知识图谱里面,我们去查腾讯、百度、阿里共同投资了哪些公司,这就可以把它转换成一个路径探寻的算法,也就是给定这三个公司,我们去看看特定的步骤里面,它们有哪些路径关系,不管是直接投资还是间接投资,到底有哪些共同的投资。
权威节点的分析
先看应用场景,做过社交网络分析的人应该都知道,里面有个很常见的应用场景就是社交网络里的权威人物分析,也就是在社交网络里面哪些人是比较有权威的,有权威并不代表说他粉丝多就有权威,可能有些人,他在特定的领域里面有权威。
定义一下,在知识图谱的网络中间,怎么去分析节点的权威度,找到里面的权威节点,这里面算法就比较多,经典的算法就是我们搜索里面的Page Rank,它简单的说就是用一种相互投票的机制,最后去决定每个节点的权威度。
还有一种是基于节点的属性以及节点之间关系的一种多特征方法,知识图谱对每个节点既有自己的属性,同时还有和其他节点之间的关联,我们可以把节点属性和关系结合起来,形成一种多特征的评估方法。
在创投领域知识图谱里面,一个应用场景就是去找到里面的权威投资机构,同时还会去找到哪些是有潜力的创新独角兽公司。
族群的发现算法
还是先看应用场景,在社交网络中,我们不仅仅是对个人感兴趣,还会想知道在网络中,有哪些小的群体。
在社交网络中存在一些主题的社区,存在对特定领域感兴趣的群体,就像我们大家对知识图谱感兴趣一样,我们要在社交网络中找到对知识图谱感兴趣的这些人物,这就是族群发现算法的一个应用场景。
简单描述一下,它就是从知识图谱的网络中间发现在一个或者多个角度相似节点的族群,做法也比较多,这里我们列出两个算法,第一个是图里面经典的最大流算法,还有一个和刚刚在计算权威节点时使用的方法类似,就是基于节点的属性和节点之间的关系形成多特征去进行聚类,从而找到里面的群体。
在企业知识图谱里面,我们可以去找到全国几千万企业里面的阿里系、腾讯系,也就是哪些是阿里投资的,阿里感兴趣的一些公司。
相似节点的发现算法
我们在做企业知识图谱的时候,比如一家企业他已经有一些客户了,他可能还希望找到相似的客户,那么我们就可以去找到和他现有客户相似的一些客户,这就是相似节点发现的一个应用场景。
从海量的知识图谱中间去寻找和已知节点相似的节点,方法有三种:
第一个就是基于节点的属性去查,比如说对于企业,就可以根据企业产品的领域去找;
我们还可以根据节点间的关系去计算,因为关系代表了一定的特征,所以我们可以通过这种关系,比如说两个节点之间的关系图非常相似,那么也代表一定程度的相似;
还可以用混合的方式,把节点的属性和节点的关系一起去使用。
我们做的一个应用场景,就是在专利知识图谱里面去寻找相似的专利。
知识图谱的可视化
可视化应该说很好理解,这里我引用了维基百科里的定义:可视化是利用计算机图形学和图像处理的相关技术,将数据知识和信息变成图形或图像在屏幕上展示,同时还有一个概念就是要和用户进行交互。
它里面包含了两层含义,第一个就是要转化成图像,第二个就是交互,这个含义到现在说已经有点过时了,现在不仅仅是计算机,很多其他移动化的设备都有可视化的需求。
可视化我们看下它的三大功能:
第一个是做信息的记录,它不仅仅是做信息的呈现,也可以做信息的记录;
同时它支持对信息的推理和分析,如果我们把可视化做的好,可以从数据的可视化里面找到很多关系规律,从而进行一定的推理和分析;
最后可以做信息的传播和协同,这是知识图谱可视化的定义和功能。
我们知道有一个模型,叫DIKW,也就是数据、信息、知识,再到智慧。这个模型我们应该非常熟悉,从底层的数据开始进行一定的提炼,形成信息,然后再进行抽取形成知识,在知识上面可以做很多的应用,比如说推理,比如说现在的人工智能,这就是智慧。
定义到可视化里面,我们也可以这样去分类,从数据的可视化,到信息的可视化,再到知识的可视化,当然最后面是智慧的可视化,这个就更加抽象,更加困难,这个我们今天就不去表述。
先看数据可视化,有哪些类型的数据,第一个就是记录型的数据,使用过关系型数据库就会很清楚,里面有很多记录型的数据;然后还有关系型的数据,就像我们的知识图谱,它是一种关系密集型的数据;然后还有时态数据、空间数据。
什么是数据可视化,这个定义比较理论化,对于数据可视化不用我们去进行解释,大家应该都知道,就是把数据里面的一些信息、含义,怎么去用一种形式去进行抽象、提取,形成信息然后用相应的属性、变量去进行描绘,这是数据可视化。
数据可视化里面有很多理论的研究和技术,今天由于时间关系,我不去详细的介绍,大家感兴趣的话可以去看浙大陈为教授的《数据可视化》,对整个可视化做了非常详细的剖析。
然后是信息的可视化和知识的可视化,应该说信息和知识的可视化在一定程度上很难去进行直接的区分,因为信息和知识没有严格的界限。信息可视化是研究大规模非数值信息资源的呈现,这里面主要的目标就是帮助人去理解和分析数据。
知识可视化主要用来传达和表示复杂知识的图像,用图像图形的手段去表达,其主要目标是用来做知识的传输和传递,帮助其他人去正确的重构、记忆和应用知识。
接下来我们看一下在做知识可视化的时候有哪些常见的形式,我这里列出来的只是一部分,比如说在知识图谱里面我们有概念和概念的层次,一种直观的方式就是用概念的层次图去进行知识的可视化,第二种就是用思维导图的形式,同时我们还可以去做认知的地图,最后可以用语义网络的方式,知识图谱就是用这种原生态的语义网络形式进行描述的。
接下来我们看几个简单的例子,首先在知识图谱可视化里面常用的缩放和钻取,因为我们知识图谱是非常大的,就像我们刚刚的视频,最开始的时候我们看到里面有非常多的节点,怎么去定位到里面我们需要的节点,就可以用知识的缩放和钻取去找到我们关注的节点。
第二个可以通过不同的视图去描述,比如说左边概念树的形式,树形结构描述也是非常常用的方式,这种方式非常简单直观;右边我们还列出了一些其他的方式,比如车轮图等。
还有很多其他的视图,比如说上方环状的图,词云图,以及左下角的气泡图等,这些都是知识图谱可视化的一些示例。
对于可视化还有很多的工作要做,知识图谱的应用,是要把知识图谱传递出去,可视化是一个非常直观的手段,所以里面有非常多值得研究的地方。
知识图谱中的推理
由于知识图谱和本体关系非常密切,所以里面最重要的就是基于本体的知识推理,即知识图谱核心知识内容部分的推理。
然后因为知识图谱在大数据应用里面用的非常多,我们可以做知识图谱大数据预测分析与关联挖掘,也就是围绕知识图谱组织的大数据,怎么去做预测分析和关联挖掘。
这是知识图谱推理两个主要的方面。
知识图谱里本体的推理
本体推理主要有两大目标,第一个就是找到知识图谱里面隐含的知识,因为我们不管是在构建知识图谱还是在构建本体的时候,一般都会有一个原则,就是用比较简单的机制去描述尽可能多的信息,有些东西可能就直接隐含在里面了,这些隐含的信息就必须用知识推理的方式把它表达出来。
还有一个就是在知识图谱构建的时候经常用到的,做不一致性检测。不管是手动构建,还是自动构建知识图谱,都会碰到一个问题,或者你的数据来源不同,或者你的构建的人员不同、方法不同,就会不可避免的导致一些冲突,这些冲突自身很难直观的去发现,但是可以利用知识图谱里面的不一致性检测去发现存在的有矛盾的、有冲突的知识。
这是基于本体的知识推理的两大目的。
OWL推理的方法有以下几类:
第一个就是基于表运算的方法,
第二个是基于一阶逻辑转换的方法,
然后是本体推断的方法,
一阶查询重写的方法,
以及Datalog的方法。
今天着重讲的是用于知识图谱里面组织大数据做分析,怎么去做规律发现,怎么做预测。
我们都知道知识图谱在大数据的组织方面有很多的应用场景,这也是我们下半场要重点讲的一个主题。
现在大数据我们用它来做什么?第一个是我们用来做决策或辅助决策,有时是用即时数据,有时候用统计方法,同时也可以在数据中归纳一些新的数据模型,还可以从数据里面得到新的知识。
大数据预测
预测可以说是大数据的核心价值,可能经常会听说要用大数据去做股市的预测,去做疾病的预测,去做消费行为的预测,这些都是大数据核心应用的价值。即从已经发生的过去慢慢转变到面向即将发生的未来。
从过去到预测未来,本身是有个逻辑基础的,我们认为它带有一定的推理的含义,即事物在变化之前一定有征兆,突变是很少的,所以所有的事情都是有迹可循的,如果找到了这种征兆规律,你就可以去进行预测,这是大数据进行逻辑预测的一个基础。
预测通常是用一个预测模型,预测模型主要需要基于历史的数据,历史的数据决定未来事情发生的一个概率,因为大数据做预测的时候,一般不会去说我直接给你一个确定的答案,因为未知的世界都是带有一定的可变性的,所以大数据在做预测的时候,通常给你一个事情发生的概率。
关联规则的挖掘
就是去找事物和事物时间的关联关系,做数据挖掘的朋友应该都听说过啤酒和尿布的故事,这就是一个非常典型的关联规则挖掘的场景。要做关联规则的挖掘,通常需要经历两个阶段。
第一个就是从大数据的集合里面找到所有高频的关联项目组,然后再由这些高频的项目组通过一些算法去进行过滤分析,最终找到关联规则,这是做关联规则最重要的两个阶段。
在做关联规则挖掘的时候,有四个关键的指标,第一个是可信度,第二个是支持度,第三个是期望可信度,然后是作用度。
把这两个推理总结起来:知识图谱其实回答了“为什么”,它可以告诉你明确的原因,并且给出来的一般都是比较肯定的答案,可以让你了解世界运作方式背后的深层原因;大数据更多的回答“是什么”,但是它很难告诉你为什么会是这样?所以它主要强调的是现象之间的联系,从而解决现实中的问题。
有没有办法把它们结合起来:首先通过大数据去发现是什么,然后利用知识图谱知识推理方式去寻找背后真实的原因,这就是现在用的比较多的一个智能决策系统。
在这种智能决策系统里面,其实把大数据的预测和挖掘,以及知识图谱支持的推理结合起来,同时还把数据分析的一些模型也结合起来。
我们看图下方的模型库、知识库和数据库,把它们结合起来。
对于数据库利用数据库管理系统、数据仓库、数据挖掘系统;对于知识库,利用知识库管理系统及相应的推理机;对于模型库,用相应的模型库管理系统、模型计算。
从用户的角度,需要对三种机制的结果进行统一,最终把统一的结果返回给用户,形成一个基于大数据挖掘和知识推理的智能决策系统。
这张图是一个基本的架构。
下半场主要讲知识图谱用来做大数据的分析和挖掘,也就是现在企业面临的大数据背景下面怎么去使用知识图谱技术,帮助他们做数据的分析、融合以及决策。
下面这张图是上次分享过的一张图,从数据库时代到大数据时代,当时我们借鉴了一个非常形象的比喻,池塘捕鱼到大海捕鱼。
在数据库时代,从数据规模的角度来说相对是比较小的,在GB的级别;在大数据时代,很多企业数据已经超过了TB,甚至有些达到了ZB的级别。这是从数据规模的角度来说,大数据时代与传统的数据库时代的一个典型的区别。
从数据类型的角度来看,以前主要以结构化的数据为主,数据通常是存在关系数据库里面的,这些数据通常是结构化的,但在大数据时代,我们会看到它的数据类型会非常多,不仅仅有结构化的数据,还有半结构化的,甚至非结构化的数据,并且还有个趋势,后两者越来越多。
再从数据模式的角度来看,以前在传统的数据库时代,我们通常是先构建关系数据库的数据模式,然后再去存储数据,查询、使用数据,这要求你对自己的数据有非常好的把握,数据模式要先固定,之后也不要有太多的变化,做关系数据库应用的朋友知道,如果关系数据库要变动,对系统带来的变化后果,有时候甚至是灾难性的;在大数据时代,数据大部分都是未知的,对于数据的数量、形态、作用都在不断探索,数据的模式通常都是在数据出现以后才能去确定,数据模式也是随着数据增长在不断演变的。
最后从数据处理的方式来看,以前通过一种方式或者一种工具就可以去解决大部分所有的问题,但大数据时代很难用一种通用的工具方法去解决所有的问题,不管是数据的存储、数据分析的算法还是从应用的角度,都是多种多样的,在不同的应用场景下面,需要不同的技术方法。
在大数据的背景下面,企业如果要应用这些大数据,通常会有哪些挑战?
第一个就是多源异构的数据很难融合,企业包括不仅内部的数据,还有从第三方接入的数据以及互联网公开数据,甚至是采购的数据。这些数据很多,可能描述同一个事物有很多的数据源,它们分散在不同的地方,怎么去把它们融合起来?这里举了一个人物的例子,他在企业内部不同的系统里面,互联网里面都有他的信息,怎么去进行融合这是我们企业在面向大数据的时候会碰到的第一个挑战。
第二个挑战,大数据时代,数据模式在不断变化的场景下,需要有一种可自有扩展的数据模式,细心的朋友已经听到,知识图谱是基于本体来构建的,所以本体的动态特性,就赋予了知识图谱支持大数据动态变化的能力。
第三个挑战就是非结构化和半结构化数据如何理解使用,非结构化的数据简单来说就是文本,对于文本数据如何处理,传统的方式依赖于NLP的方式,但是NLP本身的效果还未达到工业可用的级别,怎么对非结构化的数据去进行应用?
第四个,传统数据在使用的时候需要专业的程序员去编写程序去进行查询使用,普通的应用分析人员很难对数据去进行探索,我们要有一种快速的方式去对数据进行探索和使用。
第五个挑战,在传统的数据库时代,构建的不同系统使用方式不一样,数据集成的时候会非常混乱,我们更多的期待这些分散的数据如何把它们融合起来,形成一个统一的消费利用的入口,工作人员可以从统一的入口进行数据的消费。
接下来看下知识图谱如何解决以上五个问题。下图是我们做的探索,知识图谱如何助力数据分析实现商业智能:
从最底层开始,知识图谱需要对非结构化的数据进行处理,抽取信息形成结构化的知识;
第二个是数据动态的融合,多源异构的数据利用知识图谱动态扩充变迁的能力,等到数据来了以后再去定义数据的属性,数据之间的关联,同时从底层存储的角度来说,需要有一种能够适应数据模式动态变迁的存储机制,这个我们上次活动做了一个深度的分析,提供了一种可自由扩展模式的存储机制;
其次我们提供一种自动检索,自动问答的方式,通过自然语言和其他非常简单的交互形式,对数据进行使用,这也是使用知识图谱以后可以帮助我们去降低数据使用门槛。
使用这种技术,就可以把原来分散在各个地方的数据经过抽取、融合、链接形成知识图谱,接下来在这之上可以为业务层提供统一的消费入口,包括以下方式,比如说进行语义的分析、理解、查询,然后可以做数据关联的探索,即知识图谱图探索,对于业务的拓展可以动态的去定义扩充,同时可以进行智能的检索和问答,从而为用户提供统一的入口。
接下来我们详细分析如何使用知识图谱里面相关技术做这件事情:
第一个就是用知识图谱(本体)对各种类型的数据进行抽象建模,基于可动态变化的,“概念 – 实体 – 属性 – 关系”数据模型,来实现各种数据的统一建模。这个模型应该是非常灵活的,可以适应绝大部分数据的特征,即可以使用这种模型对绝大部分的数据进行统一建模;
然后我们使用知识图谱的数据存储,实现对大数据及数据模式动态变化的存储要求,从底层来说,提供存储的知识;
同时利用知识图谱里面,比如信息抽取、实体链接相关的技术,去对非结构化、半结构化的数据进行抽取和转换,形成知识图谱形式的知识,以及和知识图谱里面的结构化的知识进行链接;
最后通过语义检索、图挖掘、推理、可视化以及数据分析相关的技术,构建一个统一的数据消费的入口,形成一个统一的分析、检索和利用的平台。
怎么使用知识图谱去对数据进行建模
知识图谱里面有两个基本元素,一个是实体,一个是概念。
我们可以以实体为主体目标,实现对不同来源的数据进行映射与合并,因为企业碰到的数据很大的一个应用场景就是数据在不同的系统里面,但是描述的是同一个事物,怎么去把他们合并起来?可以用实体的机制进行建模,然后通过实体合并相关的技术,把不同数据里描述同一个实体的数据进行融合;
融合后可以利用实体的属性来表示不同数据源中针对实体的描述,即A处过来的数据可以用一部分属性进行描述,B处来的也可以用一些属性进行描述,用属性进行统一描述之后,就会形成对实体全方位的描述,这里面用到属性的映射和归并,因为从不同数据源中来的,可能有些属性是重复的,甚至是冲突的,需要考虑怎么去合并;
其次就是利用知识图谱里面的关联关系去描述各种数据源之间数据的关系,知识图谱里面这种关系是非常灵活的,所以数据间的关系可以很容易的转换成为知识图谱来进行描述,从而支持关联分析,这里面主要用到的就是关系抽取的一个技术;
剩余的数据可能信息抽取也比较难解决,可以通过实体链接的技术,并不一定要把所有文本都转换成为结构化的数据,可以把它们进行链接,比如在做企业知识图谱的时候,可以把企业相关的新闻,不用把新闻的时间、地点、人物都抽取,这块难度较高,但是可以把新闻和实体做关联,即通过实体链接技术,实现围绕实体的多种类型数据的关联存储;
然后还有一个动态的数据,因为现实中间,数据都是在不断动态变化的,这主要通过事件的机制来进行描述,体现事件与实体间的关联,并利用时序的概念来描述事件的发展状况,把历史的事件和当前事件联系起来,有了动态变化之后,可以做时序的预测,这里涉及的技术主要是动态事件的提取相关技术。
怎么支持大数据和数据模式的动态变化
刚刚提到就是用基于图的数据存储,知识图谱的数据模式动态变化特性支持按需修改数据模式,底层用图存储的机制进行支撑,这部分详细参见《大规模知识图谱数据存储实战解析》。
怎么去处理非结构化和半结构化数据
我们可以用信息抽取相关的技术,实现从非结构化、半结构化数据中进行信息抽取,转换成知识图谱里的知识;刚刚提到对于新闻这种数据,可能很难把它完全结构化,可以通过实体链接的方式,结合知识图谱,实现对目标数据的语义关联标注,包括消岐、聚合,增强对数据的语义理解,数据和知识图谱关联以后,即可把知识图谱里语义的特性关联到非结构化数据里去;还有可以通过搜索的技术,去对非结构化的数据进行统一检索和利用,这是搜索引擎普遍使用技术,对文本的数据、非结构化的数据进行统一的检索,用了知识图谱之后可以做一定的语义检索。
最后是提供一个统一的分析利用的平台。这个平台提供用户消费数据不同的方式,比如说可视化、统一检索、统一数据查询、数据分析与挖掘和深度推理。
通过知识图谱去解决大数据并不是我们单独提出的,应该说现在有很多成熟的方案,国外知名公司Palantir即利用了知识图谱相关技术,中间黄色的框内描述的就是动态本体论相关的技术,对数据进行建模融合,底层数据抽取集成,上面提供一个统一的数据分析、利用、查询的方案。
这个方案和我们的PlantData平台非常的相似,底层我们进行数据的采集,采集即运用信息抽取相关的技术对数据尤其是非结构化数据进行处理,然后形成结构化的知识,再往上进行数据的融合与合并,形成知识图谱形式的知识,存储在右边大规模知识图谱数据存储引擎中,最上面是一个统一的消费平台,通过数据可视化,动态网络分析,语义检索,智能语义问答,以及与数据分析挖掘相关的一些方法去提供给用户,这是我们的PlantData平台针对大数据应用的一个解决方案。
总结一下,有了平台以后可以做什么?中间核心部分就是我们的平台,有了平台以后相当于我们具备了很多知识图谱上面的能力,比如可视化、网络分析、模型计算、数据智能等;同时PlantData平台还提供多种对外的接入方法,SDK等,在上面可以构建很多的应用,比如智能检索、智能推荐等,最终落地到不同的行业中,这里仅列举了我们探索过的一些利用知识图谱解决行业大数据问题的行业,PlantData大数据知识图谱智能平台,可以赋能各行业应用。
接下来我们对各行业中应用做一些简单的描述。
金融行业
金融行业数据相对来说比较全面,在这里面已经探索出很多的应用,比如智能投顾,即通过数据分析的方式,智能的去进行投资,这个听起来非常漂亮,但是目前为止,还很少有成熟的产品出来。国外的kensho做了一些探索,经过我们的分析和学习,应该还远远未达到智能投顾的级别。
但在现在一些具体的场景里面,有很多落地的应用,比如反欺诈,知识图谱可以将用户所有的行为关联起来,实现反欺诈的功能;同时可以做异常分析、组图欺诈的检测、精准营销、失联客户管理等。
生物医学领域
应用也非常多。比如在欧盟的第7框架下面,做了一个开放的药品平台Open Phacts,这是在药物发现里的一个应用;还可以做辅助诊疗,即前面提到的IBM Watson,我们也做了一些探索,比如中医开方辅助,即根据症状智能开方,同时也可以做相似病例的发现,目前医生在诊断的时候很大程度也是根据历史病例进行参考,因此我们可以利用知识图谱实现相似病例发现。
图书馆情报行业
我们也做了一些探索,比如在特定学科知识领域知识图谱的建设,基于知识图谱做一些知识的管理,同时我们还做了专利分析以及情报分析。
还有一些其他的应用,比如政府行业,政府大数据;农业领域的化肥本体知识库;还有就是客服系统,这是基于知识图谱的智能客服系统。
后续我们会针对知识图谱在金融、聊天机器人、游戏和知识管理四大行业的应用做一些深入探讨,邀请行业知名的公司参与,欢迎关注。
接下来是一个实战演示,在《大规模知识图谱数据存储实战解析》中我们以《人民的名义》为例制作了一个知识图谱,有了这个知识图谱之后到底可以用它来做什么?通过视频我们可以更加清楚的了解今天知识图谱应用的技术。