赞
踩
由于工作原因,需要在系统里建立图谱推理功能,因此简单学习了浙江大学 陈华钧教授 知识图谱导论课程课件,这里记录下学习笔记。
• 基于描述逻辑的推理(如DL-based)
• 基于图结构和统计规则挖掘的推理(如: PRA、 AMIE)
• 基于知识图谱表⽰学习的推理(如: TransE)
• 基于概率逻辑的⽅法(如: Statistical Relational Learning)
基于符号逻辑的推理——本体推理
基于图结构和统计规则挖掘的推理
主要方法:
• 基于路径排序学习⽅法(PRA, Path ranking Algorithm)
• 基于关联规则挖掘⽅法(AMIE)
基于知识图谱表示学习的关系推理
基于概率逻辑的⽅法——Statistical Relational Learning
概率逻辑学习有时也叫Relational Machine Learning (RML),关注关系的不确定性和复杂性。
通常使用Bayesian networks or Markov networks
图谱中基于RDF来作为资源描述语言,RDF是Resource Description Framework的简称。
但是RDF表示关系层次受限,因此有了RDFS,在RDF的基础上,新增了Class, subClassOf, type, Property, subPropertyOf, Domain, Range
词汇,可以更好的表述相关关系。
基于RDFS,可以做一些简单的推理
OWL在RDFS的基础上,进一步扩展了一些复杂类型、约束:
因此,我们也叫OWL为本体语言:
OWL的描述逻辑系统:
描述逻辑与OWL的对应:
推理就是通过各种方法获取新的知识或者结论,这些知识和结论满足语义。
OWL本体推理
例子:
典型的推理算法: Tableaux,适用于检查某一本体概念的可满足性,以及实例检测,基本思想是通过一系列规则构建Abox,以检测可满足性,或者检测某一实例是否存在于某概念,基本思想类似于一阶逻辑的归结反驳。
本体推理的局限:
因此,引入规则推理
Datalog的语法:
Datalog程序是规则的集合:
- has_child(X, Y) : −has_son(X, Y).
- has_child(Alice, Bob) : −
Datalog 推理举例:
相关工具:
产生式系统,一种前向推理系统,可以按照一定机制执行规则从而达到某些目标,与一阶逻辑类似,也有区别,可以应用来做自动规划和专家系统。
产生式系统的组成:
产生式表示:
IF conditions THEN actions
LHS,是条件的集合,各条件是且(AND)的关系,当所有条件均被满足,则该规则触发。
条件形如(type attr1: spec1 attr2:spec2)条件的形式:
RHS,是执行动作(action)的序列,执行时依次运行。动作的种类有ADD pattern,Remove i,Modify i,可以理解为对WME(Working Memory)的CUD;
产生式举例:
- IF (Student name: x)
- Then ADD (Person name: x)
也可以写作:
(Student name: x) ⇒ ADD (Person name: x)
推理引擎
➤ 控制系统的执行:
产生式系统=事实集+产生式集合+推理引擎
产生式系统执行流程
模式匹配——RETE算法
相关工具介绍
- Model m = ModelFactory.createDefaultModel();
- Reasoner reasoner = new
- GenericRuleReasoner(Rule.rulesFromURL("file:rule.txt"));
- InfModel inf = ModelFactory.createInfModel(reasoner, m)
➤ 将连接两个实体的路径作为特征来预测其间可能存在的关系
• 通用关系学习框架 (generic relational learning framework)
路径排序算法 – Path Ranking Algorithm (PRA)
知识图谱嵌⼊模型: TransE
TransE(Translating Embeddings for Modeling Multi-relational Data. NIPS 3013)
⽬标函数:
损失函数:
知识图谱嵌⼊模型: 预测问题
NO BB, show code:
- Model myMod = ModelFactory.createDefaultModel();
- String finance = “http://www.example.org/kse/finance#”;
-
- // 实体
- Resource shb = myMod.createResource(finance + "孙宏斌");
- Resource rczg = myMod.createResource(finance + "融创中国");
-
-
- // 关系
-
- Property control = myMod.createProperty(finance + "执掌");
-
- // 加入三元组
- myMod.add(shb, control, rczg);
-
上图所示的图谱,包含如下的三元组:
- finance :孙宏斌 finance :control finance :融创中国
- finance :贾跃亭 finance :control finance :乐视网
- finance :融创中国 rdf:type finance :地产公司
- finance :地产公司 rdfs:subclassOf finance:公司
- finance:公司 rdfs:subclassOf finance:法人实体
- finance:孙宏斌 rdf:type finance:公司
- finance:孙宏斌 rdf:type finance:人
- finance :人 owl:disjointWith finance:公司
我们可以依次加入,代码略。
jena推理使用的是InfModel,可以基于Model构造,实际上在原来的Model之上加了个RDFS推理机
InfModel inf_rdfs = ModelFactory.createRDFSModel(myMod);
• 上下位推理
通过listStatements来获取是否有满足条件的三元组,从而实现判断,subClassOf是RDFS里的vob,因此使用RDFS.subClassOf。
- public static void subClassOf(Model m, Resource s, Resource o) {
- for (StmtIterator i = m.listStatements(s, RDFS.subClassOf, o); i.hasNext(); ) {
- Statement stmt = i.nextStatement();
- System.out.println(" yes! " );
- break;
- }
- }
-
- subClassOf(inf_rdfs, myMod.getResource(finance+"地产公司"),myMod.getResource(finance+”法人实体"));
• 针对类别的推理,OWL推理机可以针对个体类别做出完备推理,即补充完整该个体的所有类别;在查询的时候,可以直接打印出所有类别!
首先构建owl推理机:
- Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
- InfModel inf_owl = ModelFactory.createInfModel(reasoner, myMod);
然后执行类别推理
- public static void printStatements(Model m, Resource s, Property p, Resource o) {
- for (StmtIterator i = m.listStatements(s,p,o); i.hasNext(); ) {
- Statement stmt = i.nextStatement();
- System.out.println(" - " + PrintUtil.print(stmt));
- }
- }
- printStatements(inf_owl, rczg, RDF.type, null);
• 不一致检测, jena的另一个常用推理就是检验data的不一致。
- Model data = FileManager.get().loadModel(fname);
- Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
- InfModel inf_owl = ModelFactory.createInfModel(reasoner, myMod);
- ValidityReport validity = inf_owl.validate();
- if (validity.isValid()) {
- System.out.println(“没有不一致");
- } else {
- System.out.println(“存在不一致,如下: ");
- for (Iterator i = validity.getReports(); i.hasNext(); ) {
- System.out.println(" - " + i.next());
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。