开始知识图谱从0到-1,用的书是《知识图谱方法、实践与应用》,做些阅读笔记,如有错误内容,望各位指正。
推理的方法的分类和具体方式如下图所示,其中非逻辑推理的过程相对比较模型,而逻辑推理的透明性与定义比较清晰,所以主要围绕逻辑推理展开。
面向知识图谱的推理:主要围绕关系的推理展开,即基于图谱中已有的显性事实或关系推断出未知的事实或关系。从而辅助推理出新的事实、关系、公理以及规则等
一个丰富、完整的知识图谱的形成会经历很多阶段,从知识图谱的生命周期来看,不同阶段都涉及不同的推理任务,其中包括知识图谱补全、不一致性检测、查询扩展等。
知识图谱的推理的主要技术手段可以分为两大类:
演绎推理的过程需要明确定义的先验信息,所以基于演绎的知识图谱多围绕本体。本体的一般定义为概念化的显示规约,它给不同领域提供共享的词汇。因为共享的词汇需要赋予一定的语义,所以基于演绎的推理一般都在具有逻辑描述的基础的知识图谱上展开。
目前OWL是知识图谱语言中最规范、最严谨、表达能力最强的语言。基于RDF语法,使得表示出来的文档具有语义理解的结构基础。OWL在推理问题中,有以下的一些推理问题:
基于表运算(Tableaux)的本体推理方法是描述逻辑知识库一致性检测的最常用的方法。基于表运算的推理通过一系列规则构建Abox,已检测可满足性,或者检测某一实例是否存在某概念。
Tableaux运算规则(以主要DL算子举例)如下:
初始情况下, ∅ \empty ∅是原始的Abox,迭代运用如下规则:
这里对第一个解释一下,其他的类似。第一个是说如果 C C C 和 D ( x ) D(x) D(x) 的合取是 ∅ \empty ∅,同时 C ( x ) C(x) C(x) 和 D ( x ) D(x) D(x) 却不在 ∅ \empty ∅里,那么也就是说 ∅ \empty ∅有可能只包含了部分 C C C,而 C ( x ) C(x) C(x)不在里面,那么我们就把它们添加到 ∅ \empty ∅里。
下面我举个例子:
现在给定如下本体,检测实例Allen 是否在 Woman中? 即:
M a n ⊓ W o m a n ⊑ ⊥ Man⊓Woman⊑⊥ Man⊓Woman⊑⊥
M a n ( A l l e n ) Man(Allen) Man(Allen)
检测 W o m a n ( A l l e n ) ? Woman(Allen)? Woman(Allen)?其解决流程为:
M a n ( A l l e n ) W o m a n ( A l l e n ) Man(Allen) Woman(Allen) Man(Allen)Woman(Allen)
初始 A b o x Abox Abox,记为 ∅ ∅ ∅,其内包含 M a n ( A l l e n ) W o m a n ( A l l e n ) Man(Allen) Woman(Allen) Man(Allen)Woman(Allen)。
运用 ⊓ + − ⊓^+− ⊓+−规则,得到 M a n ⊓ W o m e n ( A l l e n ) Man⊓Women(Allen) Man⊓Women(Allen)。将其加入到 ∅ ∅ ∅中,现在的 ∅ ∅ ∅为 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ⊓ W o m e n ( A l l e n ) Man(Allen)\ \ \ Woman(Allen) \ \ \ Man⊓Women(Allen) Man(Allen) Woman(Allen) Man⊓Women(Allen)
运用 ⊑ − ⊑- ⊑− 规则到 M a n ⊓ W o m e n ( A l l e n ) Man⊓Women(Allen) Man⊓Women(Allen)与 M a n ⊓ W o m a n ⊑ ⊥ Man⊓Woman⊑⊥ Man⊓Woman⊑⊥上,得到 ⊥ ( A l e e n ) ⊥(Aleen) ⊥(Aleen)。此时的 ∅ ∅ ∅包含 M a n ( A l l e n ) W o m a n ( A l l e n ) M a n ⊓ W o m e n ( A l l e n ) ⊥ ( A l e e n ) Man(Allen)\ \ \ Woman(Allen)\ \ \ Man⊓Women(Allen) \ \ \ ⊥(Aleen) Man(Allen) Woman(Allen) Man⊓Women(Allen) ⊥(Aleen)
运用 ⊥ − ⊥− ⊥−规则,拒绝现在的 ∅ ∅ ∅。
得出Allen 不在Woman的结论。如果 W o m a n ( A l l e n ) Woman(Allen) Woman(Allen)在初始情况已存在于原始本体,那么推导出该本体不可满足!
产生式系统是一种前向推理系统,可以按照一定机制执行规则并达到某些目标,与一阶逻辑类似,也有区别。产生式系统可以应用于自动规划和专家系统等领域。一个产生式系统由事实集合、产生式集合和推理引擎三部分组成。
事实集合:事实可描述对象,形如(type attr_1:val_1 attr_2:val_2…attr_n:val_n),其中的type,attr_i,val_i均为原子(常量)。
产生式集合:有一系列的产生式组成,形如: I F c o n d i t i o n s T H E N a c t i o n s IF \ \ \ conditions\ \ \ THEN actions IF conditions THENactions 其中conditions是条件组成的集合(称为LHS),actions是由动作组成的序列(称为RHS)
LHS的形式如下:
RHS的动作种类如下三种:
例如: I F ( S t u d e n t n a m e : ) T h e n A D D ( P e r s o n n a m e : ) IF (Student \ \ \ name:) \ \ Then\ \ ADD(Person \ \ name:) IF(Student name:) Then ADD(Person name:)表示如果有一个学生名为 ? x ?x ?x ,则向事实集加入一个事实,表示有一个名为 ? x ?x ?x 的人
s
下图是一个匹配规则的过程,规则为: ( t y p e x , y ) , ( s u b C l a s s o f y z ) → ( t y p e x z ) (type\ x,y),(subClassof \ y \ z) \rightarrow (type \ x \ z) (type x,y),(subClassof y z)→(type x z)
基于规则的推理具有精确且可解释的特性,规则在学术界和工业界的推理场景都有重要应用。其中规则是规则推理的核心,所以规则获取是一个重要的任务,
规则一般包含两个部分,分别为规则头(head)和规则主体(body),一般形式为: r u l e : h e a d ← b o d y rule:head \leftarrow body rule:head←body
在规则主体中,不同的原子是通过逻辑合取组合在一起的,且规则主体中的原子可以以肯定或者否定的形式出现,例如 i s F a t h e r O f ( X , Z ) ← h a s W i f e ( X , Y ) ∧ h a s C h i l d ( Y , Z ) ∧ ¬ u s e d D i v o c i e d ( X ) ∧ ¬ u s e d D i v o v i e d ( Y ) isFatherOf(X,Z)\leftarrow hasWife(X,Y)\wedge hasChild(Y,Z) \wedge \neg usedDivocied(X) \wedge \neg usedDivovied(Y) isFatherOf(X,Z)←hasWife(X,Y)∧hasChild(Y,Z)∧¬usedDivocied(X)∧¬usedDivovied(Y)
规则的评估指标 | ||
---|---|---|
支持度(support) | support(rule) | 满足规则主体和规则头的实例个数 |
置信度(confidence) | confidence(rule) = s u p p o r t ( r u l e ) # b o d y ( r u l e ) \frac{support(rule)}{\#body(rule)} #body(rule)support(rule) | 置信度越高,规则质量也越高 |
基于部分完全假设的置信度(PCA confidence) | confidence(rule) = s u p p o r t ( r u l e ) # b o d y ( r u l e ) ∧ r 0 ( x , y ′ ) \frac{support(rule)}{\#body(rule) \wedge r_0(x,y^{'})} #body(rule)∧r0(x,y′)support(rule) | 置信度越高,规则质量也越高 |
规则头覆盖度(head converage) | HC(rule) = s u p p o r t ( r u l e ) # h e a d ( r u l e ) \frac{support(rule)}{\#head(rule)} #head(rule)support(rule) | 规则的头覆盖度越高,规则质量也越高 |