use of edu.cmu.ml.proppr.examples.InferenceExample in project ProPPR by TeamCohen.
the class WeightedEdgeTest method testOne.
public void testOne(APROptions apr, WamPlugin plug) throws IOException, LogicProgramException {
Prover p = new DprProver(apr);
WamProgram program = WamBaseProgram.load(RULES);
WamPlugin[] plugins = new WamPlugin[] { plug };
Grounder grounder = new Grounder(apr, p, program, plugins);
assertTrue("Missing weighted functor", plugins[0].claim("hasWord#/3"));
Query query = Query.parse("words(p1,W)");
ProofGraph pg = new StateProofGraph(new InferenceExample(query, new Query[] { Query.parse("words(p1,good)") }, new Query[] { Query.parse("words(p1,thing)") }), apr, new SimpleSymbolTable<Feature>(), program, plugins);
// Map<String,Double> m = p.solutions(pg);
// System.out.println(Dictionary.buildString(m, new StringBuilder(), "\n").toString());
GroundedExample ex = grounder.groundExample(p, pg);
String serialized = ex.getGraph().serialize(true).replaceAll("\t", "\n");
//String serialized = grounder.serializeGroundedExample(pg, ex).replaceAll("\t", "\n");
System.out.println(serialized);
assertTrue("Label weights must appear in ground graph (0.9)", serialized.indexOf("0.9") >= 0);
assertTrue("Label weights must appear in ground graph (0.1)", serialized.indexOf("0.1") >= 0);
// Map<String,Double> m = p.solvedQueries(pg);
// System.out.println(Dictionary.buildString(m, new StringBuilder(), "\n"));
Query query2 = Query.parse("words2(p1,W)");
ProofGraph pg2 = new StateProofGraph(new InferenceExample(query2, new Query[] { Query.parse("words(p1,good)") }, new Query[] { Query.parse("words(p1,thing)") }), apr, new SimpleSymbolTable<Feature>(), program, plugins);
// Map<String,Double> m = p.solutions(pg);
// System.out.println(Dictionary.buildString(m, new StringBuilder(), "\n").toString());
GroundedExample ex2 = grounder.groundExample(p, pg2);
String serialized2 = ex2.getGraph().serialize(true).replaceAll("\t", "\n");
//String serialized = grounder.serializeGroundedExample(pg, ex).replaceAll("\t", "\n");
System.out.println(serialized2);
assertTrue("Label weights must appear in ground graph (0.9)", serialized2.indexOf("0.9") >= 0);
assertTrue("Label weights must appear in ground graph (0.1)", serialized2.indexOf("0.1") >= 0);
}
use of edu.cmu.ml.proppr.examples.InferenceExample in project ProPPR by TeamCohen.
the class WeightedFeaturesTest method testAsGraph.
@Test
public void testAsGraph() throws IOException, LogicProgramException {
APROptions apr = new APROptions();
Prover p = new DprProver(apr);
WamProgram program = WamBaseProgram.load(RULES);
WamPlugin[] plugins = new WamPlugin[] { FactsPlugin.load(apr, LABELS, false), LightweightGraphPlugin.load(apr, WORDSGRAPH, -1) };
Grounder grounder = new Grounder(apr, p, program, plugins);
assertTrue(plugins[1].claim("hasWord#/3"));
Query query = Query.parse("predict(p1,Y)");
ProofGraph pg = new StateProofGraph(new InferenceExample(query, new Query[] { Query.parse("predict(p1,pos)") }, new Query[] { Query.parse("predict(p1,neg)") }), apr, new SimpleSymbolTable<Feature>(), program, plugins);
GroundedExample ex = grounder.groundExample(p, pg);
String serialized = grounder.serializeGroundedExample(pg, ex).replaceAll("\t", "\n");
System.out.println(serialized);
// hack
assertTrue("Word weights must appear in ground graph", serialized.indexOf("0.9") > 0);
assertTrue("Word weights must appear in ground graph", serialized.indexOf("0.1") > 0);
}
use of edu.cmu.ml.proppr.examples.InferenceExample in project ProPPR by TeamCohen.
the class BoundVariableGraphTest method test.
@Test
public void test() throws IOException, LogicProgramException {
APROptions apr = new APROptions();
Prover p = new DprProver(apr);
// Prover p = new TracingDfsProver(apr);
WamProgram program = WamBaseProgram.load(RULES);
WamPlugin[] plugins = new WamPlugin[] { LightweightGraphPlugin.load(apr, GRAPH) };
Grounder grounder = new Grounder(apr, p, program, plugins);
Query query = Query.parse("hasWord(p1,good)");
ProofGraph pg = new StateProofGraph(new InferenceExample(query, new Query[] { Query.parse("hasWord(p1,good)") }, new Query[0]), apr, new SimpleSymbolTable<Feature>(), program, plugins);
// Map<String,Double> m = p.solutions(pg);
// System.out.println(Dictionary.buildString(m, new StringBuilder(), "\n").toString());
GroundedExample ex = grounder.groundExample(p, pg);
ex.getGraph().serialize();
String serialized = grounder.serializeGroundedExample(pg, ex).replaceAll("\t", "\n");
System.out.println(serialized);
assertEquals("Too many edges", 4, ex.getGraph().edgeSize());
// Map<String,Double> m = p.solvedQueries(pg);
// System.out.println(Dictionary.buildString(m, new StringBuilder(), "\n"));
}
use of edu.cmu.ml.proppr.examples.InferenceExample in project ProPPR by TeamCohen.
the class NodeMergingTest method doTest.
private void doTest(File rules, File facts, String squery, String[] spos, String[] sneg, int nodeSize, int posSize) throws LogicProgramException, IOException {
APROptions apr = new APROptions();
Prover p = new DprProver(apr);
WamProgram program = WamBaseProgram.load(rules);
WamPlugin[] plugins = null;
if (facts.getName().endsWith(FactsPlugin.FILE_EXTENSION))
plugins = new WamPlugin[] { FactsPlugin.load(apr, facts, false) };
else if (facts.getName().endsWith(GraphlikePlugin.FILE_EXTENSION))
plugins = new WamPlugin[] { LightweightGraphPlugin.load(apr, facts, -1) };
Grounder grounder = new Grounder(apr, p, program, plugins);
Query query = Query.parse(squery);
Query[] pos = new Query[spos.length];
for (int i = 0; i < spos.length; i++) pos[i] = Query.parse(spos[i]);
Query[] neg = new Query[sneg.length];
for (int i = 0; i < sneg.length; i++) neg[i] = Query.parse(sneg[i]);
ProofGraph pg = new StateProofGraph(new InferenceExample(query, pos, neg), apr, new SimpleSymbolTable<Feature>(), program, plugins);
GroundedExample ex = grounder.groundExample(pg);
System.out.println(grounder.serializeGroundedExample(pg, ex).replaceAll("\t", "\n"));
if (nodeSize >= 0)
assertEquals("improper node duplication", nodeSize, ex.getGraph().nodeSize());
if (posSize >= 0)
assertEquals("improper # solutions found", posSize, ex.getPosList().size());
}
use of edu.cmu.ml.proppr.examples.InferenceExample in project ProPPR by TeamCohen.
the class Grounder method groundExamples.
public void groundExamples(File dataFile, File groundedFile, boolean maintainOrder) {
status.start();
try {
if (this.graphKeyFile != null)
this.graphKeyWriter = new BufferedWriter(new FileWriter(this.graphKeyFile));
this.statistics = new GroundingStatistics();
this.empty = 0;
Multithreading<InferenceExample, String> m = new Multithreading<InferenceExample, String>(log, this.status, maintainOrder);
m.executeJob(this.nthreads, new InferenceExampleStreamer(dataFile).stream(), new Transformer<InferenceExample, String>() {
@Override
public Callable<String> transformer(InferenceExample in, int id) {
return new Ground(in, id);
}
}, groundedFile, this.throttle);
reportStatistics(empty);
File indexFile = new File(groundedFile.getParent(), groundedFile.getName() + FEATURE_INDEX_EXTENSION);
serializeFeatures(indexFile, featureTable);
if (this.graphKeyFile != null)
this.graphKeyWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Aggregations