From: <lor...@us...> - 2011-11-07 16:07:41
|
Revision: 3385 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3385&view=rev Author: lorenz_b Date: 2011-11-07 16:07:31 +0000 (Mon, 07 Nov 2011) Log Message: ----------- Some changes to get position of learned query if exists. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-11-07 10:59:39 UTC (rev 3384) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-11-07 16:07:31 UTC (rev 3385) @@ -105,6 +105,7 @@ private Templator templateGenerator; private String question; + private int learnedPos = -1; private Oracle oracle; @@ -1305,7 +1306,7 @@ if(!results.isEmpty()){ try{ int cnt = Integer.parseInt(results.get(0)); - if(cnt > 0){ + if(cnt > 0){learnedPos = queries.indexOf(query); learnedSPARQLQueries.put(query, results); if(stopIfQueryResultNotEmpty){ return; @@ -1313,6 +1314,7 @@ } } catch (NumberFormatException e){ learnedSPARQLQueries.put(query, results); + learnedPos = queries.indexOf(query); if(stopIfQueryResultNotEmpty){ return; } @@ -1329,12 +1331,13 @@ // if(stopIfQueryResultNotEmpty && result){ // return; // } - if(stopIfQueryResultNotEmpty){ + if(stopIfQueryResultNotEmpty){learnedPos = queries.indexOf(query); return; } logger.info("Result: " + result); } } + mon.stop(); logger.info("Done in " + mon.getLastValue() + "ms."); } @@ -1398,6 +1401,10 @@ return resources; } + public int getLearnedPosition() { + return learnedPos+1; + } + private List<String> getResultFromLocalModel(String query, Model model){ List<String> resources = new ArrayList<String>(); QueryExecution qe = QueryExecutionFactory.create(query, model); @@ -1411,29 +1418,36 @@ } private Set<String> getDomains(String property){ + String tmp = property; + if(property.startsWith("http://dbpedia.org/property/")){ + tmp = "http://dbpedia.org/ontology" + property.substring(property.lastIndexOf("/")); + } Set<String> domains = new HashSet<String>(); - String query = String.format("SELECT ?domain WHERE {<%s> <%s> ?domain}", property, RDFS.domain.getURI()); + String query = String.format("SELECT ?domain WHERE {<%s> <%s> ?domain}", tmp, RDFS.domain.getURI()); ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query)); QuerySolution qs; while(rs.hasNext()){ qs = rs.next(); domains.add(qs.getResource("domain").getURI()); } - return domains; } private Set<String> getRanges(String property){ - Set<String> domains = new HashSet<String>(); - String query = String.format("SELECT ?range WHERE {<%s> <%s> ?range}", property, RDFS.range.getURI()); + String tmp = property; + if(property.startsWith("http://dbpedia.org/property/")){ + tmp = "http://dbpedia.org/ontology" + property.substring(property.lastIndexOf("/")); + } + Set<String> ranges = new HashSet<String>(); + String query = String.format("SELECT ?range WHERE {<%s> <%s> ?range}", tmp, RDFS.range.getURI()); ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query)); QuerySolution qs; while(rs.hasNext()){ qs = rs.next(); - domains.add(qs.getResource("range").getURI()); + ranges.add(qs.getResource("range").getURI()); } - return domains; + return ranges; } private boolean isObjectProperty(String property){ @@ -1479,10 +1493,10 @@ // String question = "Which/WDT organizations/NNS were/VBD founded/VBN in/IN 1950/CD"; // String question = "Is/VBZ there/RB a/DT video/NN game/NN called/VBN Battle/NNP Chess/NNP"; // String question = "Which/WDT software/NN has/VBZ been/VBN developed/VBN by/IN organizations/NNS founded/VBN in/IN California/NNP"; -// String question = "How/WRB many/JJ films/NNS did/VBD Leonardo/NNP DiCaprio/NNP star/VB in/IN"; + String question = "How/WRB many/JJ films/NNS did/VBD Leonardo/NNP DiCaprio/NNP star/VB in/IN"; // String question = "Which/WDT music/NN albums/NNS contain/VBP the/DT song/NN Last/NNP Christmas/NNP"; // String question = "Which/WDT companies/NNS are/VBP located/VBN in/IN California/NNP USA/NNP"; - String question = "Who/WP wrote/VBD the/DT book/NN The/NNP pillars/NNP of/NNP the/NNP Earth/NNP"; +// String question = "Who/WP wrote/VBD the/DT book/NN The/NNP pillars/NNP of/NNP the/NNP Earth/NNP"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner();learner.setUseIdealTagger(true); // SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), // Collections.<String>singletonList(""), Collections.<String>emptyList()); @@ -1493,6 +1507,7 @@ learner.learnSPARQLQueries(); System.out.println("Learned query:\n" + learner.getBestSPARQLQuery()); System.out.println("Lexical answer type is: " + learner.getTemplates().iterator().next().getLexicalAnswerType()); + System.out.println(learner.getLearnedPosition()); } Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-11-07 10:59:39 UTC (rev 3384) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-11-07 16:07:31 UTC (rev 3385) @@ -321,6 +321,7 @@ String errorCode = ""; LatexWriter latex = new LatexWriter(); int i = 0; + int cnt = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){//if(entry.getKey()==50)continue; if((testID != -1 && entry.getKey() != testID) || (yagoExclusions.contains(entry.getKey())))continue; try { @@ -361,6 +362,11 @@ //get the used templates List<Template> templates = new ArrayList<Template>(stbl.getTemplates()); + if(stbl.getLearnedPosition() == -1 || stbl.getLearnedPosition() > 10){ + cnt++; + } + i++; + //start output //write templates subsection latex.beginSubsection("Templates (" + templates.size() + ")"); @@ -392,8 +398,6 @@ q.setPrefix("dbr", "http://dbpedia.org/resource/"); } String queryString = q.toString(); - String requestURL = new QueryEngineHTTP(endpoint.getURL().toString(), queryString).toString(); -// System.out.println(requestURL); queryString = queryString + "\n" + "Score(" + wQ.getScore() + ")"; latex.addListing(queryString); latex.endEnumerationItem(); @@ -483,7 +487,7 @@ latex.addSummaryTableEntry(questionId, extractSentence(question), precision, recall, errorCode); } } - + System.out.println(cnt + "/" + i); latex.write("log/evaluation_" + System.currentTimeMillis()+ ".tex", Calendar.getInstance().getTime().toString(), correctAnswers); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |