知识图谱:是一种结构化的语义知识库,用来所描述物理世界中的概念和物理关系。
“The world is not made of strings , but is made of things.”
——辛格博士,from Google.
辛格尔博士对知识图谱的介绍很简短:things,not string。这抓住了知识图谱的核心,也点出了知识图谱加入之后搜索发生的变化,以前的搜索,都是将要搜索的内容看作字符串,结果是和字符串进行匹配,将匹配程度高的排在前面,后面按照匹配度依次显示。利用知识图谱之后,将搜索的内容不再看作字符串,而是看作客观世界的事物,也就是一个个的个体,在进行搜索时,不单是显示搜索匹配的内容,还将与个体相关的信息展示出来。
通过对复杂的文本数据进行转化为三元组,并通过有向图结构的形式呈现。而三元组是知识图谱的基本单位也是核心。三元组的主要结构有两种:
里程碑式的发展是2012年,谷歌提出了基于知识图谱的搜索引擎产品,如今在搜索,推理,决策、问答、推荐等领域都有所应用。
知识图谱的构建技术主要有自顶向下和自底向上两种。
其中自顶向下构建是指借助百科类网站等结构化数据源,从高质量数据中提取本体和模式信息,加入到知识库里。而自底向上构建,则是借助一定的技术手段,从公开采集的数据中提取出资源模式,选择其中置信度较高的信息,加入到知识库中。
在知识图谱技术发展初期,多数参与企业和科研机构主要采用自顶向下的方式构建基础知识库,如Freebase。随着自动知识抽取与加工技术的不断成熟,当前的知识图谱大多采用自底向上的方式构建,如Google的Knowledge Vault和微软的Satori知识库。(知识库发展)
通用和领域知识图谱:
知识图谱最成熟的一个场景,自动给出搜索结果和相关人物,知识图谱分为通用知识图谱与领域知识图谱两类,两类图谱本质相同,其区别主要体现在覆盖范围与使用方式上。通用知识图谱可以形象地看成一个面向通用领域的结构化的百科知识库,其中包含了大量的现实世界中的常识性知识,覆盖面广。领域知识图谱又叫行业知识图谱或垂直知识图谱,通常面向某一特定领域,可看成是一个基于语义技术的行业知识库,因其基于行业数据构建,有着严格而丰富的数据模式,所以对该领域知识的深度、知识准确性有着更高的要求。
语义搜索:
当前基于关键词的搜索技术在知识图谱的知识支持下可以上升到基于实体和关系的检索,称之为语义搜索。语义搜索利用知识图谱可以准确地捕捉用户搜索意图,借助于知识图谱,直接给出满足用户搜索意图的答案,而不是包含关键词的相关网页的链接。
经由:①数据预处理:处理数据库数据,包含索引、数据清理、特征提取等;②问题分析:执行语法分析,同时检测问题的核心特征,如NER、答案类型等;③数据匹配:将问题里的terms 和数据里的实体进行匹配;④查询创建:生成结构查询候选;⑤排序;⑥结果返回与生成:执行查询并从结果里抽取答案。
对于原始数据,通常有三种格式,格式化、非格式化以及半格式化数据。
对于以上数据通常采用RDF和图数据库进行存储
大部分开放的知识图谱,都是以RDF形式对外开放。
RDF本质是一个数据模型,它提供了一个统一的标准描述web资源,资源指的是类、属性、实例等。RDF在形式上表示为三元组。RDF以SPO三元组的方式对实体关系三元组知识进行存储,具体是以节点和边的形式进行知识结构建模,如下所示:(更多关于RDF)
图数据库是一种非关系数据库(Not only sql,Nosql)(更多关于图数据库),解决了当前关系数据库的局限性,明确的显示了数据节点之间的依赖关系,而其他关系数据库通过隐式连接节点。因此图数据库在设计可以快速的实现检索。以Neo4j为例。
其查询语言采用自设计的cypher,与SQL设计思想上类似,Neo4j教程
Oracle,DB2,Mysql等多种数据库都属于关系型数据库。知识图谱在关系数据库能以多种方式进行存储,包括三元组表、属性表、水平存储、垂直分割等。以三元组表存储格式为例,该表有三列。
优点:实现较为简单,也便于理解,具有通用性强,语义表达明确的特点。
缺点:在关系数据库中查询关系时会面临大量的自连接操作,开销较大,使得查询性能降低。
在逻辑上,我们通常将知识图谱划分为两个层次:数据层和模式层。
自底向上的构建方法流程如下图所示:
从数据源中提取实体、属性和关系,加入到知识图谱的数据层;
然后将这些知识要素进行归纳组织;
逐步往上抽象为概念;
最后形成模式层。自顶而下的方法正好相反。
大概流程:对于获取的数据,可能是结构化or not。对于结构化数据,由于已经给出了知识要素,所以可以不进行知识抽取,对于非结构化或者半结构化数据,通过信息抽取获取知识要素,即实体关系。
从多种来源获取数据,比如文本,结构化数据库,多媒体数据,传感器数据或者人工众包数据。
从自然语言文本中抽取指定类型的实体、关系、事件等事实信息,并形成结构化数据输出的文本处理技术,即Making information more machine-readable,换成更方便及其识别的形式,以进行后续的研究。主要包括以下子任务
命名实体识别,是信息抽取任务的基础,识别出待处理文本中七类(人名、 机构名、 地名、 时间、 日期、 货币和百分比) 命名实体,两个子任务:实体边界识别和确定实体类别。见这篇文章
关系抽取是命名实体识别的更进一步。自动识别A怎么了B。
我们来看几个表示关系的具体例子(方括号中的是实体):
事件抽取(EE)是指从文本中识别事件,然后生成详细的结构数据,能够识别出“谁对谁做了什么,在哪里,在什么时候,用什么方式/工具,以及为什么”。比如从袭击新闻的报道中识别出袭击发生的地点、时间、人物、武器等等,EE涉及到多个实体和实体间关系的抽取。
“Masked gunmen armed with assault rifles and grenades attacked a wedding party in mainly Kurdish southeast Turkey, killing at least 44 people.” 。
这里需要识别出:
通过信息抽取,我们就从原始的非结构化和半结构化数据中获取到了实体、关系以及实体的属性信息。这些信息就像碎片一样,无规则的存在数据层中。
将接下来的过程比喻成拼图的话,那么这些信息就是拼图碎片,散乱无章,甚至还有从其他拼图里跑来的碎片、本身就是用来干扰我们拼图的错误碎片。
那么如何解决这一问题,就是在知识融合这一步里我们需要做的了。主要关键技术包含实体链接、知识合并。
实体链接,就是把文本中的mention链接到KG里的entity的任务。如下图所示:
(1)指代消解(Coreference Resolution)
代词他指的是哪一个实体?
(2)实体消岐(Entity Disambiguation)
有些实体写法不一样,但指向同一个实体,比如“New York”表示纽约,而“NYC”同样也可以表示纽约。这种情况下,实体消歧可以减少实体的种类,降低图谱的稀疏性。
实体消歧是专门用于解决同名实体产生歧义问题的技术,通过实体消歧,就可以根据当前的语境,准确建立实体链接,实体消歧主要采用聚类法。其实也可以看做基于上下文的分类问题,类似于词性消歧和词义消歧。
(3)在确认知识库中对应的正确实体对象之后,将该实体指称项链接到知识库中对应实体。
在构建知识图谱时,可以从第三方知识库产品或已有结构化数据获取知识输入。常见的知识合并需求有两个,一个是合并外部知识库,另一个是合并关系数据库。
将外部知识库融合到本地知识库需要处理两个层面的问题:
海量数据在经信息抽取、知识融合之后得到一系列基本的事实表达,但这并不等同于知识,要想获得结构化,网络化的知识体系,还需要经过质量评估之后(部分需要人工参与甄别),才能将合格的部分纳入知识体系中以确保知识库的质量,这就是知识加工的过程。
知识加工主要包括3方面内容:本体构建、知识推理和质量评估。
1、维基百科定义
In computer science and information science, an ontology is a formal naming and definition of the types, properties, and interrelationships of the entities that really or fundamentally exist for a particular domain of discourse.
译:在计算机科学和信息科学中,一个本体就是特定领域或根本存在的实体的类型、属性、相互关系的一个正式的命名和定义
总的概括:本体定义了组成领域的词汇表的基本术语及其关系,以及结合这些术语和关系来定义词汇表外延的规则。以大学教育为例
2、本体 VS 知识图谱 VS 知识地图
Same:本体和知识图谱都通过定义元数据以支持语义服务。
Difference:
可以认为,本体是知识图谱的抽象表达,描述知识图谱的上层模式;知识图谱是本体的实例化, 是基于本体的知识库。( refer 黄恒琪,于娟,廖晓,席运江.知识图谱研究综述.计算机系统应用,2019,28(6):1–12.)
3、构建过程
主要包括三个阶段
举例:
得到“阿里巴巴”、“腾讯”、“手机”这三个实体的时候,可能会认为它们三个之间并没有什么差别,但当它去计算三个实体之间的相似度后,就会发现,阿里巴巴和腾讯之间可能更相似,和手机差别更大一些。
这就是第一步的作用,但这样下来,知识图谱实际上还是没有一个上下层的概念,它还是不知道,阿里巴巴和手机,根本就不隶属于一个类型,无法比较。因此我们在实体上下位关系抽取这一步,就需要去完成这样的工作,从而生成第三步的本体。
当三步结束后,这个知识图谱可能就会明白,“阿里巴巴和腾讯,其实都是公司这样一个实体下的细分实体。它们和手机并不是一类。”
完成了本体构建这一步之后,一个知识图谱的雏形便已经搭建好了。但可能在这个时候,知识图谱之间大多数关系都是残缺的,缺失值非常严重,那么这个时候,我们就可以使用知识推理技术,去完成进一步的知识发现。
知识推理就是指从知识库中已有的实体关系数据出发,经过计算机推理,建立实体间的新关联,从而扩展和丰富知识网络。
例如康熙是雍正的父亲,雍正是乾隆的父亲,那么尽管康熙和乾隆这两个实体之间通过知识推理,就可以获得他们之间是祖孙关系。
知识推理的对象也并不局限于实体间的关系,也可以是实体的属性值,本体的概念层次关系等。比如:
推理属性值:已知某实体的生日属性,可以通过推理得到该实体的年龄属性;
推理概念:已知(老虎,科,猫科)和(猫科,目,食肉目)可以推出(老虎,目,食肉目)
这一块的算法主要可以分为3大类,基于逻辑的推理、基于图的推理和基于深度学习的推理
质量评估也是知识库构建技术的重要组成部分,这一部分存在的意义在于:可以对知识的可信度进行量化,通过舍弃置信度较低的知识来保障知识库的质量。
知识库的更新包括概念层的更新和数据层的更新。
指以更新后的全部数据为输入,从零开始构建知识图谱。这种方法比较简单,但资源消耗大,而且需要耗费大量人力资源进行系统维护;
以当前新增数据为输入,向现有知识图谱中添加新增知识。这种方式资源消耗小,但目前仍需要大量人工干预(定义规则等),因此实施起来十分困难。