From: <lor...@us...> - 2011-02-28 10:01:28
|
Revision: 2677 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2677&view=rev Author: lorenz_b Date: 2011-02-28 10:01:22 +0000 (Mon, 28 Feb 2011) Log Message: ----------- Some modifications for evaluation. Modified Paths: -------------- trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/EvaluationWithNLQueriesScript.java trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/QueryTreeFilterEvaluation.java trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/Filters.java trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/QuestionBasedStatementFilter.java Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/EvaluationWithNLQueriesScript.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/EvaluationWithNLQueriesScript.java 2011-02-28 09:51:24 UTC (rev 2676) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/EvaluationWithNLQueriesScript.java 2011-02-28 10:01:22 UTC (rev 2677) @@ -81,7 +81,7 @@ private static final int TOP_K = 20; - private static final double SIMILARITY_THRESHOLD = 0.5; + private static final double SIMILARITY_THRESHOLD = 0.3; private Map<String, String> question2query = new Hashtable<String, String>(); @@ -291,7 +291,8 @@ Set<String> relatedResources; List<String> relevantWords; int i = 1; - for(String question : question2Answers.keySet()){question = "Give me all films with Tom Cruise!"; + int learnedQueries = 0; + for(String question : question2Answers.keySet()){//question = "Give me all films with Tom Cruise!"; logger.info(getNewQuestionString(i++, question)); try { targetQuery = question2query.get(question); @@ -364,6 +365,8 @@ //start learning Set<String> learnedResources; + String oldLearnedQuery = ""; + boolean learningFailed = false; do { // compute new similiar example logger.info("Computing similiar example..."); @@ -376,6 +379,10 @@ // print learned query up to here String learnedQuery = exFinder.getCurrentQuery(); + if(oldLearnedQuery.equals(learnedQuery)){ + learningFailed = true; + break; + }oldLearnedQuery = learnedQuery; logger.info("Learned SPARQL query: \n" + learnedQuery); // learnedQuery = "SELECT DISTINCT " + learnedQuery.substring(7); learnedQuery = "SELECT " + learnedQuery.substring(7); @@ -388,7 +395,11 @@ negExamples.add(example); } } while (!answers.equals(learnedResources)); - logger.info("Learned successfully query for question \""+ question + "\"."); + if(!learningFailed){ + logger.info("Learned successfully query for question \""+ question + "\"."); + learnedQueries++; + } + } catch (TimeOutException e) { e.printStackTrace(); } catch (SPARQLQueryException e) { @@ -397,6 +408,7 @@ logger.error("Something went wrong. Trying next question...", e); } } + logger.info("Learned " + learnedQueries + "/" + question2query.keySet().size() + " queries."); } private String getNewQuestionString(int i, String question){ Modified: trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/QueryTreeFilterEvaluation.java =================================================================== --- trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/QueryTreeFilterEvaluation.java 2011-02-28 09:51:24 UTC (rev 2676) +++ trunk/autosparql/src/main/java/org/dllearner/autosparql/evaluation/QueryTreeFilterEvaluation.java 2011-02-28 10:01:22 UTC (rev 2677) @@ -1,10 +1,13 @@ package org.dllearner.autosparql.evaluation; import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import org.dllearner.autosparql.server.search.QuestionProcessor; +import org.dllearner.autosparql.server.util.TreeHelper; import org.dllearner.kb.sparql.ExtractionDBCache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.sparqlquerygenerator.QueryTreeFactory; @@ -23,13 +26,27 @@ * @param args */ public static void main(String[] args) { - String question = "Give me all European Capitals!"; - String uri = "http://dbpedia.org/resource/Vienna"; + String question = "Give me all actors starring in Batman Begins.";//"Give me all European Capitals!"; + String uri = "http://dbpedia.org/resource/Christian_Bale";//"http://dbpedia.org/resource/Vienna"; System.out.println("Question: \"" + question + "\""); System.out.println("Resource: " + uri); + String baseURI = "http://dbpedia.org/resource/"; + Map<String,String> prefixes = new HashMap<String,String>(); + prefixes.put("dbo","http://dbpedia.org/ontology/"); + prefixes.put("dbprop","http://dbpedia.org/property/"); + prefixes.put("rdfs","http://www.w3.org/2000/01/rdf-schema#"); + prefixes.put("rdf","http://www.w3.org/1999/02/22-rdf-syntax-ns#"); + prefixes.put("skos","http://www.w3.org/2004/02/skos/core#"); + prefixes.put("geo","http://www.w3.org/2003/01/geo/wgs84_pos#"); + prefixes.put("georss","http://www.georss.org/georss/"); + prefixes.put("owl","http://www.w3.org/2002/07/owl#"); + prefixes.put("yago","http://dbpedia.org/class/yago/"); + prefixes.put("cyc","http://sw.opencyc.org/concept/"); + prefixes.put("foaf","http://xmlns.com/foaf/0.1/"); + QueryTreeFactory<String> treeFactory = new QueryTreeFactoryImpl(); QuestionProcessor qProcessor = new QuestionProcessor(); //filter used in CONSTRUCT query @@ -45,13 +62,13 @@ Model model = modelGen.createModel(uri, Strategy.CHUNKS, 2); QueryTree<String> tree = treeFactory.getQueryTree(uri, model); - System.out.println("Tree without filtering:\n" + tree.getStringRepresentation()); + System.out.println("Tree without filtering:\n" + TreeHelper.getAbbreviatedTreeRepresentation(tree, baseURI, prefixes)); // treeFactory.setStatementSelector(new QuestionBasedStatementSelector(new HashSet<String>(relevantWords))); treeFactory.setStatementFilter(new QuestionBasedStatementFilter(new HashSet<String>(relevantWords))); QueryTree<String> filteredTree = treeFactory.getQueryTree(uri, model); - System.out.println("Tree with filtering:\n" + filteredTree.getStringRepresentation()); + System.out.println("Tree with filtering:\n" + TreeHelper.getAbbreviatedTreeRepresentation(filteredTree, baseURI, prefixes)); } Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/Filters.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/Filters.java 2011-02-28 09:51:24 UTC (rev 2676) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/Filters.java 2011-02-28 10:01:22 UTC (rev 2677) @@ -56,7 +56,7 @@ filters.add(FOAF.birthday.toString()); filters.add(FOAF.name.toString()); filters.add(FOAF.firstName.toString()); - filters.add(FOAF.givenname.toString()); +// filters.add(FOAF.givenname.toString()); return filters; } Modified: trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/QuestionBasedStatementFilter.java =================================================================== --- trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/QuestionBasedStatementFilter.java 2011-02-28 09:51:24 UTC (rev 2676) +++ trunk/sparql-query-generator/src/main/java/org/dllearner/sparqlquerygenerator/util/QuestionBasedStatementFilter.java 2011-02-28 10:01:22 UTC (rev 2677) @@ -18,7 +18,7 @@ private AbstractStringMetric levensteinMetric; private AbstractStringMetric jaroWinklerMetric; - private double threshold = 0.3; + private double threshold = 0.7; int cnt = 0; @@ -43,7 +43,8 @@ float qSim = qGramMetric.getSimilarity(s1, s2); float lSim = levensteinMetric.getSimilarity(s1, s2); float jSim = jaroWinklerMetric.getSimilarity(s1, s2); - float sim = Math.max(Math.max(qSim, lSim), jSim); + float sim = Math.max(qSim, lSim); +// sim = Math.max(sim, jSim); return sim >= threshold; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |