资源简介

最近几年,例如YAGO和DBpedia等大规模知识库发展有了很大的进步。知识库提供了大量的不同种类的实体信息,如人、国家、河流、城市大学等等,同时知识库包含了大量的在实体(entity)间的关系既事实(fact)。当今的知识库包含的数据量是巨大的通常有百万个实体和上亿个描述实体间关系的事实数据。 虽然目前的知识库存在大量的实体和事实数据,但是这样大规模的数据仍然不完整。目前构建知识库的方法主要有两种,一种是从大量的文本中抽取事实但这种方法必然会带来大量的噪声数据,第二是人工扩展,但这样的方法对于时间的开销是极大的。如果确保一个知识库是完整的则必须花费很大的努力来抽取大量的事实,并检查事实的正确性,因为只有正确的事实加入到知识库中才是有意义的。同时知识库的本身由于有足够的信息可以推理出更多的新的事实。例如有这样一个例子,一个知识库包含一组事实是孩子c有一个妈妈m,这样可以推理得出孩子妈妈的丈夫f很可能是孩子的父亲。该逻辑规则形式化的描述如下: motherof(m,c)∧marriedTo(m,f)⟹fatherof(f,c) 挖掘这种规则可帮助做一下四种事情:1、利用这种规则来推理出新的事实,而这些被挖掘出的新的事实可以使知识库更完整。2、这些规则可以检测出知识库潜在的错误例如一个陈述是一个与一个男孩无关的人是这个男孩的父亲,这样的陈述很可能是错误的。3、有很多推理工具依赖其他工具提供规则,所以这些被挖掘出来的规则可以用于推理。4、这些规则描述一个普遍的规律,这些规律可以帮我我们理解分析知识库中的数据,如找到一些国家通常与说同一种语言的国家交易。或结婚是一个对称关系,或使用同一个乐器的音乐家通常互相影响等等。 AMIE的目标是从RDF格式的知识库中挖掘如上所述的逻辑规则,在语义网(Semantic Web)中存在大量的RDF知识库如YAGO、Freebase和DBpedia等。这些知识库使用RDF三元组(S,P,O)提供二元关系(binary relation)的描述。由于知识库一般只包含正例而(S,P,O)没有反例(S,¬P,O),所以RDF这样的知识库中仅能通过正例来推理。进一步来说在RDF知识库上的操作是基于开放世界假设(OWA)的。在开放世界假设下,一个事实没有在知识库中存在那么我们不能说这个事实是错误的,只能说这个陈述是未知的。这与标准的数据库在封闭世界假设的设定有本质上的区别。例如在知识库中没有包含marry(a,b),在封闭世界假设中我们可以得出这个a没有和b结婚而在开放世界假设下我们只能说a可能结婚了也可能单身。 压缩包内包含AMIE可运行源代码与相应文档资料,欢迎下载参考

资源截图

代码片段和文件信息

package data;
import java.io.File;
import java.io.IOException;
import java.util.Set;

import javatools.datatypes.ByteString;

public class ColumnOverlapCalculator {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FactDatabase source = new FactDatabase();
source.load(new File(args[0]));
printOverlapTable(source);
}

private static void printOverlapTable(FactDatabase source) {
//for each pair of relations print the overlap table
System.out.println(“Relation1\tRelation2\tRelation1-subjects\tRelation1-objects\tRelation2-subjects\tRelation2-objects\tSubject-Subject\tSubject-object\tobject-Subject\tobject-object“);
for(ByteString r1: source.predicateSize){
Set subjects1 = source.predicate2subject2object.get(r1).keySet();
Set objects1 = source.predicate2object2subject.get(r1).keySet();
int nSubjectsr1 = subjects1.size();
int nobjectsr1 = objects1.size();
for(ByteString r2: source.predicateSize){
if(r1.equals(r2))
continue;
System.out.print(r1 + “\t“);
System.out.print(r2 + “\t“);
Set subjects2 = source.predicate2subject2object.get(r2).keySet();
Set objects2 = source.predicate2object2subject.get(r2).keySet();
int nSubjectr2 = subjects2.size();
int nobjectsr2 = objects2.size();
System.out.print(nSubjectsr1 + “\t“ + nobjectsr1 + “\t“ + nSubjectr2 + “\t“ + nobjectsr2 + “\t“);
System.out.print(computeOverlap(subjects1 subjects2) + “\t“);
System.out.print(computeOverlap(subjects1 objects2) + “\t“);
System.out.print(computeOverlap(subjects2 objects1) + “\t“);
System.out.println(computeOverlap(objects1 objects2));
}
}
}

