一、万维网现状
1、当前的Web是一种面向人的网络,很多繁琐的过程依旧需要人工的参与。
2、以搜索引擎为例,目前的搜索引擎主要依靠关键字匹配,因此存在如下问题:
(1)高匹配、低精度,搜索出来的内容中往往参杂着大量不相关文档。
(2)检索结果对词汇高度敏感,不同的关键字会返回不同的搜索结果,即使是语义上相似的关键字。
(3)检索结果是单一的网页,搜索返回结果以网页为单位,分布在不同网页的信息往往需要用户给出多个查询来收集相关信息。
(4)即使搜索引擎返回了用户期望的内容,用户仍然需要自己浏览网页,从中提取需要的信息。
注意:所有的传统Web应用在面对越来越大的网页数量、越来越复杂的Web数据结构时,都显得力不从心。
3、问题原因:是因为Web上的内容是面向人而不是面向机器的,因而机器无法理解Web上的内容。在机器看来,Web上的内容都只是普通的二进制数据,数据背后的含义机器无法理解,因此无法实现Web内容的自动处理。
4、搜索引擎的出现,在一定程度上解决了用户从互联网中获取信息的难题,但由于它们是基于关键词或字符串的,并没有对查询的目标(通常为网页)和用户的查询输入进行理解。同时,它们在搜索准确度方面存在明显的缺陷,即由于HTML形式的网页缺乏语义,难以被计算机理解。
二、语义Web背景和概念
1、目前我们使用的Web是面向人的网络,Web更多的是组织、呈现、共享信息的媒介,Web并不能理解数据表达的含义,因此很多繁琐的过程都需要人类参与。面对目前网页爆炸式增长,人们快速准确地获取有价值信息的难度越来越大。在信息爆炸的当今时代,Web上的网页数量呈指数级增长,传统Web人机交互性弱的缺点被无限放大。语义Web的提出为这一问题的解决提供了出路。
2、语义Web是万维网的扩展,提供了一个通用框架,允许在应用程序,企业和社区之间共享和重用数据。提供了整合不同来源的数据的通用格式和记录数据与现实世界对象对应关系的语言,其目标是使得机器能够理解Web上的内容,并能够进行一定的推理,促进高效的信息共享和机器智能协同。
3、语义web的一个比较重要的作用就是数据共享,共享的前提是数据要整合成统一的表示形式,如利用本体语言OWL或资源描述框架RDF。
(1)关系数据库(RDB)是语义web最大的数据来源之一,大多数网站都习惯于使用关系数据库来存储数据。幸运的是,RDF和OWL(网络本体语言,Web Ontology Language)都适用于对实体--关系(ER)模型(大多数关系数据库都使用ER模型来进行建模)中所表达的信息进行建模。
(2)目前已经有多种工具可以用于将关系数据库中的数据公开为虚拟RDF图,从而作为一个SPARQL(为RDF开发的一种查询语言和数据获取协议)端点被用户浏览和访问。
注意:SPARQL (SPARQL Protocol and RDF Query Language),是为RDF开发的一种查询语言和数据获取协议,它是为W3C所开发的RDF数据模型所定义,但是可以用于任何可以用RDF来表示的信息资源。
3、RDB2RDF转化常用工具有:
(1)D2RQ;
(2)SquirrelRDF;
(3)OpenLink Virtuoso;
三、语义Web的实现的关键技术
1、语义Web的实现依赖于三大关键技术:XML、RDF和Ontology。
2、为解决互联网信息的语义问题,2008年Tim Berners-Lee等人提出了下一代互联网——语义网(The Semantic Web)的概念。在语义Web中,所有的信息都具备一定的结构,这些结构的语义通常使用本体(Ontology)来描述。
(1)当信息结构化并且具备语义后,计算机就能理解其含义了,此时用户再进行检索时,搜索引擎在理解互联网中信息含义的基础上,寻找用户真实需要的信息。
(2)本体(Ontology)描述了特定领域(领域本体)或所有领域(通用本体)中的概念以及概念之间的关联关系,并且这些概念和关系是明确的、被共同认可的。
(3)本体中主要包括概念、概念的其他称谓(即同义关系)、概念之间的上下位关系、概念的属性关系(分为对象属性和数值属性)、属性的定义域(Domain)和值域(Range),以及在这些内容上的公理、约束等。
(一)XML
1、XML(eXtensible Marked Language,即可扩展标记语言)是一种标记语言,用于传输和存储数据。XML不仅能描述了文档的每一成分,也描述了文档成分之间的结构信息。与HTML不同,XML没有固定的标签集,由用户自定义适用于特定应用的标签,这大大提高了XML的可扩展性。代码1是一个XML文档的实例:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>George</to>
<from>John</from>
<body>Hello world!</body>
</note>
(1)第一行是XML声明,定义了XML的版本(1.0)和使用的编码(UTF-8)。
(2)下一行开始是对文档的描述,其中标签是根元素,包含3个子元素(to,from,body);
(3)最后一行定义了根元素的结尾。
(4)元素note、to、from和body完全由用户自行定义,但我们依旧能轻松的理解其表达的含义,同时其清晰的嵌套结构也非常适合机器自动处理,比如利用XPath对XML进行查询,利用DOM和SAX对XML进行解析。
2、自定义标签集提高了XML的可扩展性,但不同应用之间的交互必须对标签集进行约定。XML允许用户通过XML模式来定义标签集,XML模式为XML文档提供了一种约束机制,限定XML文档所能使用的元素名和属性名,同时也对文档结构进行了约束,限定属性的取值范围,元素之间的嵌套关系。
3、常用的XML模式主要有DTD(Document Type Definition)和XML Schema。DTD相对陈旧,并且限制较多,XML Schema基于XML语法,并且提供了扩展的可能性,也因此XML Schema应用更为广泛。代码例子展示了XML Schema的一个实例:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
(1)元素是每一个XML Schema的根元素,元素定义的语法是:“name”指定了元素的名称,“type”指定了元素的类型,XML Schema拥有很多内置数据类型,同时也可以自定义数据类型,如例子所示,自定义了一个complexType类型,包含3个元素(to,from,body),每个元素的类型都是内置类型”string”。
(2)标签指定了3个元素必须按序出现。
(3)为了解决命名冲突的问题,XML引入了命名空间(Name Space),即在每个元素名前加上前缀,构成如下格式:“前缀:元素名”,其中“前缀”就代表命名空间,所以需要首先对命名空间进行声明,形式如下:“xmlns:前缀=”位置””,如例子所示,我们声明了命名空间”xs”并在每个元素中使用。
(二)RDF(资源描述框架)
1、XML通过标签和标签的嵌套结构给用户提供了一种良好的组织数据的方式,因为其强大的可扩展性和可解读性,XML逐渐成为数据存储和传输的第一选择,成为语义Web的支撑。
2、然而,XML并不具有语义描述能力。为此,W3C于1999年提出了RDF(Resource Description Framework,即资源描述框架)用来解决XML的局限,2004年2月RDF正式成为W3C推荐标准,目前最新的RDF版本是2014年推出的RDF 1.1。
3、RDF是一种描述资源信息的框架,资源可以是任何东西,包括文档、人、物理对象和抽象概念。
4、RDF由三部分组成:RDF Data Model、RDF Schema和RDF Syntax。
(1)RDF Data Model允许用户用陈述(statement)的方式对资源进行描述;
(2)一个RDF陈述描述了两个资源之间的关系,主语(subject)和宾语(object)分别指两个资源,“predicate”表达了这个资源之间的关系,关系以有向的方式表达(从主语到宾语),因此在RDF中关系也被称作属性(property)。
5、因为每个RDF陈述包含三个元素,因此RDF陈述也被称作RDF三元组(triples)。下表1展示了RDF的一些实例:
<Bob> <is a> <person>
<Bob> <is a friend of> <Alice>
<Bob> <is born on> <the 4th of July 1990>
<Bob> <is interested in> <the Mona Lisa>
<the Mona Lisa> <was created by> <Leonardo da Vinci>
<the video 'La Joconde à Washington'> <is about> <the Mona Lisa>
(1)同一个资源通常会在多个三元组中出现,一个资源可能在某一三元组中是主语,但在另一个三元组中可能是宾语,这使得三元组之间可以进行连接。
(2)我们可以通过有向图可视化各个三元组,有向图中,节点表达主语或谓语,有向边表示谓语,下图2以图的形式展示了表1中展示的各RDF三元组。

