-
大小: 2.43MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-29
- 語言: 其他
- 標(biāo)簽: 不完整??知識庫??關(guān)聯(lián)規(guī)則??數(shù)據(jù)挖掘??語義網(wǎng)??
資源簡介
最近幾年,例如YAGO和DBpedia等大規(guī)模知識庫發(fā)展有了很大的進步。知識庫提供了大量的不同種類的實體信息,如人、國家、河流、城市大學(xué)等等,同時知識庫包含了大量的在實體(entity)間的關(guān)系既事實(fact)。當(dāng)今的知識庫包含的數(shù)據(jù)量是巨大的通常有百萬個實體和上億個描述實體間關(guān)系的事實數(shù)據(jù)。
雖然目前的知識庫存在大量的實體和事實數(shù)據(jù),但是這樣大規(guī)模的數(shù)據(jù)仍然不完整。目前構(gòu)建知識庫的方法主要有兩種,一種是從大量的文本中抽取事實但這種方法必然會帶來大量的噪聲數(shù)據(jù),第二是人工擴展,但這樣的方法對于時間的開銷是極大的。如果確保一個知識庫是完整的則必須花費很大的努力來抽取大量的事實,并檢查事實的正確性,因為只有正確的事實加入到知識庫中才是有意義的。同時知識庫的本身由于有足夠的信息可以推理出更多的新的事實。例如有這樣一個例子,一個知識庫包含一組事實是孩子c有一個媽媽m,這樣可以推理得出孩子媽媽的丈夫f很可能是孩子的父親。該邏輯規(guī)則形式化的描述如下:
motherof(m,c)∧marriedTo(m,f)?fatherof(f,c)
挖掘這種規(guī)則可幫助做一下四種事情:1、利用這種規(guī)則來推理出新的事實,而這些被挖掘出的新的事實可以使知識庫更完整。2、這些規(guī)則可以檢測出知識庫潛在的錯誤例如一個陳述是一個與一個男孩無關(guān)的人是這個男孩的父親,這樣的陳述很可能是錯誤的。3、有很多推理工具依賴其他工具提供規(guī)則,所以這些被挖掘出來的規(guī)則可以用于推理。4、這些規(guī)則描述一個普遍的規(guī)律,這些規(guī)律可以幫我我們理解分析知識庫中的數(shù)據(jù),如找到一些國家通常與說同一種語言的國家交易。或結(jié)婚是一個對稱關(guān)系,或使用同一個樂器的音樂家通常互相影響等等。
AMIE的目標(biāo)是從RDF格式的知識庫中挖掘如上所述的邏輯規(guī)則,在語義網(wǎng)(Semantic Web)中存在大量的RDF知識庫如YAGO、Freebase和DBpedia等。這些知識庫使用RDF三元組(S,P,O)提供二元關(guān)系(binary relation)的描述。由于知識庫一般只包含正例而(S,P,O)沒有反例(S,?P,O),所以RDF這樣的知識庫中僅能通過正例來推理。進一步來說在RDF知識庫上的操作是基于開放世界假設(shè)(OWA)的。在開放世界假設(shè)下,一個事實沒有在知識庫中存在那么我們不能說這個事實是錯誤的,只能說這個陳述是未知的。這與標(biāo)準(zhǔn)的數(shù)據(jù)庫在封閉世界假設(shè)的設(shè)定有本質(zhì)上的區(qū)別。例如在知識庫中沒有包含marry(a,b),在封閉世界假設(shè)中我們可以得出這個a沒有和b結(jié)婚而在開放世界假設(shè)下我們只能說a可能結(jié)婚了也可能單身。
壓縮包內(nèi)包含AMIE可運行源代碼與相應(yīng)文檔資料,歡迎下載參考

代碼片段和文件信息
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\FactDataba
?????文件???????1836??2014-08-13?11:07??AMIE\bin\data\FactDataba
?????文件??????57407??2014-08-13?11:07??AMIE\bin\data\FactDataba
?????文件???????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個文件信息
評論
共有 條評論