private static int computeOverlap(Set subjects1
Set subjects2) {
int overlap = 0; 
for(ByteString entity1 : subjects1){
if(subjects2.contains(entity1))
++overlap;
}

return overlap;
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        406  2014-07-30 21:25  AMIE\.classpath

     文件        380  2014-07-30 21:14  AMIE\.project

     文件         80  2014-07-30 22:34  AMIE\.settings\org.eclipse.core.resources.prefs

     文件        598  2014-07-30 21:14  AMIE\.settings\org.eclipse.jdt.core.prefs

     文件       3433  2014-08-13 11:07  AMIE\bin\data\ColumnOverlapCalculator.class

     文件       4326  2014-08-13 11:07  AMIE\bin\data\EntityTrimmer.class

     文件       4863  2014-08-13 11:07  AMIE\bin\data\EquivalenceChecker.class

     文件       1953  2014-08-13 11:07  AMIE\bin\data\EquivalenceChecker2$Node.class

     文件       4606  2014-08-13 11:07  AMIE\bin\data\EquivalenceChecker2$QueryGraph.class

     文件       5370  2014-08-13 11:07  AMIE\bin\data\EquivalenceChecker2.class

     文件       5478  2014-08-13 11:07  AMIE\bin\data\eval\EntitiesRelationSampler.class

     文件       1011  2014-08-13 11:07  AMIE\bin\data\eval\EvalResult.class

     文件       1089  2014-08-13 11:07  AMIE\bin\data\eval\EvalSource.class

     文件       1780  2014-08-13 11:07  AMIE\bin\data\eval\Evaluation.class

     文件       3573  2014-08-13 11:07  AMIE\bin\data\eval\EvaluationsSummarizer.class

     文件       5211  2014-08-13 11:07  AMIE\bin\data\eval\Evaluator.class

     文件       8122  2014-08-13 11:07  AMIE\bin\data\eval\PCAFalseFactsSampler.class

     文件       3169  2014-08-13 11:07  AMIE\bin\data\eval\PredictionsMerger.class

     文件      15294  2014-08-13 11:07  AMIE\bin\data\eval\PredictionsSampler.class

     文件       5363  2014-08-13 11:07  AMIE\bin\data\eval\RuleBodySizeEvaluator.class

     文件       4592  2014-08-13 11:07  AMIE\bin\data\eval\RuleHitsEvaluator.class

     文件       3865  2014-08-13 11:07  AMIE\bin\data\eval\TSVRuleJoin.class

     文件       2932  2014-08-13 11:07  AMIE\bin\data\eval\TSVSpecialMerge.class

     文件       1730  2014-08-13 11:07  AMIE\bin\data\FactDatabase$1.class

     文件       1836  2014-08-13 11:07  AMIE\bin\data\FactDatabase$Instantiator.class

     文件      57407  2014-08-13 11:07  AMIE\bin\data\FactDatabase.class

     文件       4285  2014-08-13 11:07  AMIE\bin\data\FactsTrimmer.class

     文件       2445  2014-08-13 11:07  AMIE\bin\data\KBFunctionalConvertor.class

     文件       2390  2014-08-13 11:07  AMIE\bin\data\KBSummarizer.class

     文件       3290  2014-08-13 11:07  AMIE\bin\data\OntologyCoalesce.class

............此处省略952个文件信息

评论

共有 条评论