6、一旦我们构建如图所示的图,我们就可以采用SPARQL进行语义查询,比如“people interested in paintings by Leonardo da Vinci”。
7、RDF Data Model提供了一种描述资源的方式,但是RDF Data Model没有对用于资源描述的词汇做出任何定义,也就是依旧没有提供资源的语义信息,为此RDF Data Model常和一组词汇表结合使用。
8、为了支持词汇表定义,RDF提供了RDF Schema语言,RDF Schema允许用户定义RDF data的语义特征。RDF Schema采用面向对象的思想对词汇表进行组织,RDF Schema的作用是:
(1)定义资源和属性的类型;
(2)定义属性所能应用的资源类以及属性的类型;
(3)定义上述类别声明的语法;
(4)申明一些由其他机构或组织定义的元数据标准的属性类。
9、RDF定义了如下表2所示的核心类、核心属性。

10、存在许多不同的序列化方法来描述RDF陈述,这些序列化方法称之为RDF Syntax,不同的RDF Syntax描述的RDF陈述在逻辑上完全等价。这些RDF Syntax大致分为四类:
(1)Turtle类RDF语言(N-Triples、Turtle、TriG和N-Quads);
(2)JSON-LD(基于JSON的RDF Syntax);
(3)RDFa(HTML和XML相嵌);
(4)RDF/XML(用XML语法描述RDF)。
(三)OWL(Web Ontology Language,网络本体语言)
1、RDF和RDF Schema能够描述一定的语义信息,但表达能力依旧有限,为了更好的描述语义Web上的信息,需要更加强大的本体建模语言。
2、术语Ontology(本体)是一个哲学上的概念,是对客观世界的抽象。目前,Ontology已经被广泛应用到计算机科学领域,用以描述概念和概念之间关系。Geuber关于本体的定义最为广发认可,他将本体定义为:
“An ontology is an explicit(明确的) specification(规范) of a conceptualization(概念).”
(1)概念化(conceptualization)的数学定义为:C=<D,W,Rc>,其中C代表概念化对象,D表示一个领域,W是该领域相关事物状态的集合,Rc是域空间<D,W>上概念关系的集合。
(2)规范(specification)是为了形成对领域内概念、知识及概念间关系的统一认知与推理,以利于共享和重用。
注意:本体概念:本体(Ontology)描述了特定领域(领域本体)或所有领域(通用本体)中的概念以及概念之间的关联关系,并且这些概念和关系是明确的、被共同认可的。通常,本体中主要包括概念、概念的其他称谓(即同义关系)、概念之间的上下位关系、概念的属性关系(分为对象属性和数值属性)、属性的定义域(Domain)和值域(Range),以及在这些内容上的公理、约束等。
3、本体语言用于对本体进行显示的形式化描述,目前存在多种本体语言,W3C的推荐标准是建立在RDF与RDF Schema基础上的OWL(Web Ontology Language),OWL为需要处理信息内容的应用程序设计,而不仅仅是向人类呈现信息,通过提供额外的词汇和形式化的语义,OWL提供了比XML,RDF和RDF Schema更高的机器对Web内容的可解释性。
(1)OWL提供了三种表达能力越来越强的子语言:OWL Lite,OWL DL和OWL Full。
(2)OWL Full是完整的OWL语言,即使用了OWL所有的原语,适合于那些希望获得RDF最大表现能力和RDF语法自由度且无计算效率要求的用户;
(3)OWL Full允许引入本体来扩展预定义的RDF/OWL词汇的含义。
(4)OWL DL是OWL Full的子语言,包含了OWL所有的语言结构,但对其使用进行了限制,适用于那些希望获得最大表现力,同时保持计算完整性和可判定性的用户。
(5)OWL Lite对OWL DL的语法进行了进一步限制,因而容易掌握和实现,适用于那些只需要分类层次和简单约束的用户。
4、采用OWL的本体开发人员需要考虑哪种子语言最适合其需求。
(1)选择OWL Lite还是OWL DL取决于用户多大程度上需要OWL DL提供的更具表现力的构造。
(2)OWL DL和OWL Full之间的选择主要取决于用户多大程度上需要RDF Schema的元建模机制。与OWL DL相比,当使用OWL Full时,推理支持是难以预测的,因为完整的OWL Full实现是不可能的。
5、OWL使用基于XML的RDF语法,OWL Lite除了兼容RDF Schema的语义特征外,进一步将属性进行细化为:ObjectProperty、DatatypeProperty、inverseOf、TransitiveProperty、SymmetricProperty、FunctionalProperty、InverseFunctionalProperty,同时对属性取值方式进行了约束:allValuesFrom、someValuesFrom,也可以对属性取值进行基数约束:minCardinality 、maxCardinality。对类的(不)等价关系也进行了定义:equivalentClass、equivalentProperty、sameAs、differentFrom、AllDifferent、distinctMembers。OWL DL和OWL Full在OWL Lite的基础上额外增加了布尔组合扩展:unionOf、complementOf、intersectionOf。
四、语义Web挑战
1、语义Web的发展依旧面临很多问题和挑战,主要可以归结为三类:
(1)数据问题。目前万维网上的绝大多数内容尚未加上符合语义Web规范的标记。因此,如何自动化地给现有的Web内容加上符合语义Web规范的标记是语义Web走向实用化面临的难题之一。这涉及到一系列技术,包括信息抽取、分类、表达、存储、查询等。
(2)智能问题。如何让计算机或其它设备具备“思考”和“推断”能力是另一个技术难题,这涉及到本体、逻辑和规则等方面技术。如何应对本体变化带来的问题是当前面临的挑战。另外,描述逻辑语言在表达能力上存在一定的不足,某些应用可能需要研究表达能力更强的描述逻辑。
(3)安全问题。借助语义Web技术所构建的数据互联网络,人们能够迅速、准确地找到实体几乎全部的信息,一旦某些实体的信息,如个人私密信息、机构涉密信息等遭到泄露将导致严重的后果。因此语义Web的安全性同样需要格外重视。
五、知识图谱
(一)知识图谱概念
1、知识图谱是一种基于图的数据结构,由节点(point)和边(Edge)组成,每个节点表示一个“实体”,每条边为实体与实体之间的“关系”,知识图谱本质上是语义网络。是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过将数据粒度从document级别降到data级别,聚合大量知识,从而实现知识的快速响应和推理。包括实体、属性和关系。
(1)知识图谱是语义Web技术发展的一次扬弃与升华,最早由Google于2012年提出,用以提高搜索引擎的能力。较为出名的知识图谱产品有Google的Knowledge Vault,苹果的Wolfram Alpha,微软的Satori,国内知识图谱产品包括百度知心,搜狗知立方。
(2)实体指的可以是现实世界中的事物,比如人、地名、公司、电话、动物等;关系则用来表达不同实体之间的某种联系。
2、知识图谱数据类型:知识图谱的原始数据类型一般来说有三类(也是互联网上的三类原始数据):
(1)结构化数据(Structed Data),如关系数据库
(2)非结构化数据,如图片、音频、视频
(3)半结构化数据 如XML、JSON、百科
3、存储知识图谱的三种数据类型有两种方式:
(1)第一种方式:是通过RDF(资源描述框架)这样的规范存储格式来进行存储,比较常用的有Jena等。
(2)第二种方式:是使用图数据库来进行存储,常用的有Neo4j等。
4、Jena是一个java 的API,用来支持语义网的有关应用。
5、Neo4j是一个高性能的,NOSQL图形数据库(面向网络的数据库),它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。
6、Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图(网络)中而不是表中存储数据。Neo4j提供了大规模可扩展性,在一台机器上可以处理数十亿节点/关系/属性的图,可以扩展到多台机器并行运行。相对于关系数据库来说,图数据库善于处理大量复杂、互连接、低结构化的数据,这些数据变化迅速,需要频繁的查询——在关系数据库中,这些查询会导致大量的表连接,因此会产生性能上的问题。
(1)关系模型很不适合表达半结构化的数据,网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状。但是,关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。
(2)通过围绕图进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。同时,Neo4j还提供了非常快的图算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是无法实现的。
(3)在该模型中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来说,节点空间是很多节点、关系和属性(键值对)构成的网络。关系是第一级对象,可以由属性来注解,而属性则表明了节点交互的上下文。
(4)关系型数据库的缺点:不能适应数据的扩展,不能对扩展的信息进行检索,对项目设计阶段没有考虑到的同时又是系统关心的信息的存储不能很好的处理。
(二)知识图谱架构
1、知识图谱架构主要分为:逻辑架构和技术架构。
(三)逻辑架构
1、逻辑架构:在逻辑上,我们通常将知识图谱划分为两个层次:数据层和模式层。
(1)模式层:在数据层之上,是知识图谱的核心,存储经过提炼的知识,通过本体库来管理这一层这一层(本体库可以理解为面向对象里的“类”这样一个概念,本体库就储存着知识图谱的类)。
(2)数据层:存储真实的数据。
2、举例说明模式层和数据层:
(1)模式层(对应本体):实体-关系-实体,实体-属性-性值;
(2)数据层(对应实体):比尔盖茨-妻子-梅琳达·盖茨,比尔盖茨-总裁-微软;
(四)技术架构
1、知识图谱构建过程:有一大堆的数据,这些数据可能是结构化的、非结构化的以及半结构化的,然后我们基于这些数据来构建知识图谱,这一步主要是通过一系列自动化或半自动化的技术手段,来从原始数据中提取出知识要素,即一堆实体关系,并将其存入我们的知识库的模式层和数据层。
2、构建知识图谱是一个迭代更新的过程,根据知识获取的逻辑,每一轮迭代包含三个阶段:
(1)信息抽取:从各种类型的数据源中提取出实体、属性以及实体间的相互关系,在此基础上形成本体化的知识表达;
(2)知识融合:在获得新知识之后,需要对其进行整合,以消除矛盾和歧义,比如某些实体可能有多种表达,某个特定称谓也许对应于多个不同的实体等;
(3)知识加工:对于经过融合的新知识,需要经过质量评估之后(部分需要人工参与甄别),才能将合格的部分加入到知识库中,以确保知识库的质量。
(五)知识图谱存储方式
1、知识图谱主要有两种存储方式:
(1)一种是基于RDF的存储;
(2)另一种是基于图数据库的存储。
2、RDF一个重要的设计原则是数据的易发布以及共享,另外,RDF以三元组的方式来存储数据而且不包含属性信息。
3、图数据库主要把重点放在了高效的图查询和搜索上,一般以属性图为基本的表示形式,所以实体和关系可以包含属性。
4、RDF和图数据库的特点:

