RDF(resource description framework)和OWL(web ontology language),基于使用本体模式来形式化的表达数据中的隐含语义的目的。知识图谱是基于语义网的相关研究,是对语义网标准与技术的一次扬弃与升华。
知识图谱2015年,goole为解决收索引擎的能力,增强用户的搜索质量与体验,正是提出知识图谱。目前已广泛用于智能搜索,智能问答,个性化推荐等领域。
定义
狭义的讲(维基百科),知识图谱是google用于增强其搜索功能的知识库。本质上讲,知识图谱是一种揭示实体之间关系的语义网络,对现实世界的事物以及相互关系进行形式化的描述。目前的知识图谱广泛的指各大规模的知识库。
表示
三元组: G = ( E , R , S ) G=(E, R, S) G=(E,R,S)
三元组的基本形式
实体:知识图谱中的最基本元素
关系:连接两个实体,刻画它们之间的联系
概念:主要指集合、类别、对象类型、事物的种类。例如:人物、地理等
属性:对象可能具有的属性、特征、特点、参数等。例如:国籍、姓名、生日等。
属性值:对象属性的值。
每个实体(概念的外延)可用全局唯一确定的ID来标识,属性对(attribute-value par, AVP)用来刻画实体的内在特性。
分类
知识图谱架构
逻辑结构
体系结构
知识图谱的体系结构指构建模式。如下图所示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200319174739520.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ndWFuZ2NodW4xOTkz,size_16,color_FFFFFF,t_70)
Freebase:Metaweb(创建)->Google(收购)。Freebase在人工构建的基础上,融合了维基百科、IMDB、Flick等语料库。截止2014年底,Freebase包含6800万实体,10亿条关系信息,24亿条事实三元组信息。2015年6月,Freebase整体移入WikiData。
Wikidata:维基媒体基金会主持的一个自由的协作式多语言辅助知识库。Wikidata中的数据主要以文档的形式进行存储,目前已包含了超过1 700万个文档。其中的每个文档都有一个主题或一个管理页面,且被唯一的数字标识。
DBpedia:DBpedia[18]是由德国莱比锡大学和曼海姆大学的科研人员创建的多语言综合型知识库,在LOD项目中处于最核心的地位。截止至2014年年底,DBpedia中的事实三元组 数量已经超过了30亿条。
YAGO:YAGO[19]是由德国马普所(max planck institute,MPI)的科研人员构建的综合型知识库。YAGO整合了维基百科、WordNet以及GeoNames等数据源。2012年发布的第二版本,包含了超过1000万的实体以及超过1.2亿的事实。
IMDB:关于电影、演员、电视节目的知识库。截止到2012年2月,IMDB共收集了2 132 383部作品资料和4 530 159名人物资料。
MusicBrainz:一个结构化的音乐维基百科,致力于收藏所有的音乐元数据,并向大众用户开放。
ConceptNet:语义知识网络。与链路数据和Google知识图谱相比,ConceptNet更加侧重与词与词的关系。ConceptNet完全免费开放,并支持多种语言。
知识抽取主要面向开放的链接数据,通过自动化技术抽取出可用的知识单元,知识单元包括:实体、关系、属性。
实体抽取(NER)
关系抽取
目标在于解决实体间语义链接的问题,早期的关系抽取主要是通过构造人工语义规则和模板,发展至今,实体间的关系模型成为主流抽取方法。
基于模板:二元开放式 vs n元开放式
基于监督学习
基于监督学习的关系抽取方法核心在于将关系抽取转化为分类问题。在大量标注数据的基础上,训练监督模型进行关系抽取,一般步骤如下:a. 预定义关系类型, b. 人工标注数据 c. 设计关系识别所需要的特征 d. 选择分类模型 e. 训练模型
传统的基于监督学习的关系抽取严重依赖与特征工程,而深度学习的方法自动学习特征,不再需要人工构建各种特征,大大简化了人工操作。
基于深度学习流水线的关系抽取方法
CR-CNN模型、Attention CNNs模型、Attention BLSTM模型 …
基于深度学习的联合关系抽取方法
基于若监督学习的关系抽取方法
监督学习需要大量的标注预料,当预料不足时,弱监督学习可以只利用少量标注数据进行模型学习。
远程监督方法
远程监督方法通过讲知识图谱与非机构化文本对齐的方式自动构建大量的训练预料,减少模型对人工标注训练数据的依赖。远程监督的基本假设是如果两个实体在知识图谱中存在某种关系,则包含两个实体的句子均表达了这种关系。例如:在某知识图谱中存在实体关系创始人(乔布斯,苹果公司),那么,包含实体乔布斯和苹果公司的句子“乔布斯是苹果公司的联合创始人和CEO” 可以被用作关系创始人的训练正例。远程监督的一般步骤为:
Bootstrapping方法
Boostrapping方法利用少量的实例作为初始种子集合,然后在种子集合上学习关系抽取的模板,再利用模板抽取更多的实例,加入种子集合中,通过不断的迭代,Boostrapping可以从文本中抽取关系的大量实例。
属性抽取
针对实体而言,通过属性形成对实体的完整刻画。实体的属性抽取可以转化为关系抽取问题。
事件抽取
事件抽取指从自然语言中抽取出用户感兴趣的事件信息,并以结构化的形式呈现出来。事件指发生的事件,通常具有时间、地点、参与者等属性。事件的发生可能因为一个动作的产生或者系统状态的改变。一般地,事件抽取任务包含的子任务有:
同样的,事件抽取可分为以下两类:
基于流水线的事件抽取
流水线方法将事件抽取任务划分为一系列基于分类的子任务,每个子任务由一个机器学习器负责实施。
联合抽取
流水线方法存在误差传递问题,导致误差不断积累,事件抽取性能急剧衰减。在联合抽取方法中,事件的所有相关信息会通过一个模型同时抽取出来。
知识表示主要有两种:基于离散符号的知识表示和基于连续向量的知识表示方法
基于离散符号化的表示方法可以很有效的将数据结构化,节点对应着三元组的头实体和尾实体,边对应着三元组的关系。但是它并不能在计算机中表达相应的语义层面的信息,也不能进行语义计算。
基于离散符号的知识表示
随着语义网的发展,早期web的标准语言HTML和XML无法适应语义网对知识表示的要求,W3C提出了新的标准语言:RDF、RDFS和OWL
RDF
知识总是以三元组的形式出现,表示为:(subject,predicate,object)。例如:“IBM邀请Jeff Pan作为讲者,演讲主题是知识图谱”,可以以下RDF三元组:(IBM-Talk,speaker,Jeff),(IBM-Talk,theme,KG)。
RDF中的主语是一个个体,个体是类的实例。谓语是一个属性。宾语可以是一个个体,如(IBM-Talk,speaker,Jeff),也可以是一个数据类型的实例,例如:(IBM-Talk,TalkDate,“05-10-2012”^xsd:date)
RDFS
RDFS在RDF的基础上定义了类和属性的模式,RDF Schema(简称 RDFS)提供了对类和属性的简单描述。
RDFS提供了最基本的对类和属性的描述原语:
OWL
相对于RDF和RDFS,OWL能够表达更丰富的信息,应用与更加复杂的场景。OWL的常见词汇有:
等价性声明:声明两个类、属性、实例是等价的。例如:exp:运动员 owl:equivalentClass exp:体育选手;exp:获得 owl:equivalentProperty exp:取得;exp:运动员 A owl:sameIndividualAs exp:小明
属性传递声明:声明一个属性是传递关系,例如:exp:ancestor rdf:type owl:TransitiveProperty 指的是exp:ancestor是一个传递关系。
属性互逆声明:声明两个属性有互逆的关系,owl:inverseOf
属性的函数性声明:声明一个属性是函数。例如:exp:hasMother rdf:type owl:FunctionalProperty 指的是exp:hasmother是一个函数,即一个生物只有一个母亲。
属性的对称性声明:声明一个属性是对称的。owl:SymmetricProperty
属性的全称限定声明:声明一个属性是全称限定的。例如:
exp:Person owl:allValuesFrom exp:Woman
exp:Person owl:onProperty exp:hasMother
上诉说明exp:haMother在主语exp:Person类的条件下,宾语的取值只能来自于exp:Women类。
属性的存在限定声明。例如:
exp:SemanticWebPaper owl:someValuesFrom exp:AAAI
exp:SemanticWebPaper owl:onProperty exp:publishedIn
上诉表明,exp:publishedIn的取值部分来自于exp:AAAI
属性的基数限定声明:声明一个属性的基数,例如:
exp:Person owl:cardinality “1”^^xsd:integer
exp:Person owl:onProperty exp:hasMother
上述表明,exp:hasMother在主语属于exp:person类的条件下,宾语的取值只能有一个,“1”的数据类型被声明为xsd:integer。
相交的类声明:声明一个类是等价与两个类相交。例如:
exp:Mother owl:intersectionOf _tmp
_tmp rdf:type rdfs:Collection
_tmp rdfs:member exp:Person
_tmp:rdfs:member exp:HasChildren
上述说明,exp:Mother是exp:Person和exp:HasChildren两个类的交集。
连续向量的表示方法
KG embedding主要是将KG中实体与关系隐射到一个低维的向量空间。KG embedding也是通过机器学习的方法对模型进行学习,与one-hot、word2vec的最大区别在于,它需要进行监督学习。
转移距离模型(Translation Distance Model)
transD模型的主要思想是讲衡量向量化的知识图谱中三元组的合理性问题,转化为衡量头实体和尾实体的距离问题。核心在于如何设计得分函数,得分函数通常被设计成利用关系把头实体转移到尾实体的合理性的函数。
TransE受到词向量中平移不变性的启发,把实体和关系表示成向量,对某一个具体的关系(h, r, t),把关系的向量表示解释成头实体的向量到尾实体的向量的转移向量,即满足关系 h + r ≈ t h+r \approx t h+r≈t关系。
v e c ( R o m e ) + v e c ( i s − c a p i t a l − o f ) ≈ v e c ( I t a l y ) vec(Rome)+vec(is-capital-of) \approx vec(Italy) vec(Rome)+vec(is−capital−of)≈vec(Italy)
语义匹配模型(Semantic Matching Models)
语义匹配模型更加注重挖掘向量化后的实体和关系的潜在语义,该方向上的模型主要是RESCAL以及它的延伸模型。
在RESCAL模型中,知识库中的三元组(h,r,t)集合被表示为一个三阶张量,该张量可以分解为一个核心张量和一个因子矩阵,核心张量中的每个二维矩阵切片代表一个关系,因子矩阵中的每一行代表一个实体。三阶张量中的值表示对应三元组成立的概率,如果概率大于某个阈值,则三元组成立,否则不成立。其得分函数如下:
f r ( h , t ) = h T M r t = ∑ i = 0 d − 1 ∑ j = 0 d − 1 [ M r ] i j ⋅ [ h ] i ⋅ [ r ] j f_{r}(h,t)=h^{T}M_{r}t=\sum_{i=0}^{d-1}\sum_{j=0}^{d-1}[M_{r}]_{ij}\cdot[h]_{i}\cdot[r]_{j} fr(h,t)=hTMrt=i=0∑d−1j=0∑d−1[Mr]ij⋅[h]i⋅[r]j
考虑附加信息的模型
除了仅仅依靠知识图谱中的三元组构造KG embedding的模型,还有一些模型考虑额外的附加信息进行提升。
通常考虑的附加信息有:实体类型、关系路劲、文本描述、逻辑规则等。
知识图谱中的知识来源广泛,存在着数据质量良莠不齐、来源于不同数据源的知识重复、知识间的关联不够明确等问题。
知识融合是高层次的知识组织,使来自不同知识源的知识在同一框架规范下进行异构数据整合、消歧、加工、推理验证、更新等步骤,形成高质量的知识库。
实体对齐
实体对齐又称为实体匹配,主要目的在于消除异构数据中实体冲突、指向不明等不一致性问题。
实体对齐主要面临以下几个挑战:
知识库实体对齐的主要流程如下:
知识融合主要分为:本体对齐、实体对齐。两者的基本流程大致相似,如下所示:
数据预处理
数据预处理阶段,原始数据的质量会直接影响到最终链接的结果,不同的数据集对同一实体的描述方式往往是不相同的,对这些数据进行归一化是提高后续链接精确度的重要步骤
分块
分块是从给定的知识库中的所有实体对中,选出潜在匹配的记录对作为候选项,尽可能的缩小候选项,减少数据量、
Hash函数的分块
给定记录 x x x, h a s h ( x ) = h i hash(x)=h_{i} hash(x)=hi 则x映射到关键字 h i h_{i} hi 绑定的块 C i C_{i} Ci 上。
近邻分块
canopy聚类、排序邻居算法、Red-Blue Set Cover等
负载均衡
负载均衡 (Load Balance)来保证所有块中的实体数目相当,从而保证分块对性能的提升程度。最简单的方法是多次Map-Reduce操作。
记录链接
假定两个实体 X = { x 0 , x 1 , . . . , x n } , Y = { y 0 , y 1 , . . . , y n } X=\{x_{0}, x_{1},...,x_{n}\} ,Y=\{y_{0}, y_{1},...,y_{n}\} X={x0,x1,...,xn},Y={y0,y1,...,yn} , x i x_{i} xi是实体X第 i i i个属性的值。
属性相似度
综合单个属性相似度得到属性相似度向量:
[ s i m ( x 1 , y 1 ) , s i m ( x 2 , y 2 ) , . . . , s i m ( x n , y n ) ] [sim(x_{1},y_{1}),sim(x_{2},y_{2}),...,sim(x_{n},y_{n})] [sim(x1,y1),sim(x2,y2),...,sim(xn,yn)]
属性相似度的计算方式通常有以下几类:
实体相似度
根据属性相似度向量得到一个实体的相似度。计算实体相似度方法主要有以下三大类。
聚合
加权平均
对相似度向量各个分量加权求和,得到最终的实体相似度:
S = w 1 ∗ s i m ( x 1 , y 1 ) + . . . + w n ∗ s i m ( x n , y n ) S = w_{1}\ast sim(x_{1}, y_{1}) +...+w_{n} \ast sim(x_{n}, y_{n}) S=w1∗sim(x1,y1)+...+wn∗sim(xn,yn)
规则
可以为每个相似度分量设置一个阈值,若果超过改阈值则将两实体融合。
s i m ( x 1 , y 1 ) > T 1 a n d ( o r ) . . . s i m ( x n , y n ) > T n sim(x_{1}, y_{1}) >T_{1} and(or) ... sim(x_{n}, y_{n}) >T_{n} sim(x1,y1)>T1and(or)...sim(xn,yn)>Tn
分类器
常用的分类模型,但存在最大问题在于如何生成训练集合。
聚类
表示学习:知识嵌入
将知识图谱中的实体和关系都隐射到低维向量空间,直接用距离公式来计算各个实体间的相似度。这种方法不依赖任何的问题信息,直接提取数据的深度特征。
质量评估
对知识库的质量评估通常和实体对齐任务一起进行,其意义在于对知识的可信度量化,保留置信度较高的,舍弃置信度较低的,确保知识的质量。
知识更新
随着知识储备和业务需求的不断递增,知识图谱的内容需要与时俱进,不断迭代更新,扩展现有的知识,增加新的知识。
根据知识图谱的逻辑结构,更新主要包括:模式(本体)层的更新和数据层的更新
模式层的更新
本体元素的更新,包括:概念的增、删、改,概念属性的更新以及概念的上下位关系的更新等。
数据层的更新
对于推理规则的挖掘,主要还是依赖于实体及实体关系间的丰富同现情况,知识推理的对象可以是实体、关系、属性、本体库中的概念的层次结构等。
基于逻辑的推理
基于图的推理
利用关系路劲中的蕴含信息,通过图中两个实体间的多步路劲来预测他们之间的语义关系。
时序预测推理
基于强化学习的知识图谱推理
开源的知识推理工具
知识图谱为互联网上海量、异构、动态的大数据表达、组织、管理以及利用提供了一种更为有效的方式,使得网络的智能化水平更高,更加接近人类的认知思维。
基于知识图谱的智能搜索是一种基于长尾的搜索,并将结果以知识卡片的形式展示出来(参考google)。查询请求主要经过两个阶段:查询式语义理解和知识检索。
语义理解
语义分析主要包含以下阶段。
知识检索
经过查询式分析后的标准查询语句进入知识库检索引擎,引擎会在知识库中检索相应的实体及其相关属性、关系,通过对知识库的深层挖掘和提炼后,引擎给出具有重要性排序的知识体系。
常见的基于知识图谱的搜索引擎
问答系统是信息检索系统的一种高级形式,能 够以准确简洁的自然语言为用户提供问题的解答。之所以说问答是一种高级形式的检索,是因为在问答系统中同样有查询式理解与知识检索这两个重要的过程,并且与智能搜索中相应过程中的相关细节是完全一致的。多数问答系统更倾向于将给定的问 题分解为多个小的问题,然后逐一去知识库中抽取 匹配的答案,并自动检测其在时间与空间上的吻合 度等,最后将答案进行合并,以直观的方式展现给用户。
目前,常见基于知识图谱的问答平台有