从一开始的Google搜索,到如今的聊天机器人、大数据风控、证券投资、智能医疗、自适应教育、推荐系统,无一不跟知识图谱相关。它在技术领域的热度也在逐年上升。 本文以通俗易懂的方式来说解知识图谱相关的知识、尤为对从零开始搭建知识图谱过程中须要经历的步骤以及每一个阶段须要考虑的问题都给予了比较详细的解释。html
知识图谱( Knowledge Graph)的概念由谷歌2012年正式提出,旨在实现更智能的搜索引擎,而且于2013年之后开始在学术界和业界普及。目前,随着智能信息服务应用的不断发展,知识图谱已被普遍应用于智能搜索、智能问答、个性化推荐、情报分析、反欺诈等领域。另外,经过知识图谱可以将Web上的信息、数据以及连接关系汇集为知识,使信息资源更易于计算、理解以及评价,而且造成一套Web语义知识库。知识图谱以其强大的语义处理能力与开放互联能力,可为万维网上的知识互联奠基扎实的基础,使Web 3.0提出的“知识之网”愿景成为了可能。算法
知识图谱:是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系。数据库
知识图谱经过对错综复杂的文档的数据进行有效的加工、处理、整合,转化为简单、清晰的“实体,关系,实体”的三元组,最后聚合大量知识,从而实现知识的快速响应和推理。服务器
知识图谱有自顶向下和自底向上两种构建方式。所谓自顶向下构建是借助百科类网站等结构化数据源,从高质量数据中提取本体和模式信息,加入到知识库中;所谓自底向上构建,则是借助必定的技术手段,从公开采集的数据中提取出资源模式,选择其中置信度较高的新模式,经人工审核以后,加入到知识库中。网络
看一张简单的知识图谱:数据结构
如图所示,你能够看到,若是两个节点之间存在关系,他们就会被一条无向边链接在一块儿,那么这个节点,咱们就称为实体(Entity),它们之间的这条边,咱们就称为关系(Relationship)。架构
知识图谱的基本单位,即是“实体(Entity)-关系(Relationship)-实体(Entity)”构成的三元组,这也是知识图谱的核心。框架
实体: 指的是具备可区别性且独立存在的某种事物。实体是知识图谱中的最基本元素,不一样的实体间存在不一样的关系。如图中的“中国”、“北京”、“16410平方千米”等。机器学习
关系: 关系是链接不一样的实体,指代实体之间的联系。经过关系节点把知识图谱中的节点链接起来,造成一张大图。如图中的“人口”、“首都”、“面积”等函数
知识图谱的原始数据类型通常来讲有三类(也是互联网上的三类原始数据):
如何存储上面这三类数据类型呢?通常有两种选择,一个是经过RDF(资源描述框架)这样的规范存储格式来进行存储,还有一种方法,就是使用图数据库来进行存储,经常使用的有Neo4j等。
RDF结构:
Neo4j结构:
在知识图谱方面,图数据库比关系数据库灵活的多。
在数据少的时候,关系数据库也没有问题,效率也不低。可是随着知识图谱变的复杂,图数据库的优点会明显增长。当涉及到2,3度的关联查询,基于图数据库的效率会比关系数据库的效率高出几千倍甚至几百万倍。
知识图谱在架构上分,能够分为逻辑架构和技术架构。
知识图谱在逻辑上可分为模式层与数据层两个层次。
模式层:实体-关系-实体,实体-属性-性值
数据层:比尔盖茨-妻子-梅琳达·盖茨,比尔盖茨-总裁-微软
知识图谱的总体架构以下图所示,其中虚线框内的部分为知识图谱的构建过程,同时也是知识图谱更新的过程。
咱们来一步一步的分析下这张图。
其实咱们的构建知识图谱的过程,就是信息抽取、知识融合、知识加工三个过程,可是这三个过程都有各自的难点,下文经过从这三个模块出发,解析这三个模块说要解决的问题,会遇到的难点。
信息抽取(infromation extraction)是知识图谱构建的第1步,其中的关键问题是:如何从异构数据源中自动抽取信息获得候选指示单元?
信息抽取是一种自动化地从半结构化和无结构数据中抽取实体、关系以及实体属性等结构化信息的技术。
涉及的关键技术包括:实体抽取、关系抽取和属性抽取。
实体抽取又称为命名实体识别(named entity recognition,NER),是指从文本数据集中自动识别出命名实体。实体抽取的质量(准确率和召回率)对后续的知识获取效率和质量影响极大,所以是信息抽取中最为基础和关键的部分。
2012年Ling等人概括出112种实体类别,并基于条件随机场CRF进行实体边界识别,最后采用自适应感知机算法实现了对实体的自动分类,取得了不错的效果。
可是随着互联网中内容的动态变化,采用人工预约义实体分类体系的方式已经很难适应时代的需求,所以提出了面向开放域的实体识别和分类研究。
在面向开放域的实体识别和分类研究中,不须要(也不可能)为每一个领域或者每一个实体类别创建单独的语料库做为训练集。所以,该领域面临的主要挑战是如何从给定的少许实体实例中自动发现具备区分力的模型。
一种思路是根据已知的实体实例进行特征建模,利用该模型处理海量数据集获得新的命名实体列表,而后针对新实体建模,迭代地生成实体标注语料库。
另外一种思路是利用搜索引擎的服务器日志,事先并不给出实体分类等信息,而是基于实体的语义特征从搜索日志中识别出命名实体,而后采用聚类算法对识别出的实体对象进行聚类。
文本语料通过实体抽取,获得的是一系列离散的命名实体,为了获得语义信息,还须要从相关的语料中提取出实体之间的关联关系,经过关联关系将实体(概念)联系起来,才可以造成网状的知识结构,研究关系抽取技术的目的,就是解决如何从文本语料中抽取实体间的关系这一基本问题。
属性抽取的目标是从不一样信息源中采集特定实体的属性信息。例如针对某个公众人物,能够从网络公开信息中获得其昵称、生日、国籍、教育背景等信息。属性抽取技术可以从多种数据来源中聚集这些信息,实现对实体属性的完整勾画。
经过信息抽取,咱们就从原始的非结构化和半结构化数据中获取到了实体、关系以及实体的属性信息。
若是咱们将接下来的过程比喻成拼图的话,那么这些信息就是拼图碎片,散乱无章,甚至还有从其余拼图里跑来的碎片、自己就是用来干扰咱们拼图的错误碎片。
拼图碎片(信息)之间的关系是扁平化的,缺少层次性和逻辑性;
拼图(知识)中还存在大量冗杂和错误的拼图碎片(信息)
那么如何解决这一问题,就是在知识融合这一步里咱们须要作的了。
知识融合包括2部份内容:实体连接,知识合并
实体连接(entity linking):是指对于从文本中抽取获得的实体对象,将其连接到知识库中对应的正确实体对象的操做。
其基本思想是首先根据给定的实体指称项,从知识库中选出一组候选实体对象,而后经过类似度计算将指称项连接到正确的实体对象。
研究历史:
实体连接的流程:
实体消歧:专门用于解决同名实体产生歧义问题的技术,经过实体消歧,就能够根据当前的语境,准确创建实体连接,实体消歧主要采用聚类法。其实也能够看作基于上下文的分类问题,相似于词性消歧和词义消歧。
共指消解:主要用于解决多个指称对应同一实体对象的问题。在一次会话中,多个指称可能指向的是同一实体对象。利用共指消解技术,能够将这些指称项关联(合并)到正确的实体对象,因为该问题在信息检索和天然语言处理等领域具备特殊的重要性,吸引了大量的研究努力。共指消解还有一些其余的名字,好比对象对齐、实体匹配和实体同义。
在构建知识图谱时,能够从第三方知识库产品或已有结构化数据获取知识输入。
常见的知识合并需求有两个,一个是合并外部知识库,另外一个是合并关系数据库。
将外部知识库融合到本地知识库须要处理两个层面的问题:
数据层的融合,包括实体的指称、属性、关系以及所属类别等,主要的问题是如何避免实例以及关系的冲突问题,形成没必要要的冗余
经过模式层的融合,将新获得的本体融入已有的本体库中
而后是合并关系数据库,在知识图谱构建过程当中,一个重要的高质量知识来源是企业或者机构本身的关系数据库。为了将这些结构化的历史数据融入到知识图谱中,能够采用资源描述框架(RDF)做为数据模型。业界和学术界将这一数据转换过程形象地称为RDB2RDF,其实质就是将关系数据库的数据换成RDF的三元组数据。
在前面,咱们已经经过信息抽取,从原始语料中提取出了实体、关系与属性等知识要素,而且通过知识融合,消除实体指称项与实体对象之间的歧义,获得一系列基本的事实表达。
然而事实自己并不等于知识。要想最终得到结构化,网络化的知识体系,还须要经历知识加工的过程。
知识加工主要包括3方面内容:本体构建、知识推理和质量评估。
本体(ontology)是指工人的概念集合、概念框架,如“人”、“事”、“物”等。
本体能够采用人工编辑的方式手动构建(借助本体编辑软件),也能够以数据驱动的自动化方式构建本体。由于人工方式工做量巨大,且很难找到符合要求的专家,所以当前主流的全局本体库产品,都是从一些面向特定领域的现有本体库出发,采用自动构建技术逐步扩展获得的。
自动化本体构建过程包含三个阶段:
好比对下面这个例子,当知识图谱刚获得“阿里巴巴”、“腾讯”、“手机”这三个实体的时候,可能会认为它们三个之间并无什么差异,但当它去计算三个实体之间的类似度后,就会发现,阿里巴巴和腾讯之间可能更类似,和手机差异更大一些。
这就是第一步的做用,但这样下来,知识图谱实际上仍是没有一个上下层的概念,它仍是不知道,阿里巴巴和手机,根本就不隶属于一个类型,没法比较。所以咱们在实体上下位关系抽取这一步,就须要去完成这样的工做,从而生成第三步的本体。
当三步结束后,这个知识图谱可能就会明白,“阿里巴巴和腾讯,其实都是公司这样一个实体下的细分实体。它们和手机并非一类。”
在咱们完成了本体构建这一步以后,一个知识图谱的雏形便已经搭建好了。但可能在这个时候,知识图谱之间大多数关系都是残缺的,缺失值很是严重,那么这个时候,咱们就可使用知识推理技术,去完成进一步的知识发现。
咱们能够发现:若是A是B的配偶,B是C的主席,C坐落于D,那么咱们就能够认为,A生活在D这个城市。
根据这一条规则,咱们能够去挖掘一下在图里,是否是还有其余的path知足这个条件,那么咱们就能够将AD两个关联起来。除此以外,咱们还能够去思考,串联里有一环是B是C的主席,那么B是C的CEO、B是C的COO,是否是也能够做为这个推理策略的一环呢?
固然知识推理的对象也并不局限于实体间的关系,也能够是实体的属性值,本体的概念层次关系等。
推理属性值:已知某实体的生日属性,能够经过推理获得该实体的年龄属性;
推理概念:已知(老虎,科,猫科)和(猫科,目,食肉目)能够推出(老虎,目,食肉目)
这一块的算法主要能够分为3大类,基于逻辑的推理、基于图的推理和基于深度学习的推理。
质量评估也是知识库构建技术的重要组成部分,这一部分存在的意义在于:能够对知识的可信度进行量化,经过舍弃置信度较低的知识来保障知识库的质量。
从逻辑上看,知识库的更新包括概念层的更新和数据层的更新。
概念层的更新是指新增数据后得到了新的概念,须要自动将新的概念添加到知识库的概念层中。
数据层的更新主要是新增或更新实体、关系、属性值,对数据层进行更新须要考虑数据源的可靠性、数据的一致性(是否存在矛盾或冗杂等问题)等可靠数据源,并选择在各数据源中出现频率高的事实和属性加入知识库。
知识图谱的内容更新有两种方式:
经过知识图谱,不只能够将互联网的信息表达成更接近人类认知世界的形式,并且提供了一种更好的组织、管理和利用海量信息的方式。目前的知识图谱技术主要用于智能语义搜索、移动我的助理(Siri)以及深度问答系统(Watson),支撑这些应用的核心技术正是知识图谱技术。
在智能语义搜索中,当用户发起查询时,搜索引擎会借助知识图谱的帮助对用户查询的关键词进行解析和推理,进而将其映射到知识图谱中的一个或一组概念之上,而后根据知识图谱的概念层次结构,向用户返回图形化的知识结构,这就是咱们在谷歌和百度的搜索结果中看到的知识卡片。
在深度问答应用中,系统一样会首先在知识图谱的帮助下对用户使用天然语言提出的问题进行语义分析和语法分析,进而将其转化成结构化形式的查询语句,而后在知识图谱中查询答案。好比,若是用户提问:『如何判断是否感染了埃博拉病毒?』,则该查询有可能被等价变换为『埃博拉病毒的症状有哪些?』,而后再进行推理变换,最终造成等价的三元组查询语句,如(埃博拉,症状,?)和(埃博拉,征兆,?)等。若是因为知识库不完善而没法经过推理解答用户的问题,深度问答系统还能够利用搜索引擎向用户反馈搜索结果,同时根据搜索结果更新知识库,从而为回答后续的提问提早作出准备。