(五)知识图谱应用(重点)
1、知识图谱应用举例:当用户搜索“刘德华的年龄”时:
(1)首先,搜索引擎需要知道用户输入中的“刘德华”代表的是一个人;
(2)其次,需要同时明白“年龄”一词所代表什么含义;
(3)最后,还需要在后台有丰富的知识图谱数据的支撑,才能回答用户问题。
1、智能搜索——也是知识图谱最成熟的一个场景,自动给出搜索结果和相关人物;
2、构建人物关系图,查看更多维度的数据;
3、反欺诈:这主要有两部分原因,一个是反欺诈的数据来源多样,结构化和非结构化,二是不少欺诈案件会涉及到复杂的关系网络;
4、不一致性验证(类似交叉验证)——关系推理;
5、异常分析(运算量大,一般离线);
6、静态分析:给定一个图形结构(元素信息)和某个时间点,从中去发现一些异常点(比如有异常的子图);
7、动态分析:分析其结构随时间变化的趋势。(假设短时间内知识图谱结构的变化不会太大,如果它的变化很大,就说明可能存在异常,需要进一步的关注。会涉及到时序分析技术和图相似性计算技术)
8、失联客户管理 挖掘出更多的新联系人,提高催收的成功率。
9、融入业务系统,从“人找事”变为“事找人”;
(1)根据我们和客户一起从业务中总结出来的各种风险与营销事件规则,图谱自动将每个客户经理必须关注的风险信息和营销信息融入行内业务系统并推送到相关责任人的手机客户 端。让这些过去需要客户经理和相关数据分析人员辛苦挖掘寻找的信号,成为推动一线业务人员行动的简洁指令与参考,并实时进行监督和反馈。
10、可视化技术:符合人类直觉的可视化展现与交互,帮助终端用户理解复杂关联,通过直观的拖拽操作即可完成高复杂度的分析挖掘。
六、知识图谱技术架构详解
(一)信息抽取
1、信息抽取(infromation extraction)是知识图谱构建的第1步,其中的关键问题是:如何从异构数据源中自动抽取信息得到候选指示单元,是一种自动化地从半结构化和无结构数据中抽取实体、关系以及实体属性等结构化信息的技术。
2、涉及的关键技术包括:实体抽取、关系抽取和属性抽取。
(一)实体抽取
1、实体抽取,也称为命名实体识别(named entity recognition,NER),是指从文本数据集中自动识别出命名实体。
2、实体抽取的研究历史主要是从面向单一领域进行实体抽取,逐步跨步到面向开放域(open domain)的实体抽取。
(二)关系抽取
1、文本语料经过实体抽取之后,得到的是一系列离散的命名实体,为了得到语义信息,还需要从相关语料中提取出实体之间的关联关系,通过关系将实体联系起来,才能够形成网状的知识结构。
注意:关系具有方向性。
2、关系抽取的研究历史:
(1)人工构造语法和语义规则(模式匹配);
(2)统计机器学习方法;
(3)基于特征向量或核函数的有监督学习方法;
(4)研究重点转向半监督和无监督;
(5)开始研究面向开放域的信息抽取方法;
(6)将面向开放域的信息抽取方法和面向封闭领域的传统方法结合。
(三)属性抽取
1、属性抽取的目标是从不同信息源中采集特定实体的属性信息,如针对某个公众人物,可以从网络公开信息中得到其昵称、生日、国籍、教育背景等信息。
2、属性抽取的研究历史:
(1)将实体的属性视作实体与属性值之间的一种名词性关系,将属性抽取任务转化为关系抽取任务;
(2)基于规则和启发式算法,抽取结构化数据;
(3)基于百科类网站的半结构化数据,通过自动抽取生成训练语料,用于训练实体属性标注模型,然后将其应用于对非结构化数据的实体属性抽取;
(4)采用数据挖掘的方法直接从文本中挖掘实体属性和属性值之间的关系模式,据此实现对属性名和属性值在文本中的定位。
(二)知识融合
1、通过信息抽取,从原始的非结构化和半结构化数据中获取到了实体、关系以及实体的属性信息。但是,这些信息还存在很多问题:
(1)信息之间的关系是扁平化的,缺乏层次和逻辑;
(2)还存在大量冗杂和错误的实体、关系和属性信息;
2、知识融合好比拼图,信息抽取的信息好比拼图碎片,散乱无章,甚至还有从其他拼图里跑来的碎片、本身就是用来干扰我们拼图的错误碎片。
3、知识融合涉及的推理:实体对齐(Entity Alignment)和关系对齐/属性对齐(Relation/Property Alignment)。
4、知识融合主要包括两个步骤:实体链接和知识合并。
(一)实体链接
1、实体链接(entity linking)是指对于从文本中抽取得到的实体对象,将其链接到知识库中对应的正确实体对象的操作。
2、基本思想是首先根据给定的实体指称项,从知识库中选出一组候选实体对象,然后通过相似度计算将指称项链接到正确的实体对象。
注意:指称表示某些代词名词在文章中的具体称述对象。
3、实体链接流程:
(1)从文本中通过实体抽取得到实体指称项;
(2)进行实体消歧和实体匹配,判断知识库中的同名实体与之是否代表不同的含义以及知识库中是否存在其他命名实体与之表示相同的含义;
(3)在确认知识库中对应的正确实体对象之后,将该实体指称项链接到知识库中对应实体。
4、实体消歧和实体匹配的含义:
(一)实体消歧
(1)实体消歧是专门用于解决同名实体产生歧义问题的技术,通过实体消歧,就可以根据当前的语境,准确建立实体链接,实体消歧主要采用聚类法(主要根据实体属性)。其实也可以看做基于上下文的分类问题,类似于词性消歧和词义消歧。
注意:聚类法:俗话说:“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。所谓类,通俗地说,就是指相似元素的集合。它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。
(二)实体匹配(实体对齐)
(2)实体匹配(实体对齐)主要用于解决多个指称对应同一实体对象的问题。在一次会话中,多个指称可能指向的是同一实体对象。利用实体匹配技术,可以将这些指称项关联(合并)到正确的实体对象,由于该问题在信息检索和自然语言处理等领域具有特殊的重要性,吸引了大量的研究努力。
(二)知识合并
1、知识链接实现将从半结构化数据和非结构化数据抽取的信息链接到知识库中正确的实体对象上。
2、除了半结构化数据和非结构化数据以外,还有结构化数据即外部知识库和关系数据库需要处理,知识合并就是处理结构化数据:
(1)合并外部知识库,主要处理数据层和模式层的冲突;
(2)合并关系数据库,有RDB2RDF(RDB关系数据库转化为RDF资源描述框架)等方法;
(一)RDB2RDF转化标准
1、RDB2RDF有两个转化标准:direct mapping即直接映射和R2RML;
2、direct mapping,即直接映射规则十分简单:
(1)数据库的表作为本体中的类(Class)。比如我们在mysql中保存的数据,一共有5张表。那么通过映射后,我们的本体就有5个类了,而不是我们自己定义的三个类。
(2)表的列作为属性(Property)。
(3)表的行作为实例/资源。
(4)表的单元格值为字面量
(5)如果单元格所在的列是外键,那么其值为IRI(国际化资源标识符),或者说实体/资源。
注意:国际化资源标识符(Internationalized Resource Identifiers,简称IRI),与其相提并论的是URI(Uniform Resource Identifier,统一资源标志符)。
3、R2RML,可以让用户更灵活的编辑和设置映射规则。可以把它当做一个工具,用的时候再查文档即可,不用把所有的特性和语法都记下来,只需要知道它是什么,能干什么即可。
(三)知识加工
1、通过信息抽取,从原始语料中提取出了实体、关系与属性等知识要素,并且经过知识融合,消除实体指称项与实体对象之间的歧义,得到一系列基本的事实表达。
2、事实本身并不等于知识。要想最终获得结构化,网络化的知识体系,还需要经历知识加工的过程。知识加工主要包括3方面内容:本体构建、知识推理和质量评估。

(一)本体构建
本体概念:本体(Ontology)描述了特定领域(领域本体)或所有领域(通用本体)中的概念以及概念之间的关联关系,并且这些概念和关系是明确的、被共同认可的。通常,本体中主要包括概念、概念的其他称谓(即同义关系)、概念之间的上下位关系、概念的属性关系(分为对象属性和数值属性)、属性的定义域(Domain)和值域(Range),以及在这些内容上的公理、约束等。
注意:本体和实体的区别:知识图谱并不是本体的替代品,相反,它是在本体的基础上进行了丰富和扩充,这种扩充主要体现在实体(Entity)层面,知识图谱则是在本体的基础上,增加了更加丰富的关于实体的信息。
1、本体(ontology):国内一般将其译为“本体”,实质上应该译为“存在”,表示概念集合、概念框架,如“人”、“事”、“物”等。
(1)本体可以采用人工编辑的方式手动构建(借助本体编辑软件),也可以以数据驱动的自动化方式构建本体。
(2)因为人工方式工作量巨大,且很难找到符合要求的专家,因此当前主流的全局本体库产品,都是从一些面向特定领域的现有本体库出发,采用自动构建技术逐步扩展得到的。
2、自动化本体构建过程包含三个阶段:(聚类法)
(1)实体并列关系相似度计算;
(2)实体上下位关系抽取;
注意:实体上下位关系举例:电影-》励志电影-》喜剧之王
(3)本体的生成;
3、举例说明:当知识图谱刚得到“阿里巴巴”、“腾讯”、“手机”这三个实体的时候,可能会认为它们三个之间并没有什么差别,但当它去计算三个实体之间的相似度后,就会发现,阿里巴巴和腾讯之间可能更相似,和手机差别更大一些。
(1)这就是第一步的作用,但这样下来,知识图谱实际上还是没有一个上下层的概念,它还是不知道,阿里巴巴和手机,根本就不隶属于一个类型,无法比较。
(2)因此我们在实体上下位关系抽取这一步,就需要去完成这样的工作,从而生成第三步的本体。
(3)当三步结束后,这个知识图谱可能就会明白,“阿里巴巴和腾讯,其实都是公司这样一个实体下的细分实体。它们和手机并不是一类。”
(二)知识推理
1、完成了本体构建这一步之后,一个知识图谱的雏形便已经搭建好了。但这时,知识图谱之间大多数关系都是残缺的,缺失值非常严重,可以使用知识推理技术,去完成进一步的知识发现。
2、知识推理的对象也并不局限于实体间的关系,也可以是实体的属性值,本体的概念层次关系等。
(1)推理属性值:已知某实体的生日属性,可以通过推理得到该实体的年龄属性;
(2)推理概念:已知(老虎,科,猫科)和(猫科,目,食肉目)可以推出(老虎,目,食肉目);
3、知识推理的的算法主要可以分为3大类,基于逻辑的推理、基于图的推理和基于深度学习的推理。
4、逻辑推理:
(1)演绎推理:自上而下,给定一个或者多个前提的情况下,推断出一个必然成立的结论的过程;
(2)归纳推理:自下而上,即便是最理想的归纳推理,如果作为推理前提的部分已有观察为真,也不能保证结论一定成立。包括溯因推理(Abductive Reasoning)和类比推理(Analogy Reasoning);
(三)质量评估
1、质量评估可以对知识的可信度进行量化,通过舍弃置信度较低的知识来保障知识库的质量。
(四)知识更新
1、从逻辑上看,知识库的更新包括概念层的更新和数据层的更新。
(1)概念层的更新是指新增数据后获得了新的概念,需要自动将新的概念添加到知识库的概念层中;
(2)数据层的更新主要是新增或更新实体、关系、属性值,对数据层进行更新需要考虑数据源的可靠性、数据的一致性(是否存在矛盾或冗杂等问题)等可靠数据源,并选择在各数据源中出现频率高的事实和属性加入知识库。
2、知识图谱的内容更新有两种方式:
(1)全面更新:指以更新后的全部数据为输入,从零开始构建知识图谱。这种方法比较简单,但资源消耗大,而且需要耗费大量人力资源进行系统维护;
(2)增量更新:以当前新增数据为输入,向现有知识图谱中添加新增知识。这种方式资源消耗小,但目前仍需要大量人工干预(定义规则等),因此实施起来十分困难。
七、非结构化数据
1、像图片、声音、视频等等。这类信息我们通常无法直接知道他的内容,数据库也只能将它保存在一个BLOB字段中,对以后检索非常麻烦。一般的做法是,建立一个包含三个字段的表(编号number、内容描述varchar(1024)、内容blob)。引用通过编号,检索通过内容描述。
2、非结构化数据的处理工具:内容管理器。
3、对于非结构化的文本数据,我们抽取的知识包括实体、关系、属性。关系反映实体的外部联系,属性体现实体的内部特征。
4、非结构化数据的抽取问题,研究的人比较多,对于具体的语料环境,采取的技术也不尽相同。
(1)举个例子,比如关系抽取,有的人采用深度学习的方法,将两个实体,他们的关系,以及出处的句子作为训练数据,训练出一个模型,然后对于测试数据进行关系抽取,测试数据需要提供两个实体和出处的句子,模型在训练得到的已知关系中查找,得出测试数据中两个实体之间的关系。这是一种关系抽取的方法。
(2)还有人用句法依存特征,来获取关系,这种方法认为,实体和实体之间的关系可以组成主谓宾结构,在一个句子中,找出主谓关系和动宾关系,其中的谓词和动词如果是一个词,那么这个词就是一个关系。比如说“小明吃了一个苹果”,主谓关系是“小明吃”,动宾关系是“吃苹果”,那么就认为“吃”是一个关系。
八、半结构化数据
1、半结构化数据具有下述特征:
(1)数据结构自描述性。结构与数据相交融,在研究和应用中不需要区分“元数据”和“一般数据”(两者合二为一)。
(2)数据结构描述的复杂性。结构难以纳入现有的各种描述框架,实际应用中不易进行清晰的理解与把握。
(3)数据结构描述的动态性。数据变化通常会导致结构模式变化,整体上具有动态得结构模式。
2、半结构化数据是“无模式”的。更准确地说,其数据是自描述的。XML或JSON可能是最适合存储半结构化的数据了。将不同类别的信息保存在XML的不同的节点中就可以了。
(1)优点:能够灵活的进行扩展,信息进行扩展式只要更改对应的DTD或者XSD就可以了。
(2)缺点:查询效率比较低,要借助XPATH来完成查询统计,随着数据库对XML的支持的提升性能问题有望能够很好的解决。
3、半结构化数据通常是由一个由节点集合和弧段集合组成的具根有向图结构。有向图中节点集合元素分为三类:
(1)叶结点。此类节点没有由其出发的弧段,其语义表示与实际数据相关,相应数据取值类型可以是任意原子类型(数值型或字符串型)。
(2)内部节点。此类节点既有由其出发又有由其终止的弧段。
(3)根节点。此节点唯一,其特征是只作为一个或多个弧段的始点,其语义是整个数据文件。
4、半结构化数据,主要是指那些具有一定的数据结构,但需要进一步提取整理的数据。比如百科的数据,网页中的数据等。对于这类数据,主要采用包装器的方式进行处理。
(1)包装器是一个能够将数据从HTML网页中抽取出来,并且将它们还原为结构化的数据的软件程序。网页数据输入到包装器中,通过包装器的处理,输出为我们需要的信息。
(2)通过包装器归纳这种基于有监督学习的方法,自动的从标注好的训练样例集合中学习数据抽取规则,用于从其他相同标记或相同网页模板抽取目标数据。
八、结构化数据
1、针对结构化数据,通常是关系型数据库的数据,数据结构清晰,把关系型数据库中的数据转换为RDF数据,普遍采用的技术是D2R技术。D2R主要包括D2R Server,D2RQ Engine和D2RRQ Mapping语言。
(1)D2R Server是一个HTTP Server,它的主要功能提供对RDF数据的查询访问接口,以供上层的RDF浏览器、SPARQL查询客户端以及传统的HTML浏览器调用。 (2)D2RQ Engine的主要功能是使用一个可定制的D2RQ Mapping文件将关系型数据库中的数据换成RDF格式。D2RQ engine并没有将关系型数据库发布成真实的RDF数据,而是使用D2RQ Mapping文件将其映射成虚拟的RDF格式。该文件的作用是在访问关系型数据时将RDF数据的查询语言SPARQL转换为RDB数据的查询语言SQL,并将SQL查询结果转换为RDF三元组或者SPARQL查询结果。
(3)D2RQ Engine是建立在Jena(Jena是一个创建Semantic Web应用的Java平台,它提供了基于RDF,SPARQL等的编程环境)的接口之上。D2RQ Mapping语言的主要功能是定义将关系型数据转换成RDF格式的Mapping规则。
九、图数据库
(一)图数据库概念及分类
1、图由两个元素组成:节点和关系:
(1)每个节点代表一个实体(人,地,事物,类别或其他数据);
(2)每个关系代表两个节点的关联方式。
(3)这种通用结构可以对各种场景进行建模-从道路系统到设备网络,到人口的病史或由关系定义的任何其他事物。
2、图数据库(Graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。
(1)图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(CRUD)操作。
3、Neo4J就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。
4、JanusGraph是一个Linux基金会下的开源分布式图数据库 。
5、阿里云图数据库GraphDB;
6、HugeGraph百度开源图数据库;
(二)标记属性图模型
(一)节点
1、节点是主要的数据元素
2、节点通过关系连接到其他节点
3、节点可以具有一个或多个属性(即,存储为键/值对的属性)
4、节点有一个或多个标签,用于描述其在图表中的作用
(1)示例:人员节点与Car节点
(二)关系
1、关系连接两个节点
2、关系是方向性的
3、节点可以有多个甚至递归的关系
4、关系可以有一个或多个属性(即存储为键/值对的属性)
(三)属性
1、属性是命名值,其中名称(或键)是字符串
2、属性可以被索引和约束
3、可以从多个属性创建复合索引
(四)标签
1、标签用于将节点分组
2、一个节点可以具有多个标签
3、对标签进行索引以加速在图中查找节点
4、本机标签索引针对速度进行了优化
(三)NOSQL
1、NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
(1)NoSQL用于超大规模数据的存储。
2、今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL 数据库的发展却能很好的处理这些大的数据。
(一)NoSQL的优点和缺点
1、NoSQL的优点:
(1)高可扩展性
(2)分布式计算
(3)低成本
(4)架构的灵活性,半结构化数据
(5)没有复杂的关系
2、NoSQL的缺点:
(1)没有标准化
(2)有限的查询功能(到目前为止)
(3)最终一致是不直观的程序
(二)横向扩展和纵向扩展
1、横向扩展:也叫水平扩展,用更多的节点支撑更大量的请求。比如:扩展服务器的数量进行高并发的处理(增强处理业务的能力)。
2、纵向扩展:又叫垂直扩展,扩展(增强)一个点的能力支撑更大的请求。比如:是增加单机的处理能力,一般增加cpu的处理能力。
(三)CAP定理
1、CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
(1)一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
(2)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
(3)分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
十、Hbase
(一)Hbase概念
1、HBase是一个开源的非关系型分布式数据库,主要用来存储非结构化和半结构化的松散数据。它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。
(二)Hbase与关系型数据库对比
1、数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
2、数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
3、存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
4、数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。
5、数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
6、可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。

(三)Hadoop
1、Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop的框架最核心的设计就是:HDFS和MapReduce。
(1)HDFS为海量的数据提供了存储;
(2)MapReduce则为海量的数据提供了计算。
2、Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
(四)Hadoop已经有了HDFS和MapReduce,为什么需要HBase?
1、Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。
2、HDFS面向批量访问模式,不是随机访问模式。
3、传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。
4、传统关系数据库在数据结构变化时一般需要停机维护;
5、空列浪费存储空间。