From: <lor...@us...> - 2011-04-06 11:52:02
|
Revision: 2760 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2760&view=rev Author: lorenz_b Date: 2011-04-06 11:51:54 +0000 (Wed, 06 Apr 2011) Log Message: ----------- Started evaluation script for TBSL. Added Test to check for which questions of a testset templates can be generated. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/NoTemplateFoundException.java trunk/components-ext/src/main/resources/tbsl/evaluation/ trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/NoTemplateFoundException.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/NoTemplateFoundException.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/NoTemplateFoundException.java 2011-04-06 11:51:54 UTC (rev 2760) @@ -0,0 +1,5 @@ +package org.dllearner.algorithm.tbsl.learning; + +public class NoTemplateFoundException extends Exception { + +} 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-04-06 07:18:52 UTC (rev 2759) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-04-06 11:51:54 UTC (rev 2760) @@ -23,7 +23,9 @@ import org.dllearner.algorithm.tbsl.sparql.SlotType; import org.dllearner.algorithm.tbsl.sparql.Template; import org.dllearner.algorithm.tbsl.templator.Templator; -import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ActiveLearningAlgorithm; +import org.dllearner.core.Oracle; +import org.dllearner.core.SparqlQueryLearningAlgorithm; import org.dllearner.kb.sparql.ExtractionDBCache; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; @@ -37,7 +39,7 @@ import com.jamonapi.Monitor; import com.jamonapi.MonitorFactory; -public class SPARQLTemplateBasedLearner implements LearningAlgorithm{ +public class SPARQLTemplateBasedLearner implements ActiveLearningAlgorithm, SparqlQueryLearningAlgorithm{ private static final Logger logger = Logger.getLogger(SPARQLTemplateBasedLearner.class); private Monitor mon = MonitorFactory.getTimeMonitor("stbl"); @@ -45,7 +47,9 @@ private static final int TOP_K = 5; private static final String SOLR_SERVER_URL = "http://139.18.2.173:8080/apache-solr-1.4.1"; private static final int RECURSION_DEPTH = 2; + private boolean USE_LUCENE_RANKING = true; + private boolean useRemoteEndpointValidation = true; private SparqlEndpoint endpoint = SparqlEndpoint.getEndpointDBpediaLiveAKSW(); private ExtractionDBCache cache = new ExtractionDBCache("cache"); @@ -58,7 +62,9 @@ private String question; + private Oracle oracle; + private Map<String, List<String>> learnedSPARQLQueries; public SPARQLTemplateBasedLearner(){ @@ -89,13 +95,21 @@ this.question = question; } - private void learnSPARQLQueries(){ + public void setUseRemoteEndpointValidation(boolean useRemoteEndpointValidation){ + this.useRemoteEndpointValidation = useRemoteEndpointValidation; + } + + public void learnSPARQLQueries() throws NoTemplateFoundException{ + learnedSPARQLQueries = new HashMap<String, List<String>>(); //generate SPARQL query templates logger.info("Generating SPARQL query templates..."); mon.start(); Set<Template> templates = templateGenerator.buildTemplates(question); mon.stop(); logger.info("Done in " + mon.getLastValue() + "ms."); + if(templates.isEmpty()){ + throw new NoTemplateFoundException(); + } logger.info("Templates:"); for(Template t : templates){ logger.info(t); @@ -109,12 +123,13 @@ sparqlQueryCandidates = getSPARQLQueryCandidates(templates); } - //test candidates on remote endpoint - validateAgainstRemoteEndpoint(sparqlQueryCandidates); + //test candidates + if(useRemoteEndpointValidation){ //on remote endpoint + validateAgainstRemoteEndpoint(sparqlQueryCandidates); + } else {//on local model + validateAgainstLocalModel(sparqlQueryCandidates); + } - //test candidates on local model - validateAgainstLocalModel(sparqlQueryCandidates); - } private Model getWorkingModel(List<String> resources){ @@ -309,6 +324,9 @@ for(String query : queries){ logger.info("Testing query:\n" + query); List<String> results = getResultFromRemoteEndpoint(query); + if(!results.isEmpty()){ + learnedSPARQLQueries.put(query, results); + } logger.info("Result: " + results); } mon.stop(); @@ -366,22 +384,33 @@ /** * @param args * @throws MalformedURLException + * @throws NoTemplateFoundException */ - public static void main(String[] args) throws MalformedURLException { - String question = "Give me all soccer clubs in Premier League";//Give me all countries in Europe + public static void main(String[] args) throws MalformedURLException, NoTemplateFoundException { + String question = "Give me all countries in Europe";//Give me all soccer clubs in Premier League"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); - SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://db0.aksw.org:8999/sparql"), + SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://live.dbpedia.org/sparql"), Collections.<String>singletonList("http://dbpedia.org"), Collections.<String>emptyList()); learner.setEndpoint(endpoint); learner.setQuestion(question); - learner.start(); + learner.learnSPARQLQueries(); } @Override public void start() { - learnSPARQLQueries(); } + + @Override + public List<String> getCurrentlyBestSPARQLQueries(int nrOfSPARQLQueries) { + return new ArrayList<String>(learnedSPARQLQueries.keySet()); + } + + @Override + public void setOracle(Oracle oracle) { + this.oracle = oracle; + } + } Added: trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml 2011-04-06 11:51:54 UTC (rev 2760) @@ -0,0 +1,253 @@ +<?xml version="1.0" ?> +<dataset id="dbpedia-test"> +<question id="23"> +<string> +Which presidents of the United States had more than three children? +</string> +</question> +<question id="3"> +<string> +Give me the official websites of actors of the television show Charmed. +</string> +</question> +<question id="37"> +<string> +Who is the daughter of Bill Clinton married to? +</string> +</question> +<question id="43"> +<string> +Which river does the Brooklyn Bridge cross? +</string> +</question> +<question id="21"> +<string> +How many monarchical countries are there in Europe? +</string> +</question> +<question id="7"> +<string> +Where did Abraham Lincoln die? +</string> +</question> +<question id="10"> +<string> +Is the wife of President Obama called Michelle? +</string> +</question> +<question id="28"> +<string> +Which states of Germany are governed by the Social Democratic Party? +</string> +</question> +<question id="39"> +<string> +Which U.S. states possess gold minerals? +</string> +</question> +<question id="50"> +<string> +In which country does the Nile start? +</string> +</question> +<question id="44"> +<string> +Which locations have more than two caves? +</string> +</question> +<question id="30"> +<string> +Is proinsulin a protein? +</string> +</question> +<question id="12"> +<string> +Which classis does the Millepede belong to? +</string> +</question> +<question id="49"> +<string> +How tall is Claudia Schiffer? +</string> +</question> +<question id="33"> +<string> +Who created Goofy? +</string> +</question> +<question id="4"> +<string> +Give me the capitals of all U.S. states. +</string> +</question> +<question id="18"> +<string> +Give me all cities in New Jersey with more than 100000 inhabitants. +</string> +</question> +<question id="31"> +<string> +Which museum exhibits The Scream by Munch? +</string> +</question> +<question id="35"> +<string> +Is Egypts largest city also its capital? +</string> +</question> +<question id="27"> +<string> +What is the revenue of IBM? +</string> +</question> +<question id="38"> +<string> +Which states border Utah? +</string> +</question> +<question id="13"> +<string> +In which country is the Limerick Lake? +</string> +</question> +<question id="32"> +<string> +Which television shows were created by Walt Disney? +</string> +</question> +<question id="45"> +<string> +Which mountain is the highest after the Annapurna? +</string> +</question> +<question id="29"> +<string> +In which films directed by Garry Marshall was Julia Roberts starring? +</string> +</question> +<question id="42"> +<string> +Which bridges are of the same type as the Manhattan Bridge? +</string> +</question> +<question id="14"> +<string> +Was U.S. president Jackson involved in a war? +</string> +</question> +<question id="20"> +<string> +Which European countries are a constitutional monarchy? +</string> +</question> +<question id="40"> +<string> +Who is the author of WikiLeaks? +</string> +</question> +<question id="17"> +<string> +Which state of the United States of America has the highest density? +</string> +</question> +<question id="19"> +<string> +What is the currency of the Czech Republic? +</string> +</question> +<question id="22"> +<string> +Which countries in the European Union adopted the Euro? +</string> +</question> +<question id="11"> +<string> +What is the area code of Berlin? +</string> +</question> +<question id="9"> +<string> +Which countries have more than two official languages? +</string> +</question> +<question id="16"> +<string> +Who is the owner of Universal Studios? +</string> +</question> +<question id="34"> +<string> +Through which countries does the Yenisei river flow? +</string> +</question> +<question id="48"> +<string> +When did Germany join the EU? +</string> +</question> +<question id="36"> +<string> +Which monarchs of the United Kingdom were married to a German? +</string> +</question> +<question id="8"> +<string> +When was the Battle of Gettysburg? +</string> +</question> +<question id="24"> +<string> +What is the highest mountain in Germany? +</string> +</question> +<question id="26"> +<string> +Give me all soccer clubs in Spain. +</string> +</question> +<question id="5"> +<string> +What are the official languages of the Philippines? +</string> +</question> +<question id="6"> +<string> +Who is the mayor of New York City? +</string> +</question> +<question id="41"> +<string> +Who designed the Brooklyn Bridge? +</string> +</question> +<question id="2"> +<string> +Which telecommunications organizations are located in Belgium? +</string> +</question> +<question id="15"> +<string> +What is the profession of Frank Herbert? +</string> +</question> +<question id="46"> +<string> +What is the highest place of Karakoram? +</string> +</question> +<question id="25"> +<string> +Give me the homepage of Forbes. +</string> +</question> +<question id="1"> +<string> +Which companies are in the computer software industry? +</string> +</question> +<question id="47"> +<string> +What did Bruce Carver die from? +</string> +</question> +</dataset> Added: trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml 2011-04-06 11:51:54 UTC (rev 2760) @@ -0,0 +1,26639 @@ +<?xml version="1.0" ?> +<dataset id="dbpedia-train"> +<question id="23"> +<string> +Give me all school types. +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX yago: <http://dbpedia.org/class/yago/> +SELECT DISTINCT ?uri ?string +WHERE +{ + ?uri rdf:type yago:SchoolTypes . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Byzantine_university +</uri> +<string> +Byzantine university +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Abendgymnasium +</uri> +<string> +Abendgymnasium +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Adult_high_school +</uri> +<string> +Adult high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Alternative_school +</uri> +<string> +Alternative school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Area_school +</uri> +<string> +Area school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Art_school +</uri> +<string> +Art school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Beacon_School +</uri> +<string> +Beacon School +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Berufsoberschule +</uri> +<string> +Berufsoberschule +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Birmingham_board_schools +</uri> +<string> +Birmingham board schools +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Boarding_school +</uri> +<string> +Boarding school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Campus_university +</uri> +<string> +Campus university +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Cathedral_school +</uri> +<string> +Cathedral school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Catholic_school +</uri> +<string> +Catholic school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Central_school +</uri> +<string> +Central school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Charity_school +</uri> +<string> +Charity school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Charter_school +</uri> +<string> +Charter school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Christian_school +</uri> +<string> +Christian school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/City_Technology_College +</uri> +<string> +City Technology College +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Co-institutional +</uri> +<string> +Co-institutional +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Collegiate_institute +</uri> +<string> +Collegiate institute +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Collegiate_university +</uri> +<string> +Collegiate university +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Common_school +</uri> +<string> +Common school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Comprehensive_high_school +</uri> +<string> +Comprehensive high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Comprehensive_school +</uri> +<string> +Comprehensive school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Combined_school +</uri> +<string> +Combined school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Community_school +</uri> +<string> +Community school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Continuation_high_school +</uri> +<string> +Continuation high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Cram_schools_in_Hong_Kong +</uri> +<string> +Cram schools in Hong Kong +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Cram_school +</uri> +<string> +Cram school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Dance_studio +</uri> +<string> +Dance studio +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Dalton_Plan +</uri> +<string> +Dalton Plan +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Dame_school +</uri> +<string> +Dame school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Darul_uloom +</uri> +<string> +Darul uloom +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Day_school +</uri> +<string> +Day school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Elementary_Middle_School +</uri> +<string> +Elementary Middle School +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Elementary_school +</uri> +<string> +Elementary school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Faith_school +</uri> +<string> +Faith school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Federated_school +</uri> +<string> +Federated school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Film_school +</uri> +<string> +Film school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/First_school +</uri> +<string> +First school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Finishing_school +</uri> +<string> +Finishing school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Folk_high_school +</uri> +<string> +Folk high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Foundation_school +</uri> +<string> +Foundation school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Gaelscoil +</uri> +<string> +Gaelscoil +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Graduate_school +</uri> +<string> +Graduate school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Grammar_school +</uri> +<string> +Grammar school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Grant-maintained_school +</uri> +<string> +Grant-maintained school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Gurukul +</uri> +<string> +Gurukul +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Halau +</uri> +<string> +Halau +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Han_school +</uri> +<string> +Han school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Hedge_school +</uri> +<string> +Hedge school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/High_school +</uri> +<string> +High school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Independent_school +</uri> +<string> +Independent school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Infant_school +</uri> +<string> +Infant school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Institute_of_technology +</uri> +<string> +Institute of technology +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/International_school +</uri> +<string> +International school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jewish_day_school +</uri> +<string> +Jewish day school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Juku +</uri> +<string> +Juku +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Junior_school +</uri> +<string> +Junior school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Kendriya_Vidyalaya +</uri> +<string> +Kendriya Vidyalaya +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Laboratory_school +</uri> +<string> +Laboratory school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Latin_school +</uri> +<string> +Latin school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Law_school_in_the_United_States +</uri> +<string> +Law school in the United States +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Liceo_classico +</uri> +<string> +Liceo classico +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Liceo_scientifico +</uri> +<string> +Liceo scientifico +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Liceum_og%C3%B3lnokszta%C5%82c%C4%85ce +</uri> +<string> +Liceum ogólnokształcące +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Lower_School +</uri> +<string> +Lower School +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Lutheran_school +</uri> +<string> +Lutheran school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Magnet_school +</uri> +<string> +Magnet school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Maktab +</uri> +<string> +Maktab +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Medical_school +</uri> +<string> +Medical school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Menntask%C3%B3li +</uri> +<string> +Menntaskóli +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Medieval_university +</uri> +<string> +Medieval university +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Middle_school +</uri> +<string> +Middle school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Military_academy +</uri> +<string> +Military academy +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Minor_seminary +</uri> +<string> +Minor seminary +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Monitorial_schools +</uri> +<string> +Monitorial schools +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Mixed-sex_education +</uri> +<string> +Mixed-sex education +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Multidenominational_school +</uri> +<string> +Multidenominational school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Normal_school +</uri> +<string> +Normal school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Nursery_school +</uri> +<string> +Nursery school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Nursing_school +</uri> +<string> +Nursing school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/One-room_school +</uri> +<string> +One-room school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Parochial_school +</uri> +<string> +Parochial school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pit_school +</uri> +<string> +Pit school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pre-kindergarten +</uri> +<string> +Pre-kindergarten +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pre-school_playgroup +</uri> +<string> +Pre-school playgroup +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pregnancy_school +</uri> +<string> +Pregnancy school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Primary_education +</uri> +<string> +Primary education +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Primary_school +</uri> +<string> +Primary school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Private_school +</uri> +<string> +Private school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Public_high_school +</uri> +<string> +Public high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Realschule +</uri> +<string> +Realschule +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Reform_school +</uri> +<string> +Reform school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Reggio_Emilia_approach +</uri> +<string> +Reggio Emilia approach +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Roma_Special_School +</uri> +<string> +Roma Special School +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Sail_training +</uri> +<string> +Sail training +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/School_of_the_Air +</uri> +<string> +School of the Air +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/School_of_Infantry +</uri> +<string> +School of Infantry +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Secondary_education +</uri> +<string> +Secondary education +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Secondary_modern_school +</uri> +<string> +Secondary modern school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Selective_school +</uri> +<string> +Selective school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Separate_school +</uri> +<string> +Separate school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Secondary_school +</uri> +<string> +Secondary school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Sixth_form_college +</uri> +<string> +Sixth form college +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Ski_school +</uri> +<string> +Ski school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Specialist_school +</uri> +<string> +Specialist school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Special_school +</uri> +<string> +Special school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Specialized_school +</uri> +<string> +Specialized school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/State_school +</uri> +<string> +State school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Sudbury_school +</uri> +<string> +Sudbury school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Summer_school +</uri> +<string> +Summer school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Technikon +</uri> +<string> +Technikon +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Taxonomy_of_schools +</uri> +<string> +Taxonomy of schools +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Technicum +</uri> +<string> +Technicum +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Training_ship +</uri> +<string> +Training ship +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Upper_school +</uri> +<string> +Upper school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/University-preparatory_school +</uri> +<string> +University-preparatory school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Utraquist_school +</uri> +<string> +Utraquist school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Veterinary_school +</uri> +<string> +Veterinary school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Vocational_technical_school +</uri> +<string> +Vocational technical school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Voluntary_controlled_school +</uri> +<string> +Voluntary controlled school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Voluntary_aided_school +</uri> +<string> +Voluntary aided school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Voluntary_secondary_school +</uri> +<string> +Voluntary secondary school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Vocational_school +</uri> +<string> +Vocational school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Waldorf_education +</uri> +<string> +Waldorf education +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Year-round_school +</uri> +<string> +Year-round school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/%C4%B0mam_Hatip_school +</uri> +<string> +İmam Hatip school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/International_Preschool +</uri> +<string> +International Preschool +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Integral_education +</uri> +<string> +Integral education +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Forest_kindergarten +</uri> +<string> +Forest kindergarten +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/K-8_school +</uri> +<string> +K-8 school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Cursinho +</uri> +<string> +Cursinho +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Hospital_school +</uri> +<string> +Hospital school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Akademie +</uri> +<string> +Akademie +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Monastic_school +</uri> +<string> +Monastic school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Abendhauptschule +</uri> +<string> +Abendhauptschule +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Orphan_school +</uri> +<string> +Orphan school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Forest_schools +</uri> +<string> +Forest schools +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Canadian_Indian_residential_school_system +</uri> +<string> +Canadian Indian residential school system +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Ungraded_school +</uri> +<string> +Ungraded school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Kolleg +</uri> +<string> +Kolleg +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Sports_school +</uri> +<string> +Sports school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Church_school +</uri> +<string> +Church school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/New_tech_high_school +</uri> +<string> +New tech high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Semester_school +</uri> +<string> +Semester school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Maryshore_Seminary +</uri> +<string> +Maryshore Seminary +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Village_college +</uri> +<string> +Village college +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Early_college_high_school +</uri> +<string> +Early college high school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pirivena +</uri> +<string> +Pirivena +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Therapeutic_boarding_school +</uri> +<string> +Therapeutic boarding school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Cadet_Corps +</uri> +<string> +Cadet Corps +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Direct_grant_grammar_school +</uri> +<string> +Direct grant grammar school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Approved_school +</uri> +<string> +Approved school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Dental_school +</uri> +<string> +Dental school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Escalator_school +</uri> +<string> +Escalator school +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Abendrealschule +</uri> +<string> +Abendrealschule +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Independent_school_(United_Kingdom) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Gymnasium_(school) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Mechanics'_Institutes +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/National_school_(Ireland) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Special_school_(Netherlands) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Academy_(English_school) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Wirtschaftsschule_(Bavaria) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Preparatory_school_(UK) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Partially_selective_school_(England) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Law_school_in_South_Korea +</uri> +<string> +Law school in South Korea +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Language%2Fculture_based_charter_school +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/S%C3%A1mi_school_(Sweden) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Independent_school_(Australia) +</uri> +<string> + +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Free_school_(England) +</uri> +<string> + +</string> +</answer> +</answers> +</question> +<question id="11"> +<string> +Which presidents were born in 1945? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX onto: <http://dbpedia.org/ontology/> +PREFIX yago: <http://dbpedia.org/class/yago/> +SELECT DISTINCT ?uri ?string +WHERE +{ + { + ?uri rdf:type onto:President . + ?uri onto:birthDate ?date . + FILTER regex(?date,'^1945') . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } + } + UNION + { + ?uri rdf:type yago:President. + ?uri onto:birthDate ?date . + FILTER regex(?date, '^1945') . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } + } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Akbar_Tanjung +</uri> +<string> +Akbar Tanjung +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Charles_Margai +</uri> +<string> +Charles Margai +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Daniel_Ortega +</uri> +<string> +Daniel Ortega +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Igor_Ivanov +</uri> +<string> +Igor Ivanov +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Joe_Ghiz +</uri> +<string> +Joe Ghiz +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Joe_Robert_Pemagbi +</uri> +<string> +Joe Robert Pemagbi +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/John_Fahey_%28politician%29 +</uri> +<string> +John Fahey (politician) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/John_Olsen +</uri> +<string> +John Olsen +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jorge_Serrano_El%C3%ADas +</uri> +<string> +Jorge Serrano Elías +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Laurent_Gbagbo +</uri> +<string> +Laurent Gbagbo +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Lee_Jong-wook +</uri> +<string> +Lee Jong-wook +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Levon_Ter-Petrossian +</uri> +<string> +Levon Ter-Petrossian +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Luc_Van_den_Brande +</uri> +<string> +Luc Van den Brande +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Luiz_In%C3%A1cio_Lula_da_Silva +</uri> +<string> +Luiz Inácio Lula da Silva +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Mom%C4%8Dilo_Kraji%C5%A1nik +</uri> +<string> +Momčilo Krajišnik +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Moshe_Katsav +</uri> +<string> +Moshe Katsav +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Radovan_Karad%C5%BEi%C4%87 +</uri> +<string> +Radovan Karadžić +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Vladislav_Ardzinba +</uri> +<string> +Vladislav Ardzinba +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Zlatko_Tom%C4%8Di%C4%87 +</uri> +<string> +Zlatko Tomčić +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Yuriy_Meshkov +</uri> +<string> +Yuriy Meshkov +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Abdirahman_Mohamud_Farole +</uri> +<string> +Abdirahman Mohamud Farole +</string> +</answer> +</answers> +</question> +<question id="1"> +<string> +Who are the presidents of the United States? +</string> +<query> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX yago: <http://dbpedia.org/class/yago/> +PREFIX onto: <http://dbpedia.org/ontology/> +PREFIX res: <http://dbpedia.org/resource/> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX prop: <http://dbpedia.org/property/> +SELECT DISTINCT ?uri ?string +WHERE +{ + { + ?uri rdf:type yago:PresidentsOfTheUnitedStates. + } + UNION + { + ?uri rdf:type onto:President. + ?uri prop:title res:President_of_the_United_States. + } + OPTIONAL {?uri rdfs:label ?string. FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Abraham_Lincoln +</uri> +<string> +Abraham Lincoln +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Andrew_Jackson +</uri> +<string> +Andrew Jackson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Andrew_Johnson +</uri> +<string> +Andrew Johnson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Barack_Obama +</uri> +<string> +Barack Obama +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Benjamin_Harrison +</uri> +<string> +Benjamin Harrison +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Bill_Clinton +</uri> +<string> +Bill Clinton +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Calvin_Coolidge +</uri> +<string> +Calvin Coolidge +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Chester_A._Arthur +</uri> +<string> +Chester A. Arthur +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Dwight_D._Eisenhower +</uri> +<string> +Dwight D. Eisenhower +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Franklin_D._Roosevelt +</uri> +<string> +Franklin D. Roosevelt +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Franklin_Pierce +</uri> +<string> +Franklin Pierce +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/George_W._Bush +</uri> +<string> +George W. Bush +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/George_Washington +</uri> +<string> +George Washington +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Gerald_Ford +</uri> +<string> +Gerald Ford +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Grover_Cleveland +</uri> +<string> +Grover Cleveland +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Harry_S._Truman +</uri> +<string> +Harry S. Truman +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Herbert_Hoover +</uri> +<string> +Herbert Hoover +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_A._Garfield +</uri> +<string> +James A. Garfield +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_Buchanan +</uri> +<string> +James Buchanan +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_K._Polk +</uri> +<string> +James K. Polk +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_Madison +</uri> +<string> +James Madison +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_Monroe +</uri> +<string> +James Monroe +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Carter +</uri> +<string> +Jimmy Carter +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/John_Adams +</uri> +<string> +John Adams +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/John_Quincy_Adams +</uri> +<string> +John Quincy Adams +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/John_Tyler +</uri> +<string> +John Tyler +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Lyndon_B._Johnson +</uri> +<string> +Lyndon B. Johnson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Martin_Van_Buren +</uri> +<string> +Martin Van Buren +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Millard_Fillmore +</uri> +<string> +Millard Fillmore +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/President_of_the_United_States +</uri> +<string> +President of the United States +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Richard_Nixon +</uri> +<string> +Richard Nixon +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Ronald_Reagan +</uri> +<string> +Ronald Reagan +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Rutherford_B._Hayes +</uri> +<string> +Rutherford B. Hayes +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Theodore_Roosevelt +</uri> +<string> +Theodore Roosevelt +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Thomas_Jefferson +</uri> +<string> +Thomas Jefferson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Timeline_of_Presidents_of_the_United_States +</uri> +<string> +Timeline of Presidents of the United States +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Ulysses_S._Grant +</uri> +<string> +Ulysses S. Grant +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Warren_G._Harding +</uri> +<string> +Warren G. Harding +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/William_Henry_Harrison +</uri> +<string> +William Henry Harrison +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/William_Howard_Taft +</uri> +<string> +William Howard Taft +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/William_McKinley +</uri> +<string> +William McKinley +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Woodrow_Wilson +</uri> +<string> +Woodrow Wilson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Zachary_Taylor +</uri> +<string> +Zachary Taylor +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/George_H._W._Bush +</uri> +<string> +George H. W. Bush +</string> +</answer> +</answers> +</question> +<question id="10"> +<string> +Who was the wife of President Lincoln? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX foaf: <http://xmlns.com/foaf/0.1/> +PREFIX onto: <http://dbpedia.org/ontology/> +SELECT ?uri ?string +WHERE +{ + ?person rdf:type onto:President . + ?person foaf:surname 'Lincoln'@en . + ?person onto:spouse ?uri. + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Mary_Todd_Lincoln +</uri> +<string> +Mary Todd Lincoln +</string> +</answer> +</answers> +</question> +<question id="9"> +<string> +Who developed the video game World of Warcraft? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX onto: <http://dbpedia.org/ontology/> +SELECT ?uri ?string +WHERE +{ + ?subject rdf:type onto:Software . + ?subject rdfs:label 'World of Warcraft'@en . + ?subject onto:developer ?uri . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Blizzard_Entertainment +</uri> +<string> +Blizzard Entertainment +</string> +</answer> +</answers> +</question> +<question id="29"> +<string> +What is the official website of Tom Hanks? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX foaf: <http://xmlns.com/foaf/0.1/> +SELECT ?uri +WHERE +{ + ?subject rdfs:label 'Tom Hanks'@en . + ?subject foaf:homepage ?uri +} +</query> +<answers> +<answer> +<uri> +http://www.youtube.com/tomhankschannel +</uri> +</answer> +</answers> +</question> +<question id="37"> +<string> +List all episodes of the first season of the HBO television series The Sopranos! +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX onto: <http://dbpedia.org/ontology/> +PREFIX res: <http://dbpedia.org/resource/> +SELECT ?uri ?string +WHERE +{ + ?uri onto:series res:The_Sopranos . + ?uri onto:seasonNumber 1 . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/46_Long +</uri> +<string> +46 Long +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/A_Hit_Is_a_Hit +</uri> +<string> +A Hit Is a Hit +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Down_Neck +</uri> +<string> +Down Neck +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/I_Dream_of_Jeannie_Cusamano +</uri> +<string> +I Dream of Jeannie Cusamano +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Nobody_Knows_Anything +</uri> +<string> +Nobody Knows Anything +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Pax_Soprana +</uri> +<string> +Pax Soprana +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/The_Legend_of_Tennessee_Moltisanti +</uri> +<string> +The Legend of Tennessee Moltisanti +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Isabella_%28The_Sopranos%29 +</uri> +<string> +Isabella (The Sopranos) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Denial,_Anger,_Acceptance +</uri> +<string> +Denial, Anger, Acceptance +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Meadowlands_%28The_Sopranos%29 +</uri> +<string> +Meadowlands (The Sopranos) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/The_Sopranos_%28episode%29 +</uri> +<string> +The Sopranos (episode) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Boca_%28The_Sopranos%29 +</uri> +<string> +Boca (The Sopranos) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/College_%28The_Sopranos%29 +</uri> +<string> +College (The Sopranos) +</string> +</answer> +</answers> +</question> +<question id="31"> +<string> +Who produced the most films? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX onto: <http://dbpedia.org/ontology/> +SELECT ?uri ?string +WHERE +{ + ?film rdf:type onto:Film . + ?film onto:producer ?uri . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} ORDER BY DESC(COUNT(?film)) LIMIT 1 +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Hal_Roach +</uri> +<string> +Hal Roach +</string> +</answer> +</answers> +</question> +<question id="8"> +<string> +Which people have as their given name Jimmy? +</string> +<query> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> +PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> +PREFIX foaf: <http://xmlns.com/foaf/0.1/> +SELECT DISTINCT ?uri ?string +WHERE +{ + ?uri rdf:type foaf:Person. + ?uri foaf:givenName 'Jimmy'@en . + OPTIONAL {?uri rdfs:label ?string . FILTER (lang(?string) = 'en') } +} +</query> +<answers> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Fricke +</uri> +<string> +Jimmy Fricke +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Casella +</uri> +<string> +Jimmy Casella +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Cha +</uri> +<string> +Jimmy Cha +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_C._Green +</uri> +<string> +James C. Green +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/James_Burke_%28gangster%29 +</uri> +<string> +James Burke (gangster) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jim_Lea +</uri> +<string> +Jim Lea +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Bain +</uri> +<string> +Jimmy Bain +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Baron +</uri> +<string> +Jimmy Baron +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Baxter_%28footballer%29 +</uri> +<string> +Jimmy Baxter (footballer) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Bivins +</uri> +<string> +Jimmy Bivins +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Blythe +</uri> +<string> +Jimmy Blythe +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Bonthrone +</uri> +<string> +Jimmy Bonthrone +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Boswell +</uri> +<string> +Jimmy Boswell +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Bryant +</uri> +<string> +Jimmy Bryant +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Buffett +</uri> +<string> +Jimmy Buffett +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Butler +</uri> +<string> +Jimmy Butler +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Cannon +</uri> +<string> +Jimmy Cannon +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Carruthers +</uri> +<string> +Jimmy Carruthers +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Casper +</uri> +<string> +Jimmy Casper +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Chamberlin +</uri> +<string> +Jimmy Chamberlin +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Cobb +</uri> +<string> +Jimmy Cobb +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Cozier +</uri> +<string> +Jimmy Cozier +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Davies +</uri> +<string> +Jimmy Davies +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Daywalt +</uri> +<string> +Jimmy Daywalt +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Deenihan +</uri> +<string> +Jimmy Deenihan +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Demaret +</uri> +<string> +Jimmy Demaret +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Dickinson +</uri> +<string> +Jimmy Dickinson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Dorsey +</uri> +<string> +Jimmy Dorsey +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Duncanson +</uri> +<string> +Jimmy Duncanson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Dunne +</uri> +<string> +Jimmy Dunne +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Durante +</uri> +<string> +Jimmy Durante +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Evert +</uri> +<string> +Jimmy Evert +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Fitzmorris +</uri> +<string> +Jimmy Fitzmorris +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Fleming +</uri> +<string> +Jimmy Fleming +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Flynn +</uri> +<string> +Jimmy Flynn +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Forsyth +</uri> +<string> +Jimmy Forsyth +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Fowler +</uri> +<string> +Jimmy Fowler +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Franks_%28ice_hockey%29 +</uri> +<string> +Jimmy Franks (ice hockey) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Gallagher +</uri> +<string> +Jimmy Gallagher +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Garrison +</uri> +<string> +Jimmy Garrison +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Giuffre +</uri> +<string> +Jimmy Giuffre +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Hallinan +</uri> +<string> +Jimmy Hallinan +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Hanley +</uri> +<string> +Jimmy Hanley +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Harris +</uri> +<string> +Jimmy Harris +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Hill_%28American_football%29 +</uri> +<string> +Jimmy Hill (American football) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Hood +</uri> +<string> +Jimmy Hood +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_H%C3%B8yer +</uri> +<string> +Jimmy Høyer +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Jewel +</uri> +<string> +Jimmy Jewel +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Jones_%28basketball%29 +</uri> +<string> +Jimmy Jones (basketball) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Jones_%28singer%29 +</uri> +<string> +Jimmy Jones (singer) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Kelly_%28Irish_footballer%29 +</uri> +<string> +Jimmy Kelly (Irish footballer) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Kennedy +</uri> +<string> +Jimmy Kennedy +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Kinnon +</uri> +<string> +Jimmy Kinnon +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Kruger +</uri> +<string> +Jimmy Kruger +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Lai +</uri> +<string> +Jimmy Lai +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Leadbetter +</uri> +<string> +Jimmy Leadbetter +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Leonard +</uri> +<string> +Jimmy Leonard +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Logie +</uri> +<string> +Jimmy Logie +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_MacDonald_%28sound_effects_artist%29 +</uri> +<string> +Jimmy MacDonald (sound effects artist) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Macullar +</uri> +<string> +Jimmy Macullar +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Manone +</uri> +<string> +Jimmy Manone +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Marks +</uri> +<string> +Jimmy Marks +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Mason +</uri> +<string> +Jimmy Mason +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McCormick +</uri> +<string> +Jimmy McCormick +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McGill +</uri> +<string> +Jimmy McGill +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McGrory +</uri> +<string> +Jimmy McGrory +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McLarnin +</uri> +<string> +Jimmy McLarnin +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McMenemy +</uri> +<string> +Jimmy McMenemy +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_McNichol +</uri> +<string> +Jimmy McNichol +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Morales +</uri> +<string> +Jimmy Morales +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Mundy +</uri> +<string> +Jimmy Mundy +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Nelson +</uri> +<string> +Jimmy Nelson +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_O%27Connell +</uri> +<string> +Jimmy O'Connell +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Phelan_%28hurling%29 +</uri> +<string> +Jimmy Phelan (hurling) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Phillips_%28Texas%29 +</uri> +<string> +Jimmy Phillips (Texas) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Preston +</uri> +<string> +Jimmy Preston +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Reece +</uri> +<string> +Jimmy Reece +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Reid +</uri> +<string> +Jimmy Reid +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Roberts_%28composer%29 +</uri> +<string> +Jimmy Roberts (composer) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Roberts_%28singer%29 +</uri> +<string> +Jimmy Roberts (singer) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Rudd +</uri> +<string> +Jimmy Rudd +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Rushing +</uri> +<string> +Jimmy Rushing +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Ryan_%28footballer_born_1988%29 +</uri> +<string> +Jimmy Ryan (footballer born 1988) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Scarth +</uri> +<string> +Jimmy Scarth +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Smallhorne +</uri> +<string> +Jimmy Smallhorne +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Smith_%28musician%29 +</uri> +<string> +Jimmy Smith (musician) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Snyder +</uri> +<string> +Jimmy Snyder +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Spicer +</uri> +<string> +Jimmy Spicer +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Stewart_%28Ohio_politician%29 +</uri> +<string> +Jimmy Stewart (Ohio politician) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Taenaka +</uri> +<string> +Jimmy Taenaka +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Tapp +</uri> +<string> +Jimmy Tapp +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Van_M +</uri> +<string> +Jimmy Van M +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Ward +</uri> +<string> +Jimmy Ward +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Weldon +</uri> +<string> +Jimmy Weldon +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Wilde +</uri> +<string> +Jimmy Wilde +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Winston +</uri> +<string> +Jimmy Winston +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Wood +</uri> +<string> +Jimmy Wood +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Young_%28disc_jockey%29 +</uri> +<string> +Jimmy Young (disc jockey) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jim_Lisle +</uri> +<string> +Jim Lisle +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_%22Jax%22_Pinchak +</uri> +<string> +Jimmy "Jax" Pinchak +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Allan_%28footballer_born_1953%29 +</uri> +<string> +Jimmy Allan (footballer born 1953) +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Andrews +</uri> +<string> +Jimmy Andrews +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Archey +</uri> +<string> +Jimmy Archey +</string> +</answer> +<answer> +<uri> +http://dbpedia.org/resource/Jimmy_Aubrey +</uri> +<string> +Jim... [truncated message content] |
From: <chr...@us...> - 2011-05-03 14:22:38
|
Revision: 2779 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2779&view=rev Author: christinaunger Date: 2011-05-03 14:22:29 +0000 (Tue, 03 May 2011) Log Message: ----------- Update SPARQL Template Generation (added verbs and noun-pp constructions) Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java Added Paths: ----------- trunk/components-ext/src/main/resources/tbsl/dict/ trunk/components-ext/src/main/resources/tbsl/dict/Makefile trunk/components-ext/src/main/resources/tbsl/dict/Makefile.am trunk/components-ext/src/main/resources/tbsl/dict/Makefile.in trunk/components-ext/src/main/resources/tbsl/dict/adj.exc trunk/components-ext/src/main/resources/tbsl/dict/adv.exc trunk/components-ext/src/main/resources/tbsl/dict/cntlist trunk/components-ext/src/main/resources/tbsl/dict/cntlist.rev trunk/components-ext/src/main/resources/tbsl/dict/data.adj trunk/components-ext/src/main/resources/tbsl/dict/data.adv trunk/components-ext/src/main/resources/tbsl/dict/data.noun trunk/components-ext/src/main/resources/tbsl/dict/data.verb trunk/components-ext/src/main/resources/tbsl/dict/frames.vrb trunk/components-ext/src/main/resources/tbsl/dict/index.adj trunk/components-ext/src/main/resources/tbsl/dict/index.adv trunk/components-ext/src/main/resources/tbsl/dict/index.noun trunk/components-ext/src/main/resources/tbsl/dict/index.sense trunk/components-ext/src/main/resources/tbsl/dict/index.verb trunk/components-ext/src/main/resources/tbsl/dict/lexnames trunk/components-ext/src/main/resources/tbsl/dict/log.grind.3.0 trunk/components-ext/src/main/resources/tbsl/dict/noun.exc trunk/components-ext/src/main/resources/tbsl/dict/sentidx.vrb trunk/components-ext/src/main/resources/tbsl/dict/sents.vrb trunk/components-ext/src/main/resources/tbsl/dict/verb.Framestext trunk/components-ext/src/main/resources/tbsl/dict/verb.exc trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -27,11 +27,11 @@ final static String[] NAMED_Strings = {"named", "called"}; final static String NAME_PREDICATE = "SLOT.pred:title_name"; - static ParseGrammar filter(String taggeduserinput,LTAGLexicon grammar,List<Integer> temps) { + static ParseGrammar filter(String taggedinput,LTAGLexicon grammar,List<Integer> temps) { SlotBuilder slotbuilder = new SlotBuilder(); - List<String> input = getWordList(taggeduserinput); + List<String> input = getWordList(taggedinput); input.add(0,"#"); // This is important. Don't mess with the parser! ParseGrammar parseG = new ParseGrammar(input.size()); @@ -167,10 +167,30 @@ } System.out.println("unknown words: " + unknownWords); - List<Pair<String,String>> buildSlotFor = preprocess(taggeduserinput,unknownWords); + List<Pair<String,String>> buildSlotFor = new ArrayList<Pair<String,String>>(); + + // remove known parts + String newtaggedstring = ""; + String[] condensedparts = taggedinput.split(" "); + for (String part : condensedparts) { + if (unknownWords.contains(part.substring(0,part.indexOf("/")).toLowerCase())) { + newtaggedstring += part + " "; + } + } + newtaggedstring = newtaggedstring.trim(); + // build token-POStag-pairs + String[] newparts = newtaggedstring.trim().split(" "); + for (String s : newparts) { + if (s.contains("/")) { + buildSlotFor.add(new Pair<String,String>(s.trim().substring(0,s.indexOf("/")),s.trim().substring(s.indexOf("/")+1))); + } else { + System.out.println("Oh no, " + s + " has no POS tag!"); // DEBUG + } + } + buildSlotFor = Preprocessor.condenseNominalPhrases(buildSlotFor); System.out.println("build slot for: " + buildSlotFor + "\n"); - List<String[]> entries = slotbuilder.build(taggeduserinput,buildSlotFor); + List<String[]> entries = slotbuilder.build(taggedinput,buildSlotFor); try { for (String[] entry : entries) { @@ -267,102 +287,5 @@ return result; } - - private static List<Pair<String,String>> preprocess(String taggedstring,List<String> unknownwords) { - - List<Pair<String,String>> result = new ArrayList<Pair<String,String>>(); - - if (unknownwords.isEmpty()) { - return result; - } - - /* condense newtaggedstring: x/RBR adj/JJ > adj/JJR, x/RBS adj/JJ > adj/JJS */ - String condensedstring = taggedstring; - - String compAdjPattern = "[a-zA-Z_0-9]+/RBR.[a-zA-Z_0-9]+/JJ"; - String superAdjPattern = "[a-zA-Z_0-9]+/RBS.[a-zA-Z_0-9]+/JJ"; - String howAdjPattern = "[a-zA-Z_0-9]+/WRB.[a-zA-Z_0-9]+/JJ"; - - if (condensedstring.matches(".*" + compAdjPattern + ".*")) { - int begin = condensedstring.indexOf("RBR") + 4; - int end = begin + condensedstring.substring(condensedstring.indexOf("RBR")).indexOf("/JJ") - 4; - String adj = condensedstring.substring(begin,end); - condensedstring = condensedstring.replaceFirst(compAdjPattern,adj+"/JJR"); - } - if (condensedstring.matches(".*" + superAdjPattern + ".*")) { - int begin = condensedstring.indexOf("RBS") + 4; - int end = begin + condensedstring.substring(condensedstring.indexOf("RBS")).indexOf("/JJ") - 4; - String adj = condensedstring.substring(begin,end); - condensedstring = condensedstring.replaceFirst(superAdjPattern,adj+"/JJS"); - } - if (condensedstring.matches(".*" + howAdjPattern + ".*")) { - int begin = condensedstring.indexOf("WRB") + 4; - int end = begin + condensedstring.substring(condensedstring.indexOf("WRB")).indexOf("/JJ") - 4; - String adj = condensedstring.substring(begin,end); - condensedstring = condensedstring.replaceFirst(howAdjPattern,adj+"/JJH"); - } - - /* remove known parts */ - String newtaggedstring = ""; - String[] condensedparts = condensedstring.split(" "); - for (String part : condensedparts) { - if (unknownwords.contains(part.substring(0,part.indexOf("/")).toLowerCase())) { - newtaggedstring += part + " "; - } - } - newtaggedstring = newtaggedstring.trim(); - - /* build token-POStag-pairs */ - String[] newparts = newtaggedstring.trim().split(" "); - for (String s : newparts) { - if (s.contains("/")) { - result.add(new Pair<String,String>(s.trim().substring(0,s.indexOf("/")),s.trim().substring(s.indexOf("/")+1))); - } else { - System.out.println("Look at that, " + s + " has no POS tag!"); // DEBUG - } - } - result = extractNominalPhrases(result); - return result; - } - - private static List<Pair<String,String>> extractNominalPhrases(List<Pair<String,String>> tokenPOSpairs){ - List<Pair<String,String>> test = new ArrayList<Pair<String,String>>(); - - String nounPhrase = ""; - String phraseTag = ""; - for(Pair<String,String> pair : tokenPOSpairs){ - if(pair.snd.startsWith("NNP")){ - if(phraseTag.equals("NN")){ - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(phraseTag.trim(), "NN")); - nounPhrase = ""; - } - } - phraseTag = "NNP"; - nounPhrase += " " + pair.fst; - } else if(pair.snd.startsWith("NN")){ - if(phraseTag.equals("NNP")){ - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(phraseTag.trim(), "NNP")); - nounPhrase = ""; - } - } - phraseTag = "NN"; - nounPhrase += " " + pair.fst; - } else { - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); - nounPhrase = ""; - } - test.add(pair); - } - } - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); - nounPhrase = ""; - } - - return test; - } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -3,12 +3,19 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.dllearner.algorithm.tbsl.sem.util.Pair; + public class Preprocessor { static final String[] genericReplacements = { "\"", "", "'", "", "[!?.,;]", "" }; static final String[] englishReplacements = { "don't", "do not", "doesn't", "does not" }; + public Preprocessor() { + } + public static String normalize(String s) { return normalize(s, new String[0]); } @@ -30,5 +37,108 @@ return s; } + + public static String condense(String taggedstring) { + + /* condense: + * x/RBR adj/JJ > adj/JJR, x/RBS adj/JJ > adj/JJS, x/WRB adj/JJ > x/JJH + * nn/RBR of/IN > nn/NPREP + * */ + String condensedstring = taggedstring; + Matcher m; + + Pattern compAdjPattern = Pattern.compile("\\s(\\w+/RBR.([a-zA-Z_0-9]+)/JJ)"); + Pattern superAdjPattern = Pattern.compile("\\s(\\w+/RBS.([a-zA-Z_0-9]+)/JJ)"); + Pattern howAdjPattern = Pattern.compile("\\s(\\w+/WRB.([a-zA-Z_0-9]+)/JJ)"); + Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NNS?.of/IN)"); + Pattern passivePattern1 = Pattern.compile("(((has)|(have)|(had))/VB[A-Z]?.been/VBN.(\\w+)/VBN.by/IN)"); + Pattern passivePattern2 = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.by/IN)"); + Pattern passpartPattern = Pattern.compile("\\s((\\w+)/VBN.by/IN)"); + Pattern vpassPattern = Pattern.compile("\\s(\\w+/VBD.(\\w+)/VBN)"); + Pattern vpassinPattern = Pattern.compile("\\s((\\w+)/VPASS.\\w+/IN)"); + Pattern vprepPattern = Pattern.compile("\\s((\\w+)/V[A-Z]+\\s\\w+/IN)"); + + m = compAdjPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJR"); + } + m = superAdjPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJS"); + } + m = howAdjPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJH"); + } + m = nprepPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/NPREP"); + } + m = passivePattern1.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(6)+"/PASSIVE"); + } + m = passivePattern2.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+"/PASSIVE"); + } + m = passpartPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/PASSPART"); + } + m = vpassPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPASS"); + } + m = vpassinPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPASSIN"); + } + m = vprepPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPREP"); + } + + return condensedstring; + } + public static List<Pair<String,String>> condenseNominalPhrases(List<Pair<String,String>> tokenPOSpairs){ + List<Pair<String,String>> test = new ArrayList<Pair<String,String>>(); + + String nounPhrase = ""; + String phraseTag = ""; + for(Pair<String,String> pair : tokenPOSpairs){ + if(pair.snd.startsWith("NNP")){ + if(phraseTag.equals("NN")){ + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(phraseTag.trim(), "NN")); + nounPhrase = ""; + } + } + phraseTag = "NNP"; + nounPhrase += " " + pair.fst; + } else if(pair.snd.startsWith("NN")){ + if(phraseTag.equals("NNP")){ + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(phraseTag.trim(), "NNP")); + nounPhrase = ""; + } + } + phraseTag = "NN"; + nounPhrase += " " + pair.fst; + } else { + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); + nounPhrase = ""; + } + test.add(pair); + } + } + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); + nounPhrase = ""; + } + + return test; + } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -14,11 +14,13 @@ anchor = a; type = SlotType.UNSPEC; words = ws; + replaceUnderscores(); } public Slot(String a,SlotType t,List<String> ws) { anchor = a; type = t; words = ws; + replaceUnderscores(); } public void setSlotType(SlotType st) { @@ -36,9 +38,12 @@ anchor = s; } - public List<String> getWords(){ + public List<String> getWords() { return words; } + public void setWords(List<String> ws) { + words = ws; + } public void replaceReferent(String ref1,String ref2) { if (anchor.equals(ref1)) { @@ -46,6 +51,14 @@ } } + public void replaceUnderscores() { + ArrayList<String> newWords = new ArrayList<String>(); + for (String w : words) { + newWords.add(w.replaceAll("_"," ")); + } + words = newWords; + } + public String toString() { String out = anchor + ": " + type + " {"; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -9,9 +9,9 @@ public class SlotBuilder { private WordNet wordnet; - private String[] noun = {"NN","NNS","NNP","NNPS"}; + private String[] noun = {"NN","NNS","NNP","NNPS","NPREP"}; private String[] adjective = {"JJ","JJR","JJS","JJH"}; - private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ"}; + private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","VPREP"}; private String[] preps = {"IN"}; public SlotBuilder() { @@ -45,40 +45,127 @@ else if (pos.equals("NNP") || pos.equals("NNPS")) { type = "RESOURCE"; } - List<String> words = wordnet.getBestSynonyms(token); - words.add(0,token); + else if (pos.equals("NPREP")) { + type = "PROPERTY"; + } + List<String> words = new ArrayList<String>(); + words.add(token); + words.addAll(wordnet.getBestSynonyms(token)); String slotX = "x/" + type + "/"; - String slotP = "SLOT_" +token + "/" + type + "/"; + String slotP = "SLOT_" + token + "/" + type + "/"; for (Iterator<String> i = words.iterator(); i.hasNext();) { - String next = i.next(); + String next = i.next().replaceAll(" ","_"); slotX += next; slotP += next; if (i.hasNext()) { slotX += "^"; slotP += "^"; } } + String treetoken = "N:'" + token.toLowerCase() + "'"; + if (token.trim().contains(" ")) { + String[] tokenParts = token.split(" "); + treetoken = ""; + for (String t : tokenParts) { + treetoken += " N:'" + t.toLowerCase() + "'"; + } + treetoken = treetoken.trim(); + } if (pos.equals("NN") || pos.equals("NNS")) { /* DP */ String[] dpEntry = {token, - "(DP (NP N:'" + token.toLowerCase() + "'))", + "(DP (NP " + treetoken + "))", "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + token + "(x) ] ],[],[],[" + slotP + "]>"}; result.add(dpEntry); /* NP */ String[] npEntry = {token, - "(NP N:'" + token.toLowerCase() + "')", + "(NP " + treetoken + ")", "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(x) ] ],[],[],[" + slotP + "]>"}; result.add(npEntry); } else if (pos.equals("NNP") || pos.equals("NNPS")) { /* DP */ - String[] dpEntry = {token, - "(DP (NP N:'" + token.toLowerCase() + "'))", + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + "))", "<x,l1,<<e,t>,t>,[ l1:[ x | ] ],[],[],[" + slotX + "]>"}; - result.add(dpEntry); + String[] dpEntry2 = {token, + "(DP DET[det] (NP " + treetoken + "))", + "<x,l1,<<e,t>,t>,[ l1:[ | ] ],[(l2,x,det,e)],[l2=l1],[" + slotX + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); } + else if (pos.equals("NPREP")) { + /* DP */ + String[] dpEntry1a = {token, + "(DP (NP " + treetoken + " P:'of' DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + token + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotP + "]>"}; + String[] dpEntry1b = {token, + "(DP (NP " + treetoken + " P:'of' DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + token + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotP + "," + "SLOT_of/PROPERTY/" + "]>"}; + String[] dpEntry2a = {token, + "(DP DET[det] (NP " + treetoken + " P:'of' DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + token + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotP + "]>"}; + String[] dpEntry2b = {token, + "(DP DET[det] (NP " + treetoken + " P:'of' DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + token + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotP + "," + "SLOT_of/PROPERTY/" + "]>"}; + result.add(dpEntry1a); + result.add(dpEntry1b); + result.add(dpEntry2a); + result.add(dpEntry2b); + } } /* VERBS */ else if (equalsOneOf(pos,verb)) { + String slot = "SLOT_" + token + "/PROPERTY/" + token; + List<String> preds = wordnet.getAttributes(token); + for (Iterator<String> i = preds.iterator(); i.hasNext();) { + slot += i.next(); + if (i.hasNext()) { + slot += "^"; + } + } + if (pos.equals("PASSIVE")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("PASSPART")) { + String[] passpartEntry = {token, + "(NP NP* (VP V:'" + token + "' DP[dp]))", + "<x,l1,t,[ l1:[ | SLOT_" + token + "(y,x) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + result.add(passpartEntry); + } + else if (pos.equals("VPASS")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("VPASSIN")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("VPREP")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP")) { + String[] vEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(vEntry); + } + else if (pos.equals("VBG") || pos.equals("VBN")) { + String[] gerEntry = {token, + "(NP NP* (VP V:'" + token + "' DP[dp]))", + "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + result.add(gerEntry); + } + } /* ADJECTIVES */ else if (equalsOneOf(pos,adjective)) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -59,38 +59,47 @@ s = Preprocessor.normalize(s); String tagged = tagger.tag(s); System.out.println("Tagged input: " + tagged); + tagged = Preprocessor.condense(tagged); + System.out.println("Preprocessed: " + tagged); p.parse(tagged,g); if (p.getDerivationTrees().isEmpty()) { p.clear(g,p.getTemps()); clearAgain = false; - System.out.println("'" + s + "' could not be parsed."); + System.out.println("[Templator.java] '" + s + "' could not be parsed."); } - + else { try { for (TreeNode dtree : p.buildDerivedTrees(g)) { - if (!dtree.getAnchor().trim().equals(s.toLowerCase())) { - System.err.println("Anchors don't match the input."); + if (!dtree.getAnchor().trim().equals(tagged.toLowerCase())) { + System.err.println("[Templator.java] Anchors don't match the input. (Nevermind...)"); break; } } } catch (ParseException e) { - System.err.println("ParseException at '" + e.getMessage() + "'"); + System.err.println("[Templator.java] ParseException at '" + e.getMessage() + "'"); } + } List<DRS> drses; Set<Template> templates = new HashSet<Template>(); for (Dude dude : p.getDudes()) { -// System.out.println(dude); +// System.out.println("DUDE: " + dude); // DEBUG UDRS udrs = d2u.convert(dude); if (udrs != null) { drses = new ArrayList<DRS>(); drses.addAll(udrs.initResolve()); for (DRS drs : drses) { +// System.out.println("DRS: " + drs); // DEBUG List<Slot> slots = new ArrayList<Slot>(); slots.addAll(dude.getSlots()); +// //DEBUG +// for (Slot sl : slots) { +// System.out.println(sl); +// } +// // try { Template temp = d2s.convert(drs,slots); templates.add(temp); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-05-02 14:56:50 UTC (rev 2778) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-05-03 14:22:29 UTC (rev 2779) @@ -16,7 +16,7 @@ } public WordNet() { - path = "src/main/resources/tbsl/dictionary/"; + path = "src/main/resources/tbsl/dict/"; } public void setWordNetPath(String s) { @@ -68,11 +68,14 @@ List<String> result = new ArrayList<String>(); - Synset synset = database.getSynsets(s)[0]; - if (synset.getType().equals(SynsetType.ADJECTIVE)) { - NounSynset[] attributes = ((AdjectiveSynset) synset).getAttributes(); - for (int i = 0; i < attributes.length; i++) { - result.add(attributes[i].getWordForms()[0]); + Synset[] synsets = database.getSynsets(s); + if (synsets.length > 0) { + Synset synset = synsets[0]; + if (synset.getType().equals(SynsetType.ADJECTIVE)) { + NounSynset[] attributes = ((AdjectiveSynset) synset).getAttributes(); + for (int i = 0; i < attributes.length; i++) { + result.add(attributes[i].getWordForms()[0]); + } } } Added: trunk/components-ext/src/main/resources/tbsl/dict/Makefile =================================================================== --- trunk/components-ext/src/main/resources/tbsl/dict/Makefile (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/dict/Makefile 2011-05-03 14:22:29 UTC (rev 2779) @@ -0,0 +1,314 @@ +# Makefile.in generated by automake 1.9 from Makefile.am. +# dict/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/WordNet +pkglibdir = $(libdir)/WordNet +pkgincludedir = $(includedir)/WordNet +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/csl/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = dict +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(dictdir)" +dictDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dict_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run tar +AUTOCONF = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run autoconf +AUTOHEADER = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run autoheader +AUTOMAKE = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run automake-1.9 +AWK = nawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = egrep +EXEEXT = +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /people/wn/src/Release/3.0/Unix/missing --run makeinfo +OBJEXT = o +PACKAGE = WordNet +PACKAGE_BUGREPORT = wo...@pr... +PACKAGE_NAME = WordNet +PACKAGE_STRING = WordNet 3.0 +PACKAGE_TARNAME = wordnet +PACKAGE_VERSION = 3.0 +PATH_SEPARATOR = : +RANLIB = ranlib +SET_MAKE = +SHELL = /bin/bash +STRIP = +TCL_INCLUDE_SPEC = -I/usr/csl/include +TCL_LIB_SPEC = -L/usr/csl/lib -ltcl8.4 +TK_LIBS = -L/usr/openwin/lib -lX11 -ldl -lpthread -lsocket -lnsl -lm +TK_LIB_SPEC = -L/usr/csl/lib -ltk8.4 +TK_PREFIX = /usr/csl +TK_XINCLUDES = -I/usr/openwin/include +VERSION = 3.0 +ac_ct_CC = gcc +ac_ct_RANLIB = ranlib +ac_ct_STRIP = +ac_prefix = /usr/local/WordNet-3.0 +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /people/wn/src/Release/3.0/Unix/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = $(install_sh) -d +oldincludedir = /usr/include +prefix = /usr/local/WordNet-3.0 +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +dictdir = $(prefix)/dict +dict_DATA = adj.exc adv.exc cntlist cntlist.rev data.adj data.adv data.noun data.verb frames.vrb index.adj index.adv index.noun index.sense index.verb log.grind.3.0 noun.exc sentidx.vrb sents.vrb verb.Framestext verb.exc lexnames +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dict/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu dict/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-dictDATA: $(dict_DATA) + @$(NORMAL_INSTALL) + test -z "$(dictdir)" || $(mkdir_p) "$(DESTDIR)$(dictdir)" + @list='$(dict_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dictDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(dictdir)/$$f'"; \ + $(dictDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(dictdir)/$$f"; \ + done + +uninstall-dictDATA: + @$(NORMAL_UNINSTALL) + @list='$(dict_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dictdir)/$$f'"; \ + rm -f "$(DESTDIR)$(dictdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(dictdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dictDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dictDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dictDATA install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-dictDATA \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Added: trunk/components-ext/src/main/resources/tbsl/dict/Makefile.am =================================================================== --- trunk/components-ext/src/main/resources/tbsl/dict/Makefile.am (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/dict/Makefile.am 2011-05-03 14:22:29 UTC (rev 2779) @@ -0,0 +1,2 @@ +dictdir = $(prefix)/dict +dict_DATA = adj.exc adv.exc cntlist cntlist.rev data.adj data.adv data.noun data.verb frames.vrb index.adj index.adv index.noun index.sense index.verb log.grind.3.0 noun.exc sentidx.vrb sents.vrb verb.Framestext verb.exc lexnames Added: trunk/components-ext/src/main/resources/tbsl/dict/Makefile.in =================================================================== --- trunk/components-ext/src/main/resources/tbsl/dict/Makefile.in (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/dict/Makefile.in 2011-05-03 14:22:29 UTC (rev 2779) @@ -0,0 +1,314 @@ +# Makefile.in generated by automake 1.9 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = dict +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(dictdir)" +dictDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dict_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TCL_INCLUDE_SPEC = @TCL_INCLUDE_SPEC@ +TCL_LIB_SPEC = @TCL_LIB_SPEC@ +TK_LIBS = @TK_LIBS@ +TK_LIB_SPEC = @TK_LIB_SPEC@ +TK_PREFIX = @TK_PREFIX@ +TK_XINCLUDES = @TK_XINCLUDES@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +ac_prefix = @ac_prefix@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +dictdir = $(prefix)/dict +dict_DATA = adj.exc adv.exc cntlist cntlist.rev data.adj data.adv data.noun data.verb frames.vrb index.adj index.adv index.noun index.sense index.verb log.grind.3.0 noun.exc sentidx.vrb sents.vrb verb.Framestext verb.exc lexnames +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dict/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu dict/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-dictDATA: $(dict_DATA) + @$(NORMAL_INSTALL) + test -z "$(dictdir)" || $(mkdir_p) "$(DESTDIR)$(dictdir)" + @list='$(dict_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dictDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(dictdir)/$$f'"; \ + $(dictDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(dictdir)/$$f"; \ + done + +uninstall-dictDATA: + @$(NORMAL_UNINSTALL) + @list='$(dict_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dictdir)/$$f'"; \ + rm -f "$(DESTDIR)$(dictdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(dictdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dictDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dictDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dictDATA install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-dictDATA \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Added: trunk/components-ext/src/main/resources/tbsl/dict/adj.exc =================================================================== --- trunk/components-ext/src/main/resources/tbsl/dict/adj.exc (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/dict/adj.exc 2011-05-03 14:22:29 UTC (rev 2779) @@ -0,0 +1,1490 @@ +acer acer +after after +airier airy +airiest airy +all-arounder all-arounder +angrier angry +angriest angry +archer archer +artier arty +artiest arty +ashier ashy +ashiest ashy +assaulter assaulter +attacker attacker +backer backer +baggier baggy +baggiest baggy +balkier balky +balkiest balky +balmier balmy +balmiest balmy +bandier bandy +bandiest bandy +bargainer bargainer +barmier barmy +barmiest barmy +battier batty +battiest batty +baulkier baulky +baulkiest baulky +bawdier bawdy +bawdiest bawdy +bayer bayer +beadier beady +beadiest beady +beastlier beastly +beastliest beastly +beater beater +beefier beefy +beefiest beefy +beerier beery +beeriest beery +bendier bendy +bendiest bendy +best good +better good well +bigger big +biggest big +bitchier bitchy +bitchiest bitchy +biter biter +bittier bitty +bittiest bitty +blearier bleary +bleariest bleary +bloodier bloody +bloodiest bloody +bloodthirstier bloodthirsty +bloodthirstiest bloodthirsty +blowier blowy +blowiest blowy +blowsier blowsy +blowsiest blowsy +blowzier blowzy +blowziest blowzy +bluer blue +bluest blue +boner boner +bonier bony +boniest bony +bonnier bonny +bonniest bonny +boozier boozy +booziest boozy +boskier bosky +boskiest bosky +bossier bossy +bossiest bossy +botchier botchy +botchiest botchy +bother bother +bouncier bouncy +bounciest bouncy +bounder bounder +bower bower +brainier brainy +brainiest brainy +brashier brashy +brashiest brashy +brassier brassy +brassiest brassy +brawnier brawny +brawniest brawny +breathier breathy +breathiest breathy +breezier breezy +breeziest breezy +brinier briny +briniest briny +britisher britisher +broadcaster broadcaster +brooder brooder +broodier broody +broodiest broody +bubblier bubbly +bubbliest bubbly +buggier buggy +buggiest buggy +bulkier bulky +bulkiest bulky +bumpier bumpy +bumpiest bumpy +bunchier bunchy +bunchiest bunchy +burlier burly +burliest burly +burrier burry +burriest burry +burster burster +bushier bushy +bushiest bushy +busier busy +busiest busy +buster buster +bustier busty +bustiest busty +cagier cagey +cagiest cagey +camper camper +cannier canny +canniest canny +canter canter +cantier canty +cantiest canty +caster caster +catchier catchy +catchiest catchy +cattier catty +cattiest catty +cer cer +chancier chancy +chanciest chancy +charier chary +chariest chary +chattier chatty +chattiest chatty +cheekier cheeky +cheekiest cheeky +cheerier cheery +cheeriest cheery +cheesier cheesy +cheesiest cheesy +chestier chesty +chestiest chesty +chewier chewy +chewiest chewy +chillier chilly +chilliest chilly +chintzier chintzy +chintziest chintzy +chippier chippy +chippiest chippy +choosier choosy +choosiest choosy +choppier choppy +choppiest choppy +chubbier chubby +chubbiest chubby +chuffier chuffy +chuffiest chuffy +chummier chummy +chummiest chummy +chunkier chunky +chunkiest chunky +churchier churchy +churchiest churchy +clammier clammy +clammiest clammy +classier classy +classiest classy +cleanlier cleanly +cleanliest cleanly +clerklier clerkly +clerkliest clerkly +cloudier cloudy +cloudiest cloudy +clubbier clubby +clubbiest clubby +clumsier clumsy +clumsiest clumsy +cockier cocky +cockiest cocky +coder coder +collier colly +colliest colly +comelier comely +comeliest comely +comfier comfy +comfiest comfy +cornier corny +corniest corny +cosier cosy +cosiest cosy +costlier costly +costliest costly +costumer costumer +counterfeiter counterfeiter +courtlier courtly +courtliest courtly +cozier cozy +coziest cozy +crabbier crabby +crabbiest crabby +cracker cracker +craftier crafty +craftiest crafty +craggier craggy +craggiest craggy +crankier cranky +crankiest cranky +crasher crasher +crawlier crawly +crawliest crawly +crazier crazy +craziest crazy +creamer creamer +creamier creamy +creamiest creamy +creepier creepy +creepiest creepy +crispier crispy +crispiest crispy +crumbier crumby +crumbiest crumby +crumblier crumbly +crumbliest crumbly +crummier crummy +crummiest crummy +crustier crusty +crustiest crusty +curlier curly +curliest curly +customer customer +cuter cute +daffier daffy +daffiest daffy +daintier dainty +daintiest dainty +dandier dandy +dandiest dandy +deadlier deadly +deadliest deadly +dealer dealer +deserter deserter +dewier dewy +dewiest dewy +dicier dicey +diciest dicey +dimer dimer +dimmer dim +dimmest dim +dingier dingy +dingiest dingy +dinkier dinky +dinkiest dinky +dippier dippy +dippiest dippy +dirtier dirty +dirtiest dirty +dishier dishy +dishiest dishy +dizzier dizzy +dizziest dizzy +dodgier dodgy +dodgiest dodgy +dopier dopey +dopiest dopey +dottier dotty +dottiest dotty +doughier doughy +doughiest doughy +doughtier doughty +doughtiest doughty +dowdier dowdy +dowdiest dowdy +dowier dowie dowy +dowiest dowie dowy +downer downer +downier downy +downiest downy +dozier dozy +doziest dozy +drabber drab +drabbest drab +draftier drafty +draftiest drafty +draggier draggy +draggiest draggy +draughtier draughty +draughtiest draughty +dreamier dreamy +dreamiest dreamy +drearier dreary +dreariest dreary +dreggier dreggy +dreggiest dreggy +dresser dresser +dressier dressy +dressiest dressy +drier dry +driest dry +drippier drippy +drippiest drippy +drowsier drowsy +drowsiest drowsy +dryer dry +dryest dry +dumpier dumpy +dumpiest dumpy +dunner dun +dunnest dun +duskier dusky +duskiest dusky +dustier dusty +dustiest dusty +earlier early +earliest early +earthier earthy +earthiest earthy +earthlier earthly +earthliest earthly +easier easy +easiest easy +easter easter +eastsider eastsider +edger edger +edgier edgy +edgiest edgy +eerier eerie +eeriest eerie +emptier empty +emptiest empty +faker faker +fancier fancy +fanciest fancy +fatter fat +fattest fat +fattier fatty +fattiest fatty +faultier faulty +faultiest faulty +feistier feisty +feistiest feisty +feller feller +fiddlier fiddly +fiddliest fiddly +filmier filmy +filmiest filmy +filthier filthy +filthiest filthy +finnier finny +finniest finny +first-rater first-rater +first-stringer first-stringer +fishier fishy +fishiest fishy +fitter fit +fittest fit +flabbier flabby +flabbiest flabby +flaggier flaggy +flaggiest flaggy +flakier flaky +flakiest flaky +flasher flasher +flashier flashy +flashiest flashy +flatter flat +flattest flat +flauntier flaunty +flauntiest flaunty +fledgier fledgy +fledgiest fledgy +fleecier fleecy +fleeciest fleecy +fleshier fleshy +fleshiest fleshy +fleshlier fleshly +fleshliest fleshly +flightier flighty +flightiest flighty +flimsier flimsy +flimsiest flimsy +flintier flinty +flintiest flinty +floatier floaty +floatiest floaty +floppier floppy +floppiest floppy +flossier flossy +flossiest flossy +fluffier fluffy +fluffiest fluffy +flukier fluky +flukiest fluky +foamier foamy +foamiest foamy +foggier foggy +foggiest foggy +folder folder +folksier folksy +folksiest folksy +foolhardier foolhardy +foolhardiest foolhardy +fore-and-after fore-and-after +foreigner foreigner +forest forest +founder founder +foxier foxy +foxiest foxy +fratchier fratchy +fratchiest fratchy +freakier freaky +freakiest freaky +freer free +freest free +frenchier frenchy +frenchiest frenchy +friendlier friendly +friendliest friendly +friskier frisky +friskiest frisky +frizzier frizzy +frizziest frizzy +frizzlier frizzly +frizzliest frizzly +frostier frosty +frostiest frosty +frouzier frouzy +frouziest frouzy +frowsier frowsy +frowsiest frowsy +frowzier frowzy +frowziest frowzy +fruitier fruity +fruitiest fruity +funkier funky +funkiest funky +funnier funny +funniest funny +furrier furry +furriest furry +fussier fussy +fussiest fussy +fustier fusty +fustiest fusty +fuzzier fuzzy +fuzziest fuzzy +gabbier gabby +gabbiest gabby +gamier gamy +gamiest gamy +gammier gammy +gammiest gammy +gassier gassy +gassiest gassy +gaudier gaudy +gaudiest gaudy +gauzier gauzy +gauziest gauzy +gawkier gawky +gawkiest gawky +ghastlier ghastly +ghastliest ghastly +ghostlier ghostly +ghostliest ghostly +giddier giddy +giddiest giddy +gladder glad +gladdest glad +glassier glassy +glassiest glassy +glibber glib +glibbest glib +gloomier gloomy +gloomiest gloomy +glossier glossy +glossiest glossy +glummer glum +glummest glum +godlier godly +godliest godly +goer goer +goner goner +goodlier goodly +goodliest goodly +goofier goofy +goofiest goofy +gooier gooey +gooiest gooey +goosier goosy +goosiest goosy +gorier gory +goriest gory +gradelier gradely +gradeliest gradely +grader grader +grainier grainy +grainiest grainy +grassier grassy +grassiest grassy +greasier greasy +greasiest greasy +greedier greedy +greediest greedy +grimmer grim +grimmest grim +grislier grisly +grisliest grisly +grittier gritty +grittiest gritty +grizzlier grizzly +grizzliest grizzly +groggier groggy +groggiest groggy +groovier groovy +grooviest groovy +grottier grotty +grottiest grotty +grounder grounder +grouper grouper +groutier grouty +groutiest grouty +grubbier grubby +grubbiest grubby +grumpier grumpy +grumpiest grumpy +guest guest +guiltier guilty +guiltiest guilty +gummier gummy +gummiest gummy +gushier gushy +gushiest gushy +gustier gusty +gustiest gusty +gutsier gutsy +gutsiest gutsy +hairier hairy +hairiest hairy +halfways halfway +halter halter +hammier hammy +hammiest hammy +handier handy +handiest handy +happier happy +happiest happy +hardier hardy +hardiest hardy +hastier hasty +hastiest hasty +haughtier haughty +haughtiest haughty +hazier hazy +haziest hazy +header header +headier heady +headiest heady +healthier healthy +healthiest healthy +heartier hearty +heartiest hearty +heavier heavy +heaviest heavy +heftier hefty +heftiest hefty +hepper hep +heppest hep +herbier herby +herbiest herby +hinder hind +hipper hip +hippest hip +hippier hippy +hippiest hippy +hoarier hoary +hoariest hoary +holier holy +holiest holy +homelier homely +homeliest homely +homer homer +homier homey +homiest homey +hornier horny +horniest horny +horsier horsy +horsiest horsy +hotter hot +hottest hot +humpier humpy +humpiest humpy +hunger hunger +hungrier hungry +hungriest hungry +huskier husky +huskiest husky +icier icy +iciest icy +inkier inky +inkiest inky +insider insider +interest interest +jaggier jaggy +jaggiest jaggy +jammier jammy +jammiest jammy +jauntier jaunty +jauntiest jaunty +jazzier jazzy +jazziest jazzy +jerkier jerky +jerkiest jerky +jointer jointer +jollier jolly +jolliest jolly +juicier juicy +juiciest juicy +jumpier jumpy +jumpiest jumpy +kindlier kindly +kindliest kindly +kinkier kinky +kinkiest kinky +knottier knotty +knottiest knotty +knurlier knurly +knurliest knurly +kookier kooky +kookiest kooky +lacier lacy +laciest lacy +lairier lairy +lairiest lairy +lakier laky +lakiest laky +lander lander +lankier lanky +lankiest lanky +lathier lathy +lathiest lathy +layer layer +lazier lazy +laziest lazy +leafier leafy +leafiest leafy +leakier leaky +leakiest leaky +learier leary +leariest leary +leer leer +leerier leery +leeriest leery +left-hander left-hander +left-winger left-winger +leggier leggy +leggiest leggy +lengthier lengthy +lengthiest lengthy +ler ler +leveler leveler +limier limy +limiest limy +lippier lippy +lippiest lippy +liter liter +livelier lively +liveliest lively +liver liver +loather loather +loftier lofty +loftiest lofty +logier logy +logiest logy +lonelier lonely +loneliest lonely +loner loner +loonier loony +looniest loony +loopier loopy +loopiest loopy +lordlier lordly +lordliest lordly +lousier lousy +lousiest lousy +lovelier lovely +loveliest lovely +lowlander lowlander +lowlier lowly +lowliest lowly +luckier lucky +luckiest lucky +lumpier lumpy +lumpiest lumpy +lunier luny +luniest luny +lustier lusty +lustiest lusty +madder mad +maddest mad +mainer mainer +maligner maligner +maltier malty +maltiest malty +mangier mangy +mangiest mangy +mankier manky +mankiest manky +manlier manly +manliest manly +mariner mariner +marshier marshy +marshiest marshy +massier massy +massiest massy +matter matter +maungier maungy +maungiest maungy +mazier mazy +maziest mazy +mealier mealy +mealiest mealy +measlier measly +measliest measly +meatier meaty +meatiest meaty +meeter meeter +merrier merry +merriest merry +messier messy +messiest messy +miffier miffy +miffiest miffy +mightier mighty +mightiest mighty +milcher milcher +milker milker +milkier milky +milkiest milky +mingier mingy +mingiest mingy +minter minter +mirkier mirky +mirkiest mirky +miser miser +mistier misty +mistiest misty +mocker mocker +modeler modeler +modest modest +moldier moldy +moldiest moldy +moodier moody +moodiest moody +moonier moony +mooniest moony +mothier mothy +mothiest mothy +mouldier mouldy +mouldiest mouldy +mousier mousy +mousiest mousy +mouthier mouthy +mouthiest mouthy +muckier mucky +muckiest mucky +muddier muddy +muddiest muddy +muggier muggy +muggiest muggy +multiplexer multiplexer +murkier murky +murkiest murky +mushier mushy +mushiest mushy +muskier musky +muskiest musky +muster muster +mustier musty +mustiest musty +muzzier muzzy +muzziest muzzy +nappier nappy +nappiest nappy +nastier nasty +nastiest nasty +nattier natty +nattiest natty +naughtier naughty +naughtiest naughty +needier needy +neediest needy +nervier nervy +nerviest nervy +newsier newsy +newsiest newsy +niftier nifty +niftiest nifty +nippier nippy +nippiest nippy +nittier nitty +nittiest nitty +noisier noisy +noisiest noisy +northeasterner northeasterner +norther norther +northerner northerner +nosier nosy +nosiest nosy +number number +nuttier nutty +nuttiest nutty +offer off +offer offer +oilier oily +oiliest oily +old-timer old-timer +oliver oliver +oozier oozy +ooziest oozy +opener opener +outsider outsider +overcomer overcomer +overnighter overnighter +owner owner +pallier pally +palliest pally +palmier palmy +palmiest palmy +paltrier paltry +paltriest paltry +pappier pappy +pappiest pappy +parkier parky +parkiest parky +part-timer part-timer +passer passer +paster paster +pastier pasty +pastiest pasty +patchier patchy +patchiest patchy +pater pater +pawkier pawky +pawkiest pawky +peachier peachy +peachiest peachy +pearler pearler +pearlier pearly +pearlie... [truncated message content] |
From: <chr...@us...> - 2011-05-06 16:02:36
|
Revision: 2784 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2784&view=rev Author: christinaunger Date: 2011-05-06 16:02:30 +0000 (Fri, 06 May 2011) Log Message: ----------- Update: SPARQL Template Generation Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -47,17 +47,22 @@ String condensedstring = taggedstring; Matcher m; - Pattern compAdjPattern = Pattern.compile("\\s(\\w+/RBR.([a-zA-Z_0-9]+)/JJ)"); - Pattern superAdjPattern = Pattern.compile("\\s(\\w+/RBS.([a-zA-Z_0-9]+)/JJ)"); - Pattern howAdjPattern = Pattern.compile("\\s(\\w+/WRB.([a-zA-Z_0-9]+)/JJ)"); - Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NNS?.of/IN)"); - Pattern passivePattern1 = Pattern.compile("(((has)|(have)|(had))/VB[A-Z]?.been/VBN.(\\w+)/VBN.by/IN)"); - Pattern passivePattern2 = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.by/IN)"); - Pattern passpartPattern = Pattern.compile("\\s((\\w+)/VBN.by/IN)"); - Pattern vpassPattern = Pattern.compile("\\s(\\w+/VBD.(\\w+)/VBN)"); - Pattern vpassinPattern = Pattern.compile("\\s((\\w+)/VPASS.\\w+/IN)"); - Pattern gerundinPattern = Pattern.compile("\\s((\\w+)/((VBG)|(VBN)).\\w+/IN)"); - Pattern vprepPattern = Pattern.compile("\\s((\\w+)/V[A-Z]+\\s\\w+/IN)"); + Pattern compAdjPattern = Pattern.compile("\\s(\\w+/RBR.([a-zA-Z_0-9]+)/JJ)"); + Pattern superAdjPattern = Pattern.compile("\\s(\\w+/RBS.([a-zA-Z_0-9]+)/JJ)"); + Pattern howAdjPattern = Pattern.compile("\\s(\\w+/WRB.([a-zA-Z_0-9]+)/JJ)"); + Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NNS?.of/IN)"); + Pattern didPattern = Pattern.compile("(?i)(\\s((did)|(do)|(does))/VB.?)\\s"); + Pattern passivePattern1a = Pattern.compile("(((has)|(have)|(had))/VB[A-Z]?.been/VBN.(\\w+)/VBN.by/IN)"); + Pattern passivePattern1b = Pattern.compile("(\\s((has)|(have)|(had))/VB[A-Z]?(.+\\s)been/VBN\\s(\\w+)/VB(N|D))"); + Pattern passivePattern2a = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.by/IN)"); + Pattern passivePattern2b = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(.+)(\\s\\w+)/VB(N|D))"); + Pattern passpartPattern = Pattern.compile("\\s((\\w+)/VBN.by/IN)"); + Pattern vpassPattern = Pattern.compile("\\s(\\w+/VBD.(\\w+)/VBN)"); + Pattern vpassinPattern = Pattern.compile("\\s((\\w+)/VPASS.\\w+/IN)"); + Pattern gerundinPattern = Pattern.compile("\\s((\\w+)/((VBG)|(VBN)).\\w+/IN)"); + Pattern vprepPattern = Pattern.compile("\\s((\\w+)/V[A-Z]+\\s\\w+/(IN|TO))"); + Pattern whenPattern = Pattern.compile("(?i)(when/WRB\\s(.+\\s)(\\w+)/((V[A-Z]+)|(PASS[A-Z]+)))"); + Pattern wherePattern = Pattern.compile("(?i)(where/WRB\\s(.+\\s)(\\w+)/((V[A-Z]+)|(PASS[A-Z]+)))"); m = compAdjPattern.matcher(condensedstring); while (m.find()) { @@ -75,14 +80,26 @@ while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/NPREP"); } - m = passivePattern1.matcher(condensedstring); + m = didPattern.matcher(condensedstring); while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),""); + } + m = passivePattern1a.matcher(condensedstring); + while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(6)+"/PASSIVE"); } - m = passivePattern2.matcher(condensedstring); + m = passivePattern1b.matcher(condensedstring); while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(6) + m.group(7)+"/PASSIVE"); + } + m = passivePattern2a.matcher(condensedstring); + while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+"/PASSIVE"); } + m = passivePattern2b.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7) + m.group(8)+"/PASSIVE"); + } m = passpartPattern.matcher(condensedstring); while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/PASSPART"); @@ -103,47 +120,49 @@ while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPREP"); } + m = whenPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2) + m.group(3)+"/WHEN"); + } + m = wherePattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2) + m.group(3)+"/WHERE"); + } return condensedstring; } - public static List<Pair<String,String>> condenseNominalPhrases(List<Pair<String,String>> tokenPOSpairs){ - List<Pair<String,String>> test = new ArrayList<Pair<String,String>>(); + public static List<Pair<String,String>> condenseNominalPhrases(List<Pair<String,String>> tokenPOSpairs) { - String nounPhrase = ""; - String phraseTag = ""; - for(Pair<String,String> pair : tokenPOSpairs){ - if(pair.snd.startsWith("NNP")){ - if(phraseTag.equals("NN")){ - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(phraseTag.trim(), "NN")); - nounPhrase = ""; - } - } - phraseTag = "NNP"; - nounPhrase += " " + pair.fst; - } else if(pair.snd.startsWith("NN")){ - if(phraseTag.equals("NNP")){ - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(phraseTag.trim(), "NNP")); - nounPhrase = ""; - } - } - phraseTag = "NN"; - nounPhrase += " " + pair.fst; - } else { - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); - nounPhrase = ""; - } - test.add(pair); - } + List<Pair<String,String>> out = new ArrayList<Pair<String,String>>(); + + String flat = ""; + for (Pair<String,String> p : tokenPOSpairs) { + flat += " " + p.fst.trim() + "/" + p.snd.trim(); } - if(!nounPhrase.isEmpty()){ - test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); - nounPhrase = ""; + flat = flat.trim(); + + Matcher m; + Pattern nnpPattern = Pattern.compile("\\s?((\\w+)/NNP[S]?\\s(\\w+))/NNP[S]?"); + Pattern nnPattern = Pattern.compile("\\s?((\\w+)/NN[S]?\\s(\\w+))/NN[S]?"); + + m = nnpPattern.matcher(flat); + while (m.find()) { + flat = flat.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); } + m = nnPattern.matcher(flat); + while (m.find()) { + flat = flat.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); + } - return test; + System.out.println("NNP stuff: " + flat); + + String[] flatParts = flat.split(" "); + for (String part : flatParts) { + System.out.println(part); + out.add(new Pair<String,String>(part.substring(0,part.indexOf("/")).replaceAll("_"," "), part.substring(part.indexOf("/")+1))); + } + + return out; } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -20,6 +20,7 @@ } public POStagger() throws IOException, ClassNotFoundException { taggermodel = "src/main/resources/tbsl/models/bidirectional-distsim-wsj-0-18.tagger"; + //taggermodel = "src/main/resources/tbsl/models/left3words-wsj-0-18.tagger"; tagger = new MaxentTagger(taggermodel); } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -11,7 +11,7 @@ private WordNet wordnet; private String[] noun = {"NN","NNS","NNP","NNPS","NPREP"}; private String[] adjective = {"JJ","JJR","JJS","JJH"}; - private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP"}; + private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; private String[] preps = {"IN"}; public SlotBuilder() { @@ -50,7 +50,9 @@ } List<String> words = new ArrayList<String>(); words.add(token); - words.addAll(wordnet.getBestSynonyms(token)); + if (!pos.equals("NNP") && !pos.equals("NNPS")) { + words.addAll(wordnet.getBestSynonyms(token)); + } String tokenfluent = token.replaceAll(" ",""); String slotX = "x/" + type + "/"; @@ -125,10 +127,14 @@ } } if (pos.equals("PASSIVE")) { - String[] passEntry = {token, + String[] passEntry1 = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; - result.add(passEntry); + String[] passEntry2 = {token, + "(S DP[wh] (VP DP[dp] V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,wh,<<e,t>,t>),(l3,y,dp,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry1); + result.add(passEntry2); } else if (pos.equals("PASSPART")) { String[] passpartEntry = {token, @@ -164,7 +170,7 @@ "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; result.add(passEntry); } - else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP")) { + else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP") || pos.equals("VB")) { String[] vEntry = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; @@ -176,6 +182,32 @@ "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; result.add(gerEntry); } + else if (pos.equals("WHEN")) { + String dateSlot = "SLOT_" + token + "/PROPERTY/" + token + "Date"; + String tokenSlot = "SLOT_" + token + "/PROPERTY/" + token; + String[] whenEntry1 = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[ ?y | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>)],[ l2=l1 ],[ " + dateSlot + " ]>"}; + String[] whenEntry2 = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ ?z | SLOT_" + token + "(x,y), SLOT_date(x,z) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ]," + + "[" + tokenSlot + ", SLOT_date/PROPERTY/date ]>"}; + result.add(whenEntry1); + result.add(whenEntry2); + } + else if (pos.equals("WHERE")) { + String placeSlot = "SLOT_" + token + "/PROPERTY/" + token + "Place"; + String tokenSlot = "SLOT_" + token + "/PROPERTY/" + token; + String[] whereEntry1 = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[ ?y | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>)],[ l2=l1 ],[ " + placeSlot + " ]>"}; + String[] whereEntry2 = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ ?z | SLOT_" + token + "(x,y), SLOT_place(x,z) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ]," + + "[" + tokenSlot + ", SLOT_place/PROPERTY/place ]>"}; + result.add(whereEntry1); + result.add(whereEntry2); + } } /* ADJECTIVES */ Modified: trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex =================================================================== --- trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-05-06 16:02:30 UTC (rev 2784) @@ -1,12 +1,6 @@ -// TEST -//------ - - mushrooms || (NP N:'mushrooms') || <x,l1,<e,t>,[ l1:[ | mushroom(x) ] ], [],[],[]> - - // TO BE -// -------- +// ------ is || (S DP[subject] (VP V:'is' DP[object])) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> is || (S DP[subject] (VP V:'is' ADJ[comp])) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> @@ -24,7 +18,19 @@ is there || (S V:'is' C:'there' DP[dp]) || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> +// TO BE: YES/NO QUESTIONS + is || (S V:'is' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> + is || (S V:'is' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> + was || (S V:'was' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> + was || (S V:'was' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> + are || (S V:'are' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> + are || (S V:'are' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> + were || (S V:'were' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> + were || (S V:'were' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> + + did || (S V:'did' S*) || <x,l1,t,[ l1:[|] ],[],[],[]> + // IMPERATIVES // --------------------- @@ -80,18 +86,23 @@ more than || (DP DET:'more' DET:'than' NUM[num] NP[np]) || <x,l1,<<e,t>,t>,[ l1:[ c | count(y,c), greater(c,z) ] ],[(l2,y,np,<e,t>),(l3,z,num,e)],[l2=l1,l3=l1],[]> less than || (DP DET:'less' DET:'than' NUM[num] NP[np]) || <x,l1,<<e,t>,t>,[ l1:[ c | count(y,c), less(c,z) ] ],[(l2,y,np,<e,t>),(l3,z,num,e)],[l2=l1,l3=l1],[]> + // EMPTY STUFF +// ------------ also || (VP ADV:'also' VP*) || <x,l1,t,[ l1:[|] ],[],[],[]> + // WH WORDS // -------- - what || (DP WH:'what') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> - which || (DP WH:'which') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> + what || (DP WH:'what') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> + which || (DP WH:'which') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> how many || (DP WH:'how' ADJ:'many' NP[noun]) || <y, l1, <<e,t>,t>, [ l1:[ | l2:[ y | ] HOWMANY y l3:[|] ] ], [ (l4,y,noun,<e,t>) ], [ l4=l2 ],[]> - who || (DP WH:'who') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> + who || (DP WH:'who') || <x, l1, <<e,t>,t>, [ l1:[ ?x | ] ], [], [], []> + when || (S WH:'when' S[s]) || <x, l1, <<e,t>,t>, [ l1:[ ?x | SLOT_p(y,x) ] ], [(l2,y,s,t)], [l2=l1], [ SLOT_p/PROPERTY/date ]> + where || (S WH:'where' S[s]) || <x, l1, <<e,t>,t>, [ l1:[ ?x | SLOT_p(y,x) ] ], [(l2,y,s,t)], [l2=l1], [ SLOT_p/PROPERTY/place ]> // NEGATION @@ -104,7 +115,7 @@ do not || (VP V:'do' NEG:'not' VP*) || <x,l2,t,[ l1:[ | NOT l2:[|] ] ],[],[],[]> -// CONJUNCTION +// COORDINATION // ------------ and || (S S* CC:'and' S[s]) || <x,l1,t,[l1:[|]],[(l2,y,s,t)],[l1=l2],[]> @@ -113,6 +124,8 @@ and || (VP VP* CC:'and' VP[vp]) || - and || (ADJ ADJ* CC:'and' ADJ[adj]) || - + as well as || (NP NP* CC:'as' CC:'well' CC:'as' NP[np]) || <x,l1,<e,t>,[l1:[|]],[(l2,y,np,<e,t>)],[l1=l2],[]> + or || (S S* CC:'or' S[2]) || - or || (DP DP* CC:'or' DP[2]) || - or || (NP NP* CC:'or' NP[2]) || - Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -8,13 +8,27 @@ public static void main(String[] args) throws IOException, ClassNotFoundException { + POStagger tagger = new POStagger(); - String sentence = "give me all cities in Germany"; + String sentence = "When did Nirvana record Nevermind?"; String tagged = tagger.tag(sentence); System.out.println(tagged); + +// Tagger tagger = new Tagger("en"); +// +// String s = ""; +// +// String[] words = s.split(" "); +// String[] tagged; +// +// tagged = tagger.tag(words); +// +// for (String string : tagged) { +// System.out.println(string); +// } } } Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -11,13 +11,13 @@ public static void main(String[] args) { // TODO Auto-generated method stub - String s = "was/VBD developed/VBN by/IN"; + String s = "how/WRB many/JJ software/NN companies/NN are/VBP located/VBN in/IN New/NNP York/NNP"; - Pattern nprepPattern = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.by/IN)"); + Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NN[S]?\\s(\\w+))/NN[S]?"); Matcher m = nprepPattern.matcher(s); while (m.find()) { System.out.println("Found!"); - s = s.replaceFirst(m.group(1),m.group(7)+"/PASSIVE"); + s = s.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); } System.out.println(s); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java 2011-05-04 10:00:34 UTC (rev 2783) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java 2011-05-06 16:02:30 UTC (rev 2784) @@ -54,7 +54,7 @@ * @param args */ public static void main(String[] args) { - File file = new File("src/main/resources/tbsl/evaluation/dbpedia-train.xml"); + File file = new File("src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml"); List<String> questions = readQuestions(file); Templator templateGenerator = new Templator(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-05-09 13:37:41
|
Revision: 2787 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2787&view=rev Author: christinaunger Date: 2011-05-09 13:37:35 +0000 (Mon, 09 May 2011) Log Message: ----------- Update SPARQL Template Generation Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParserTokenManager.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAG_Parser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/ParseException.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/SimpleCharStream.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/Token.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/TokenMgrError.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -27,10 +27,10 @@ final static String[] NAMED_Strings = {"named", "called"}; static ParseGrammar filter(String taggedinput,LTAGLexicon grammar,List<Integer> temps) { - + SlotBuilder slotbuilder = new SlotBuilder(); - List<String> input = getWordList(taggedinput); + List<String> input = getWordList(taggedinput.trim()); input.add(0,"#"); // This is important. Don't mess with the parser! ParseGrammar parseG = new ParseGrammar(input.size()); @@ -75,7 +75,7 @@ for (Pair<String,String> p : named) { try { - TreeNode tree = c.construct(p.getFirst()); + TreeNode tree = c.construct(p.getFirst().replaceAll("_"," ")); int gid = grammar.addTree(grammar.size(), new Pair<String,TreeNode>(token,tree), Collections.singletonList(p.getSecond())); add(parseG, tree, gid-1, localID); @@ -176,7 +176,7 @@ newtaggedstring += part + " "; } } - newtaggedstring = newtaggedstring.trim(); + // build token-POStag-pairs String[] newparts = newtaggedstring.trim().split(" "); for (String s : newparts) { @@ -185,8 +185,7 @@ } else { System.out.println("Oh no, " + s + " has no POS tag!"); // DEBUG } - } - buildSlotFor = Preprocessor.condenseNominalPhrases(buildSlotFor); + } System.out.println("build slot for: " + buildSlotFor + "\n"); List<String[]> entries = slotbuilder.build(taggedinput,buildSlotFor); @@ -282,9 +281,11 @@ List<String> result = new ArrayList<String>(); for (String s : string.split(" ")) { - result.add(s.substring(0,s.indexOf("/"))); + result.add(s.substring(0,s.indexOf("/"))); } + System.out.println("Word list: " + result); + return result; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -132,37 +132,32 @@ return condensedstring; } - public static List<Pair<String,String>> condenseNominalPhrases(List<Pair<String,String>> tokenPOSpairs) { + public static String condenseNominals(String s) { - List<Pair<String,String>> out = new ArrayList<Pair<String,String>>(); - - String flat = ""; - for (Pair<String,String> p : tokenPOSpairs) { - flat += " " + p.fst.trim() + "/" + p.snd.trim(); - } - flat = flat.trim(); + String flat = s; Matcher m; - Pattern nnpPattern = Pattern.compile("\\s?((\\w+)/NNP[S]?\\s(\\w+))/NNP[S]?"); - Pattern nnPattern = Pattern.compile("\\s?((\\w+)/NN[S]?\\s(\\w+))/NN[S]?"); + Pattern nnpPattern = Pattern.compile("\\s?((\\w+)/NNP[S]?\\s(\\w+))/NNP[S]?(\\W|$)"); + Pattern nnPattern = Pattern.compile("\\s?((\\w+)/NN[S]?\\s(\\w+))/NN[S]?(\\W|$)"); + Pattern nnnnpPattern = Pattern.compile("\\s?((\\w+)/NNP[S]?)\\s(\\w+)/NN[S]?(\\W|$)"); m = nnpPattern.matcher(flat); while (m.find()) { flat = flat.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); } + m = nnpPattern.matcher(flat); + while (m.find()) { + flat = flat.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); + } m = nnPattern.matcher(flat); while (m.find()) { flat = flat.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); } - - System.out.println("NNP stuff: " + flat); - - String[] flatParts = flat.split(" "); - for (String part : flatParts) { - System.out.println(part); - out.add(new Pair<String,String>(part.substring(0,part.indexOf("/")).replaceAll("_"," "), part.substring(part.indexOf("/")+1))); + m = nnnnpPattern.matcher(flat); + while (m.find()) { + flat = flat.replaceFirst(m.group(1),m.group(2) + "/JJ"); } - - return out; + + return flat; } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParser.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParser.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -2,16 +2,11 @@ package org.dllearner.algorithm.tbsl.ltag.reader; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import org.dllearner.algorithm.tbsl.ltag.data.*; +import org.dllearner.algorithm.tbsl.ltag.agreement.*; -import org.dllearner.algorithm.tbsl.ltag.agreement.Feature; -import org.dllearner.algorithm.tbsl.ltag.data.Category; -import org.dllearner.algorithm.tbsl.ltag.data.FootNode; -import org.dllearner.algorithm.tbsl.ltag.data.SubstNode; -import org.dllearner.algorithm.tbsl.ltag.data.TerminalNode; -import org.dllearner.algorithm.tbsl.ltag.data.Tree; -import org.dllearner.algorithm.tbsl.ltag.data.TreeNode; - public class LTAGTreeParser implements LTAGTreeParserConstants { /** Main entry point. */ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParserTokenManager.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParserTokenManager.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAGTreeParserTokenManager.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -1,5 +1,10 @@ /* Generated By:JavaCC: Do not edit this line. LTAGTreeParserTokenManager.java */ package org.dllearner.algorithm.tbsl.ltag.reader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.dllearner.algorithm.tbsl.ltag.data.*; +import org.dllearner.algorithm.tbsl.ltag.agreement.*; /** Token Manager. */ public class LTAGTreeParserTokenManager implements LTAGTreeParserConstants @@ -100,21 +105,21 @@ switch(jjstateSet[--i]) { case 2: - if ((0x7fffffeL & l) != 0L) + if ((0x7fffffe80000000L & l) != 0L) { + if (kind > 11) + kind = 11; + jjCheckNAdd(0); + } + else if ((0x7fffffeL & l) != 0L) + { if (kind > 12) kind = 12; jjCheckNAdd(1); } - else if ((0x7fffffe00000000L & l) != 0L) - { - if (kind > 11) - kind = 11; - jjCheckNAdd(0); - } break; case 0: - if ((0x7fffffe00000000L & l) == 0L) + if ((0x7fffffe80000000L & l) == 0L) break; kind = 11; jjCheckNAdd(0); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAG_Parser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAG_Parser.jj 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/LTAG_Parser.jj 2011-05-09 13:37:35 UTC (rev 2787) @@ -21,13 +21,13 @@ PARSER_BEGIN(LTAGTreeParser) -package ltag.reader; +package org.dllearner.algorithm.tbsl.ltag.reader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import ltag.data.*; -import ltag.agreement.*; +import org.dllearner.algorithm.tbsl.ltag.data.*; +import org.dllearner.algorithm.tbsl.ltag.agreement.*; public class LTAGTreeParser { @@ -202,7 +202,7 @@ } } -TOKEN: {<WORD: (["a"-"z"]|["0"-"9"]|["?"]|["-"]|["!"]|[","]|[";"]|["."]|[":"]|["/"])+>} +TOKEN: {<WORD: (["a"-"z"]|["0"-"9"]|["?"]|["-"]|["_"]|["!"]|[","]|[";"]|["."]|[":"]|["/"])+>} TOKEN: {<CATEGORY: (["A"-"Z"])+>} Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/ParseException.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/ParseException.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/ParseException.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -184,4 +184,4 @@ } } -/* JavaCC - OriginalChecksum=83ef9865be98df5303271061c019e2cd (do not edit this line) */ +/* JavaCC - OriginalChecksum=3c249cda5771570567da479d4816c9e8 (do not edit this line) */ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/SimpleCharStream.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/SimpleCharStream.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/SimpleCharStream.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -468,4 +468,4 @@ } } -/* JavaCC - OriginalChecksum=a11c4feda26a580a0ed87cfec6fef57f (do not edit this line) */ +/* JavaCC - OriginalChecksum=6f78e8f501021ab7dfa602bb3724055c (do not edit this line) */ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/Token.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/Token.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/Token.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -128,4 +128,4 @@ } } -/* JavaCC - OriginalChecksum=86ab0d8d1ea8fe24b02fb84bc0089ecf (do not edit this line) */ +/* JavaCC - OriginalChecksum=67903b6a4b68c2296c1fa28eb89303c2 (do not edit this line) */ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/TokenMgrError.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/TokenMgrError.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/reader/TokenMgrError.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -144,4 +144,4 @@ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); } } -/* JavaCC - OriginalChecksum=a1db3550bf73c10ce8a15134b3c45c2a (do not edit this line) */ +/* JavaCC - OriginalChecksum=c1534bb74977aaf9daef2e021f7f41e9 (do not edit this line) */ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -108,10 +108,18 @@ String[] dpEntry2b = {token, "(DP DET[det] (NP " + treetoken + " DP[pobj]))", "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotP + "," + "SLOT_of/PROPERTY/" + "]>"}; + String[] npEntry1 = {token, + "(NP " + treetoken + " DP[pobj])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotP + "]>"}; + String[] npEntry2 = {token, + "(NP " + treetoken + " DP[pobj])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotP + "," + "SLOT_of/PROPERTY/" + "]>"}; result.add(dpEntry1a); result.add(dpEntry1b); result.add(dpEntry2a); result.add(dpEntry2b); + result.add(npEntry1); + result.add(npEntry2); } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -59,11 +59,13 @@ s = Preprocessor.normalize(s); String tagged = tagger.tag(s); System.out.println("Tagged input: " + tagged); - tagged = Preprocessor.condense(tagged); - System.out.println("Preprocessed: " + tagged); - p.parse(tagged,g); + String newtagged = Preprocessor.condenseNominals(tagged); + newtagged = Preprocessor.condense(newtagged); + System.out.println("Preprocessed: " + newtagged); + p.parse(newtagged,g); + if (p.getDerivationTrees().isEmpty()) { p.clear(g,p.getTemps()); clearAgain = false; Modified: trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex =================================================================== --- trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-05-09 13:37:35 UTC (rev 2787) @@ -20,8 +20,8 @@ // TO BE: YES/NO QUESTIONS - is || (S V:'is' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> - is || (S V:'is' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> + is || (S (VP V:'is' DP[subject] DP[object])) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> + is || (S (VP V:'is' DP[subject] ADJ[comp])) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> was || (S V:'was' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> was || (S V:'was' DP[subject] ADJ[comp]) || <x, l1, t, [ l1:[ | x=y ]], [ (l2,x,subject,<<e,t>,t>), (l3,y,comp,<e,t>) ], [ l2=l1, l3=l2 ],[]> are || (S V:'are' DP[subject] DP[object]) || <x, l1, t, [ l1:[ | ], l2:[ | x=y ] ], [ (l3,x,subject,<<e,t>,t>), (l4,y,object,<<e,t>,t>) ], [ l3<l1, l4<l1, l2<scope(l3), l2<scope(l4) ],[]> @@ -86,12 +86,15 @@ more than || (DP DET:'more' DET:'than' NUM[num] NP[np]) || <x,l1,<<e,t>,t>,[ l1:[ c | count(y,c), greater(c,z) ] ],[(l2,y,np,<e,t>),(l3,z,num,e)],[l2=l1,l3=l1],[]> less than || (DP DET:'less' DET:'than' NUM[num] NP[np]) || <x,l1,<<e,t>,t>,[ l1:[ c | count(y,c), less(c,z) ] ],[(l2,y,np,<e,t>),(l3,z,num,e)],[l2=l1,l3=l1],[]> + // HOW + how || (DP DET:'how' ADJ[adj]) || <x,l1,<<e,t>,t>,[ l1:[?x|] ],[ (x,l2,adj,<e,t>) ],[l2=l1],[]> // EMPTY STUFF // ------------ also || (VP ADV:'also' VP*) || <x,l1,t,[ l1:[|] ],[],[],[]> + also || (DP ADV:'also' DP*) || <x,l1,<<e,t>,t>,[ l1:[|] ],[],[],[]> // WH WORDS Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -11,13 +11,13 @@ public static void main(String[] args) { // TODO Auto-generated method stub - String s = "how/WRB many/JJ software/NN companies/NN are/VBP located/VBN in/IN New/NNP York/NNP"; + String s = "New/NNP York/NNP City/NNP is/VBZ a/DT US/NNP state/NN"; - Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NN[S]?\\s(\\w+))/NN[S]?"); + Pattern nprepPattern = Pattern.compile("\\s?((\\w+)/NNP[S]?)\\s(\\w+)/NN[S]?(\\W|$)"); Matcher m = nprepPattern.matcher(s); while (m.find()) { System.out.println("Found!"); - s = s.replaceFirst(m.group(1),m.group(2) + "_" + m.group(3)); + s = s.replaceFirst(m.group(1),m.group(2) + "/JJ"); } System.out.println(s); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java 2011-05-09 04:35:54 UTC (rev 2786) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TemplateGenerationTest.java 2011-05-09 13:37:35 UTC (rev 2787) @@ -54,7 +54,7 @@ * @param args */ public static void main(String[] args) { - File file = new File("src/main/resources/tbsl/evaluation/dbpedia-test-questions.xml"); + File file = new File("src/main/resources/tbsl/evaluation/dbpedia-train.xml"); List<String> questions = readQuestions(file); Templator templateGenerator = new Templator(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-05-13 09:56:26
|
Revision: 2805 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2805&view=rev Author: christinaunger Date: 2011-05-13 09:56:20 +0000 (Fri, 13 May 2011) Log Message: ----------- [tbsl] Treetagger test Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java 2011-05-13 09:38:49 UTC (rev 2804) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java 2011-05-13 09:56:20 UTC (rev 2805) @@ -27,6 +27,7 @@ System.out.println(token+"/"+pos+"/"+lemma); } }); + System.out.println("Tagged with TreeTagger:\n"); tt.process(input); System.out.println(tt.getStatus()); } Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-13 09:38:49 UTC (rev 2804) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-13 09:56:20 UTC (rev 2805) @@ -3,23 +3,27 @@ import java.io.IOException; import java.util.List; +import org.annolab.tt4j.TreeTaggerException; import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.StanfordPartOfSpeechTagger; +import org.dllearner.algorithm.tbsl.templator.TreeTagger; public class POStest { - public static void main(String[] args) throws IOException, ClassNotFoundException { + public static void main(String[] args) throws IOException, ClassNotFoundException, TreeTaggerException { - String sentence = "When did Nirvana record Nevermind?"; + String sentence = "Which rivers does the Brooklyn Bridge cross"; PartOfSpeechTagger tagger = new StanfordPartOfSpeechTagger(); long startTime = System.currentTimeMillis(); String tagged = tagger.tag(sentence); System.out.format("Tagged sentence with Stanford tagger (%d ms):\n", System.currentTimeMillis()-startTime); System.out.println(tagged + "\n"); + + TreeTagger tt = new TreeTagger(); + tt.tagthis(sentence); - tagger = new ApachePartOfSpeechTagger(); startTime = System.currentTimeMillis(); tagged = tagger.tag(sentence); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-05-13 09:59:33
|
Revision: 2806 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2806&view=rev Author: christinaunger Date: 2011-05-13 09:59:27 +0000 (Fri, 13 May 2011) Log Message: ----------- [tbsl] TreeTagger rearrangement Modified Paths: -------------- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/TreeTagger.java Removed Paths: ------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java Copied: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/TreeTagger.java (from rev 2805, trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java) =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/TreeTagger.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/TreeTagger.java 2011-05-13 09:59:27 UTC (rev 2806) @@ -0,0 +1,49 @@ +package org.dllearner.algorithm.tbsl.nlp; + +import java.io.IOException; +import java.util.List; +import java.util.Arrays; + +import org.annolab.tt4j.TokenHandler; +import org.annolab.tt4j.TreeTaggerException; +import org.annolab.tt4j.TreeTaggerWrapper; + +public class TreeTagger implements PartOfSpeechTagger { + + TreeTaggerWrapper<String> tt; + + public TreeTagger() throws IOException { + System.setProperty("treetagger.home","/home/christina/Software/TreeTagger"); + tt = new TreeTaggerWrapper<String>(); + tt.setModel("/home/christina/Software/TreeTagger/lib/english.par:iso8859-1"); + } + + public String tag(String s) { + + List<String> input = Arrays.asList(s.split(" ")); + try { + tt.setHandler(new TokenHandler<String>() { + public void token(String token, String pos, String lemma) { + System.out.println(token+"/"+pos+"/"+lemma); + } + }); + System.out.println("Tagged with TreeTagger:\n"); + tt.process(input); + System.out.println(tt.getStatus()); + } catch (IOException e) { + e.printStackTrace(); + } catch (TreeTaggerException e) { + e.printStackTrace(); + } + finally { + tt.destroy(); + } + return ""; + } + + @Override + public List<String> tagTopK(String sentence) { + // TODO Auto-generated method stub + return null; + } +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/TreeTagger.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java 2011-05-13 09:56:20 UTC (rev 2805) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/POStagger.java 2011-05-13 09:59:27 UTC (rev 2806) @@ -1,54 +0,0 @@ -package org.dllearner.algorithm.tbsl.templator; - -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; - -import edu.stanford.nlp.ling.HasWord; -import edu.stanford.nlp.ling.TaggedWord; -import edu.stanford.nlp.tagger.maxent.MaxentTagger; - -public class POStagger { - - String taggermodel; - MaxentTagger tagger; - - public POStagger(String s) throws IOException, ClassNotFoundException { - taggermodel = s; - tagger = new MaxentTagger(taggermodel); - } - public POStagger() throws IOException, ClassNotFoundException { - taggermodel = "src/main/resources/tbsl/models/bidirectional-distsim-wsj-0-18.tagger"; - //taggermodel = "src/main/resources/tbsl/models/left3words-wsj-0-18.tagger"; - tagger = new MaxentTagger(taggermodel); - } - - public void setPOStaggerModel(String s) throws IOException, ClassNotFoundException { - taggermodel = s; - tagger = new MaxentTagger(taggermodel); - } - - public String tag(String s) { - - String out = ""; - - ArrayList<TaggedWord> tagged = new ArrayList<TaggedWord>(); - - StringReader reader = new StringReader(s); - List<ArrayList<? extends HasWord>> text = tagger.tokenizeText(reader); - - if (text.size() == 1) { - tagged = tagger.processSentence(text.get(0)); - } - - - for (TaggedWord t : tagged) { - out += " " + t.toString(); - } - - return out.trim(); - - } - -} Deleted: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java 2011-05-13 09:56:20 UTC (rev 2805) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TreeTagger.java 2011-05-13 09:59:27 UTC (rev 2806) @@ -1,38 +0,0 @@ -package org.dllearner.algorithm.tbsl.templator; - -import java.io.IOException; -import java.util.List; -import java.util.Arrays; - -import org.annolab.tt4j.TokenHandler; -import org.annolab.tt4j.TreeTaggerException; -import org.annolab.tt4j.TreeTaggerWrapper; - -public class TreeTagger { - - TreeTaggerWrapper<String> tt; - - public TreeTagger() throws IOException { - System.setProperty("treetagger.home","/home/christina/Software/TreeTagger"); - tt = new TreeTaggerWrapper<String>(); - tt.setModel("/home/christina/Software/TreeTagger/lib/english.par:iso8859-1"); - } - - public void tagthis(String s) throws IOException, TreeTaggerException { - - List<String> input = Arrays.asList(s.split(" ")); - try { - tt.setHandler(new TokenHandler<String>() { - public void token(String token, String pos, String lemma) { - System.out.println(token+"/"+pos+"/"+lemma); - } - }); - System.out.println("Tagged with TreeTagger:\n"); - tt.process(input); - System.out.println(tt.getStatus()); - } - finally { - tt.destroy(); - } - } -} Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-13 09:56:20 UTC (rev 2805) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-13 09:59:27 UTC (rev 2806) @@ -7,7 +7,7 @@ import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.StanfordPartOfSpeechTagger; -import org.dllearner.algorithm.tbsl.templator.TreeTagger; +import org.dllearner.algorithm.tbsl.nlp.TreeTagger; public class POStest { @@ -22,7 +22,7 @@ System.out.println(tagged + "\n"); TreeTagger tt = new TreeTagger(); - tt.tagthis(sentence); + tt.tag(sentence); tagger = new ApachePartOfSpeechTagger(); startTime = System.currentTimeMillis(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-05-16 09:14:52
|
Revision: 2808 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2808&view=rev Author: christinaunger Date: 2011-05-16 09:14:46 +0000 (Mon, 16 May 2011) Log Message: ----------- [tbsl] small parser update Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-13 10:33:02 UTC (rev 2807) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-05-16 09:14:46 UTC (rev 2808) @@ -31,6 +31,10 @@ static ParseGrammar filter(String taggedinput,LTAGLexicon grammar,List<Integer> temps) { + // DISAM: CLEAR + usedInts = new ArrayList<Integer>(); + doubles = new ArrayList<String>(); + SlotBuilder slotbuilder = new SlotBuilder(); List<String> input = getWordList(taggedinput.trim()); @@ -81,7 +85,7 @@ for (Pair<Integer,TreeNode> p : candidates) { // DISAM - TreeNode new_p_second = p.getSecond(); + TreeNode new_p_second = p.getSecond().clone(); if (doubles.contains(token)) { for (int i = 0; i < tokenParts.length; i++) { new_p_second.setAnchor(tokenParts[i],newTokenParts[i]); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-13 10:33:02 UTC (rev 2807) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-05-16 09:14:46 UTC (rev 2808) @@ -13,7 +13,7 @@ public static void main(String[] args) throws IOException, ClassNotFoundException, TreeTaggerException { - String sentence = "Which rivers does the Brooklyn Bridge cross"; + String sentence = "Which rivers does the Brooklyn Bridge cross ?"; PartOfSpeechTagger tagger = new StanfordPartOfSpeechTagger(); long startTime = System.currentTimeMillis(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-05-24 13:54:49
|
Revision: 2818 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2818&view=rev Author: christinaunger Date: 2011-05-24 13:54:41 +0000 (Tue, 24 May 2011) Log Message: ----------- [tbsl] removed remaining redundancies (now the set of resulting DRSs are checked for duplicates, i.e. DRSs that are equal modulo renaming of referents) Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_ParserTokenManager.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/ParseException.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/SimpleCharStream.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/Token.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/TokenMgrError.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/NERTest.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/ParseException.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/SimpleCharStream.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/Token.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/TokenMgrError.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-05-24 08:12:40 UTC (rev 2817) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -45,6 +45,10 @@ template = new Template(new Query()); usedInts = new ArrayList<Integer>(); } + + public void setSlots(List<Slot> ls) { + slots = ls; + } public boolean isSilent() { return silent; @@ -302,7 +306,7 @@ return query; } - private void redundantEqualRenaming(DRS drs) { + public void redundantEqualRenaming(DRS drs) { Set<Simple_DRS_Condition> equalsConditions = new HashSet<Simple_DRS_Condition>(); for (Simple_DRS_Condition c : drs.getAllSimpleConditions()) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2011-05-24 08:12:40 UTC (rev 2817) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -10,6 +10,7 @@ import org.dllearner.algorithm.tbsl.sem.util.SemanticRepresentation; + public class DRS implements SemanticRepresentation { // A DRS has a set(!) of discourse referents @@ -379,6 +380,8 @@ } } + + @Override public int hashCode() { final int prime = 31; @@ -420,7 +423,8 @@ return false; return true; } - + + public boolean equalsModuloLabel(Object obj) { if (this == obj) return true; @@ -442,5 +446,51 @@ return true; } + public boolean equalsModuloRenaming(DRS drs) { + + DRS drs1 = this.clone(); + DRS drs2 = drs.clone(); + + drs1.setLabel("l1"); drs2.setLabel("l1"); + if (drs1.equals(drs2)) { return true; } + + Set<String> thisVars = drs1.collectVariables(); + Set<String> drsVars = drs2.collectVariables(); + + if (thisVars.size() != drsVars.size()) { + return false; + } + List<String> thisVarsR = new ArrayList<String>(); + List<String> drsVarsR = new ArrayList<String>(); + for (String s : thisVars) { + if (!drsVars.contains(s)) { + thisVarsR.add(s); + } + } + for (String s : drsVars) { + if (!thisVars.contains(s)) { + drsVarsR.add(s); + } + } + + String oldV; String newV; + for (int i=0; i < thisVarsR.size(); i++) { + oldV = thisVarsR.get(i); + newV = drsVarsR.get(i); + drs1.replaceReferent(oldV,newV); + } + + // Hack: If it looks the same, it is the same. + + DRS_Constructor dc = new DRS_Constructor(); + if (dc.construct(drs1.toString()).equals(dc.construct(drs2.toString()))) { + return true; + } + else { + return false; + } + + } + } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -0,0 +1,25 @@ +package org.dllearner.algorithm.tbsl.sem.drs; + +import java.io.StringReader; + +import org.dllearner.algorithm.tbsl.sem.drs.reader.DRSParser; +import org.dllearner.algorithm.tbsl.sem.drs.reader.ParseException; +import org.dllearner.algorithm.tbsl.sem.drs.DRS; + +public class DRS_Constructor { + + public DRS construct(String string) + { + DRS drs = null; + DRSParser parser = new DRSParser(new StringReader(new String(string))); + parser.ReInit(new StringReader(new String(string))); + try { + drs = parser.DRS(); + } catch (ParseException e) { + e.printStackTrace(); + } + + return drs; + } + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java ___________________________________________________________________ Added: svn:executable + * Added: svn:mime-type + text/plain Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -0,0 +1,879 @@ +/* Generated By:JavaCC: Do not edit this line. DRSParser.java */ +package org.dllearner.algorithm.tbsl.sem.drs.reader; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.dllearner.algorithm.tbsl.sem.drs.*; +import org.dllearner.algorithm.tbsl.sem.util.Label; + +public class DRSParser implements DRSParserConstants { + + /** Main entry point. */ + public static void main(String args[]) throws ParseException { + DRSParser parser = new DRSParser(System.in); + parser.Input(); + } + +/** Root production. */ + final public void Input() throws ParseException { + DRS(); + jj_consume_token(0); + } + +/** DRS */ + final public DRS DRS() throws ParseException { + Set<DiscourseReferent> dr_set = null; + Set<DRS_Condition> conditions = null; + DRS drs; + Token label = null; + if (jj_2_1(2)) { + label = jj_consume_token(LABEL); + jj_consume_token(1); + } else { + ; + } + jj_consume_token(2); + if (jj_2_2(2)) { + dr_set = DR_Set(); + } else { + ; + } + jj_consume_token(3); + if (jj_2_3(2)) { + conditions = Condition_List(); + } else { + ; + } + jj_consume_token(4); + if (dr_set == null) + { + dr_set = new HashSet<DiscourseReferent>(); + } + drs = new DRS(); + if (label != null) + { + drs.setLabel(label.toString()); + } + drs.setDiscourseReferents(dr_set); + if (conditions != null) + { + drs.setDRSConditions(conditions); + } + {if (true) return drs;} + throw new Error("Missing return statement in function"); + } + +/** DR_Set*/ + final public Set<DiscourseReferent> DR_Set() throws ParseException { + Token dr; + Set<DiscourseReferent> dr_set=null; + dr = dr(); + if (jj_2_4(2)) { + jj_consume_token(5); + dr_set = DR_Set(); + } else { + ; + } + if (dr_set == null) + { + dr_set= new HashSet<DiscourseReferent>(); + } + if (dr.toString().startsWith("?")) + { + dr_set.add(new DiscourseReferent(dr.toString().substring(1),true,false)); + } + else if (dr.toString().startsWith("!")) + { + dr_set.add(new DiscourseReferent(dr.toString().substring(1),false,true)); + } + else + { + dr_set.add(new DiscourseReferent(dr.toString(),false,false)); + } + {if (true) return dr_set;} + throw new Error("Missing return statement in function"); + } + + final public Set<DRS_Condition> Condition_List() throws ParseException { + DRS_Condition condition= null; + Set<DRS_Condition> conditions = null; + condition = Condition(); + if (jj_2_5(2)) { + jj_consume_token(5); + conditions = Condition_List(); + } else { + ; + } + if (conditions == null) + { + conditions = new HashSet<DRS_Condition>(); + } + conditions.add(condition); + {if (true) return conditions;} + throw new Error("Missing return statement in function"); + } + + final public DRS_Condition Condition() throws ParseException { + List<DiscourseReferent> dr_list; + Token dr1; + Token dr2; + Token dr; + Token predicate; + Token quantifier; + DRS drs1; + DRS drs2; + if (jj_2_15(2)) { + predicate = jj_consume_token(WORD); + jj_consume_token(6); + dr_list = DR_List(); + jj_consume_token(7); + Simple_DRS_Condition condition; + + condition = new Simple_DRS_Condition(); + condition.setPredicate(predicate.toString()); + condition.setArguments(dr_list); + {if (true) return condition;} + } else if (jj_2_16(2)) { + dr1 = dr(); + jj_consume_token(8); + dr2 = dr(); + Simple_DRS_Condition condition; + + condition = new Simple_DRS_Condition(); + condition.setPredicate("equal"); + condition.addArgument(new DiscourseReferent(dr1.toString())); + condition.addArgument(new DiscourseReferent(dr2.toString())); + {if (true) return condition;} + } else if (jj_2_17(2)) { + jj_consume_token(9); + drs1 = DRS(); + Negated_DRS drs = new Negated_DRS(); + drs.setDRS(drs1); + {if (true) return drs;} + } else if (jj_2_18(2)) { + drs1 = DRS(); + if (jj_2_6(2)) { + quantifier = jj_consume_token(EVERY); + } else if (jj_2_7(2)) { + quantifier = jj_consume_token(SOME); + } else if (jj_2_8(2)) { + quantifier = jj_consume_token(AFEW); + } else if (jj_2_9(2)) { + quantifier = jj_consume_token(MOST); + } else if (jj_2_10(2)) { + quantifier = jj_consume_token(THEMOST); + } else if (jj_2_11(2)) { + quantifier = jj_consume_token(THELEAST); + } else if (jj_2_12(2)) { + quantifier = jj_consume_token(HOWMANY); + } else if (jj_2_13(2)) { + quantifier = jj_consume_token(MANY); + } else if (jj_2_14(2)) { + quantifier = jj_consume_token(NO); + } else { + jj_consume_token(-1); + throw new ParseException(); + } + dr = jj_consume_token(WORD); + drs2 = DRS(); + Complex_DRS_Condition drs; + drs = new Complex_DRS_Condition(); + drs.setRestrictor(drs1); + drs.setScope(drs2); + drs.setReferent(new DiscourseReferent(dr.toString())); + + if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} + if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} + if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} + if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} + + {if (true) return drs;} + } else { + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** DR_List*/ + final public List<DiscourseReferent> DR_List() throws ParseException { + Token dr; + List<DiscourseReferent> dr_list=null; + dr = dr(); + if (jj_2_19(2)) { + jj_consume_token(5); + dr_list = DR_List(); + } else { + ; + } + if (dr_list == null) + { + dr_list= new ArrayList<DiscourseReferent>(); + } + + if (dr.toString().startsWith("?")) { + dr_list.add(0,new DiscourseReferent(dr.toString().substring(1),true,false)); + } + else if (dr.toString().startsWith("?")) { + dr_list.add(0,new DiscourseReferent(dr.toString().substring(1),false,true)); + } + else { + dr_list.add(0,new DiscourseReferent(dr.toString(),false,false)); + } + + {if (true) return dr_list;} + throw new Error("Missing return statement in function"); + } + + final public Token dr() throws ParseException { + Token t; + if (jj_2_20(2)) { + t = jj_consume_token(WORD); + } else if (jj_2_21(2)) { + t = jj_consume_token(DR); + } else if (jj_2_22(2)) { + t = jj_consume_token(QUOTED_STRING); + } else { + jj_consume_token(-1); + throw new ParseException(); + } + {if (true) return t;} + throw new Error("Missing return statement in function"); + } + + private boolean jj_2_1(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_1(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(0, xla); } + } + + private boolean jj_2_2(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_2(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(1, xla); } + } + + private boolean jj_2_3(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_3(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(2, xla); } + } + + private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_4(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(3, xla); } + } + + private boolean jj_2_5(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_5(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(4, xla); } + } + + private boolean jj_2_6(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_6(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(5, xla); } + } + + private boolean jj_2_7(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_7(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(6, xla); } + } + + private boolean jj_2_8(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_8(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(7, xla); } + } + + private boolean jj_2_9(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_9(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(8, xla); } + } + + private boolean jj_2_10(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_10(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(9, xla); } + } + + private boolean jj_2_11(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_11(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(10, xla); } + } + + private boolean jj_2_12(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_12(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(11, xla); } + } + + private boolean jj_2_13(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_13(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(12, xla); } + } + + private boolean jj_2_14(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_14(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(13, xla); } + } + + private boolean jj_2_15(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_15(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(14, xla); } + } + + private boolean jj_2_16(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_16(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(15, xla); } + } + + private boolean jj_2_17(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_17(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(16, xla); } + } + + private boolean jj_2_18(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_18(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(17, xla); } + } + + private boolean jj_2_19(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_19(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(18, xla); } + } + + private boolean jj_2_20(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_20(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(19, xla); } + } + + private boolean jj_2_21(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_21(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(20, xla); } + } + + private boolean jj_2_22(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_22(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(21, xla); } + } + + private boolean jj_3_2() { + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3_18() { + if (jj_3R_4()) return true; + return false; + } + + private boolean jj_3_10() { + if (jj_scan_token(THEMOST)) return true; + return false; + } + + private boolean jj_3_19() { + if (jj_scan_token(5)) return true; + if (jj_3R_5()) return true; + return false; + } + + private boolean jj_3_17() { + if (jj_scan_token(9)) return true; + if (jj_3R_4()) return true; + return false; + } + + private boolean jj_3_13() { + if (jj_scan_token(MANY)) return true; + return false; + } + + private boolean jj_3R_2() { + if (jj_3R_6()) return true; + return false; + } + + private boolean jj_3_7() { + if (jj_scan_token(SOME)) return true; + return false; + } + + private boolean jj_3R_5() { + if (jj_3R_3()) return true; + return false; + } + + private boolean jj_3_22() { + if (jj_scan_token(QUOTED_STRING)) return true; + return false; + } + + private boolean jj_3_3() { + if (jj_3R_2()) return true; + return false; + } + + private boolean jj_3_1() { + if (jj_scan_token(LABEL)) return true; + if (jj_scan_token(1)) return true; + return false; + } + + private boolean jj_3R_4() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_1()) jj_scanpos = xsp; + if (jj_scan_token(2)) return true; + xsp = jj_scanpos; + if (jj_3_2()) jj_scanpos = xsp; + if (jj_scan_token(3)) return true; + return false; + } + + private boolean jj_3_9() { + if (jj_scan_token(MOST)) return true; + return false; + } + + private boolean jj_3_16() { + if (jj_3R_3()) return true; + if (jj_scan_token(8)) return true; + return false; + } + + private boolean jj_3_11() { + if (jj_scan_token(THELEAST)) return true; + return false; + } + + private boolean jj_3_21() { + if (jj_scan_token(DR)) return true; + return false; + } + + private boolean jj_3_4() { + if (jj_scan_token(5)) return true; + if (jj_3R_1()) return true; + return false; + } + + private boolean jj_3_12() { + if (jj_scan_token(HOWMANY)) return true; + return false; + } + + private boolean jj_3R_6() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_15()) { + jj_scanpos = xsp; + if (jj_3_16()) { + jj_scanpos = xsp; + if (jj_3_17()) { + jj_scanpos = xsp; + if (jj_3_18()) return true; + } + } + } + return false; + } + + private boolean jj_3_15() { + if (jj_scan_token(WORD)) return true; + if (jj_scan_token(6)) return true; + return false; + } + + private boolean jj_3_6() { + if (jj_scan_token(EVERY)) return true; + return false; + } + + private boolean jj_3_5() { + if (jj_scan_token(5)) return true; + if (jj_3R_2()) return true; + return false; + } + + private boolean jj_3_14() { + if (jj_scan_token(NO)) return true; + return false; + } + + private boolean jj_3_20() { + if (jj_scan_token(WORD)) return true; + return false; + } + + private boolean jj_3R_3() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_20()) { + jj_scanpos = xsp; + if (jj_3_21()) { + jj_scanpos = xsp; + if (jj_3_22()) return true; + } + } + return false; + } + + private boolean jj_3R_1() { + if (jj_3R_3()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_4()) jj_scanpos = xsp; + return false; + } + + private boolean jj_3_8() { + if (jj_scan_token(AFEW)) return true; + return false; + } + + /** Generated Token Manager. */ + public DRSParserTokenManager token_source; + SimpleCharStream jj_input_stream; + /** Current token. */ + public Token token; + /** Next token. */ + public Token jj_nt; + private int jj_ntk; + private Token jj_scanpos, jj_lastpos; + private int jj_la; + private int jj_gen; + final private int[] jj_la1 = new int[0]; + static private int[] jj_la1_0; + static { + jj_la1_init_0(); + } + private static void jj_la1_init_0() { + jj_la1_0 = new int[] {}; + } + final private JJCalls[] jj_2_rtns = new JJCalls[22]; + private boolean jj_rescan = false; + private int jj_gc = 0; + + /** Constructor with InputStream. */ + public DRSParser(java.io.InputStream stream) { + this(stream, null); + } + /** Constructor with InputStream and supplied encoding */ + public DRSParser(java.io.InputStream stream, String encoding) { + try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source = new DRSParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream stream) { + ReInit(stream, null); + } + /** Reinitialise. */ + public void ReInit(java.io.InputStream stream, String encoding) { + try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Constructor. */ + public DRSParser(java.io.Reader stream) { + jj_input_stream = new SimpleCharStream(stream, 1, 1); + token_source = new DRSParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(java.io.Reader stream) { + jj_input_stream.ReInit(stream, 1, 1); + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Constructor with generated Token Manager. */ + public DRSParser(DRSParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(DRSParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 0; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + private Token jj_consume_token(int kind) throws ParseException { + Token oldToken; + if ((oldToken = token).next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + if (token.kind == kind) { + jj_gen++; + if (++jj_gc > 100) { + jj_gc = 0; + for (int i = 0; i < jj_2_rtns.length; i++) { + JJCalls c = jj_2_rtns[i]; + while (c != null) { + if (c.gen < jj_gen) c.first = null; + c = c.next; + } + } + } + return token; + } + token = oldToken; + jj_kind = kind; + throw generateParseException(); + } + + static private final class LookaheadSuccess extends java.lang.Error { } + final private LookaheadSuccess jj_ls = new LookaheadSuccess(); + private boolean jj_scan_token(int kind) { + if (jj_scanpos == jj_lastpos) { + jj_la--; + if (jj_scanpos.next == null) { + jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); + } else { + jj_lastpos = jj_scanpos = jj_scanpos.next; + } + } else { + jj_scanpos = jj_scanpos.next; + } + if (jj_rescan) { + int i = 0; Token tok = token; + while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } + if (tok != null) jj_add_error_token(kind, i); + } + if (jj_scanpos.kind != kind) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; + return false; + } + + +/** Get the next Token. */ + final public Token getNextToken() { + if (token.next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + jj_gen++; + return token; + } + +/** Get the specific Token. */ + final public Token getToken(int index) { + Token t = token; + for (int i = 0; i < index; i++) { + if (t.next != null) t = t.next; + else t = t.next = token_source.getNextToken(); + } + return t; + } + + private int jj_ntk() { + if ((jj_nt=token.next) == null) + return (jj_ntk = (token.next=token_source.getNextToken()).kind); + else + return (jj_ntk = jj_nt.kind); + } + + private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); + private int[] jj_expentry; + private int jj_kind = -1; + private int[] jj_lasttokens = new int[100]; + private int jj_endpos; + + private void jj_add_error_token(int kind, int pos) { + if (pos >= 100) return; + if (pos == jj_endpos + 1) { + jj_lasttokens[jj_endpos++] = kind; + } else if (jj_endpos != 0) { + jj_expentry = new int[jj_endpos]; + for (int i = 0; i < jj_endpos; i++) { + jj_expentry[i] = jj_lasttokens[i]; + } + jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { + int[] oldentry = (int[])(it.next()); + if (oldentry.length == jj_expentry.length) { + for (int i = 0; i < jj_expentry.length; i++) { + if (oldentry[i] != jj_expentry[i]) { + continue jj_entries_loop; + } + } + jj_expentries.add(jj_expentry); + break jj_entries_loop; + } + } + if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; + } + } + + /** Generate ParseException. */ + public ParseException generateParseException() { + jj_expentries.clear(); + boolean[] la1tokens = new boolean[27]; + if (jj_kind >= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 0; i++) { + if (jj_la1[i] == jj_gen) { + for (int j = 0; j < 32; j++) { + if ((jj_la1_0[i] & (1<<j)) != 0) { + la1tokens[j] = true; + } + } + } + } + for (int i = 0; i < 27; i++) { + if (la1tokens[i]) { + jj_expentry = new int[1]; + jj_expentry[0] = i; + jj_expentries.add(jj_expentry); + } + } + jj_endpos = 0; + jj_rescan_token(); + jj_add_error_token(0, 0); + int[][] exptokseq = new int[jj_expentries.size()][]; + for (int i = 0; i < jj_expentries.size(); i++) { + exptokseq[i] = jj_expentries.get(i); + } + return new ParseException(token, exptokseq, tokenImage); + } + + /** Enable tracing. */ + final public void enable_tracing() { + } + + /** Disable tracing. */ + final public void disable_tracing() { + } + + private void jj_rescan_token() { + jj_rescan = true; + for (int i = 0; i < 22; i++) { + try { + JJCalls p = jj_2_rtns[i]; + do { + if (p.gen > jj_gen) { + jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; + switch (i) { + case 0: jj_3_1(); break; + case 1: jj_3_2(); break; + case 2: jj_3_3(); break; + case 3: jj_3_4(); break; + case 4: jj_3_5(); break; + case 5: jj_3_6(); break; + case 6: jj_3_7(); break; + case 7: jj_3_8(); break; + case 8: jj_3_9(); break; + case 9: jj_3_10(); break; + case 10: jj_3_11(); break; + case 11: jj_3_12(); break; + case 12: jj_3_13(); break; + case 13: jj_3_14(); break; + case 14: jj_3_15(); break; + case 15: jj_3_16(); break; + case 16: jj_3_17(); break; + case 17: jj_3_18(); break; + case 18: jj_3_19(); break; + case 19: jj_3_20(); break; + case 20: jj_3_21(); break; + case 21: jj_3_22(); break; + } + } + p = p.next; + } while (p != null); + } catch(LookaheadSuccess ls) { } + } + jj_rescan = false; + } + + private void jj_save(int index, int xla) { + JJCalls p = jj_2_rtns[index]; + while (p.gen > jj_gen) { + if (p.next == null) { p = p.next = new JJCalls(); break; } + p = p.next; + } + p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; + } + + static final class JJCalls { + int gen; + Token first; + int arg; + JJCalls next; + } + +} Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj 2011-05-24 13:54:41 UTC (rev 2818) @@ -0,0 +1,259 @@ + +options { + LOOKAHEAD = 2; + CHOICE_AMBIGUITY_CHECK = 2; + OTHER_AMBIGUITY_CHECK = 1; + STATIC = false; + DEBUG_PARSER = false; + DEBUG_LOOKAHEAD = false; + DEBUG_TOKEN_MANAGER = false; + ERROR_REPORTING = true; + JAVA_UNICODE_ESCAPE = false; + UNICODE_INPUT = false; + IGNORE_CASE = false; + USER_TOKEN_MANAGER = false; + USER_CHAR_STREAM = false; + BUILD_PARSER = true; + BUILD_TOKEN_MANAGER = true; + SANITY_CHECK = true; + FORCE_LA_CHECK = false; +} + +PARSER_BEGIN(DRSParser) + +package org.dllearner.algorithm.tbsl.sem.drs.reader; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.dllearner.algorithm.tbsl.sem.drs.*; +import org.dllearner.algorithm.tbsl.sem.util.Label; + +public class DRSParser { + + /** Main entry point. */ + public static void main(String args[]) throws ParseException { + DRSParser parser = new DRSParser(System.in); + parser.Input(); + } + +} + +PARSER_END(DRSParser) + +/** Root production. */ +void Input() : +{} +{ + DRS() <EOF> +} + +/** DRS */ +DRS DRS() : +{ + Set<DiscourseReferent> dr_set = null; + Set<DRS_Condition> conditions = null; + DRS drs; + Token label = null; + +} +{ + (label=<LABEL> ":")? "[" (dr_set=DR_Set())? "|" (conditions=Condition_List())? "]" + { + if (dr_set == null) + { + dr_set = new HashSet<DiscourseReferent>(); + } + drs = new DRS(); + if (label != null) + { + drs.setLabel(label.toString()); + } + drs.setDiscourseReferents(dr_set); + if (conditions != null) + { + drs.setDRSConditions(conditions); + } + return drs; + } +} + +/** DR_Set*/ +Set<DiscourseReferent> DR_Set() : +{ + Token dr; + Set<DiscourseReferent> dr_set=null; +} +{ + dr = dr() ("," dr_set=DR_Set())? + { + if (dr_set == null) + { + dr_set= new HashSet<DiscourseReferent>(); + } + if (dr.toString().startsWith("?")) + { + dr_set.add(new DiscourseReferent(dr.toString().substring(1),true,false)); + } + else if (dr.toString().startsWith("!")) + { + dr_set.add(new DiscourseReferent(dr.toString().substring(1),false,true)); + } + else + { + dr_set.add(new DiscourseReferent(dr.toString(),false,false)); + } + return dr_set; + } +} + +Set<DRS_Condition> Condition_List() : +{ + DRS_Condition condition= null; + Set<DRS_Condition> conditions = null; +} +{ + condition=Condition() ("," conditions=Condition_List())? + { + if (conditions == null) + { + conditions = new HashSet<DRS_Condition>(); + } + conditions.add(condition); + return conditions; + } +} + +DRS_Condition Condition() : +{ + List<DiscourseReferent> dr_list; + Token dr1; + Token dr2; + Token dr; + Token predicate; + Token quantifier; + DRS drs1; + DRS drs2; +} +{ + + predicate=<WORD> "(" dr_list=DR_List() ")" + { + Simple_DRS_Condition condition; + + condition = new Simple_DRS_Condition(); + condition.setPredicate(predicate.toString()); + condition.setArguments(dr_list); + return condition; + } + + | + + dr1 = dr() "=" dr2 = dr() + { + Simple_DRS_Condition condition; + + condition = new Simple_DRS_Condition(); + condition.setPredicate("equal"); + condition.addArgument(new DiscourseReferent(dr1.toString())); + condition.addArgument(new DiscourseReferent(dr2.toString())); + return condition; + } + + | + + "NOT" drs1=DRS() + { + Negated_DRS drs = new Negated_DRS(); + drs.setDRS(drs1); + return drs; + } + + | + + drs1=DRS() (quantifier=<EVERY> | quantifier=<SOME> | quantifier=<AFEW> | quantifier=<MOST> | quantifier=<THEMOST> | quantifier=<THELEAST> | + quantifier=<HOWMANY> | quantifier=<MANY> | quantifier=<NO>) dr= <WORD> drs2=DRS() + { + Complex_DRS_Condition drs; + drs = new Complex_DRS_Condition(); + drs.setRestrictor(drs1); + drs.setScope(drs2); + drs.setReferent(new DiscourseReferent(dr.toString())); + + if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} + if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} + if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} + if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} + + return drs; + + } +} + +/** DR_List*/ +List<DiscourseReferent> DR_List() : +{ + Token dr; + List<DiscourseReferent> dr_list=null; +} +{ + dr = dr() ("," dr_list=DR_List())? + { + if (dr_list == null) + { + dr_list= new ArrayList<DiscourseReferent>(); + } + + if (dr.toString().startsWith("?")) { + dr_list.add(0,new DiscourseReferent(dr.toString().substring(1),true,false)); + } + else if (dr.toString().startsWith("?")) { + dr_list.add(0,new DiscourseReferent(dr.toString().substring(1),false,true)); + } + else { + dr_list.add(0,new DiscourseReferent(dr.toString(),false,false)); + } + + return dr_list; + } +} + + +TOKEN: {<EVERY: "EVERY">} + +TOKEN: {<MOST: "MOST">} + +TOKEN: {<SOME: "SOME">} + +TOKEN: {<THEMOST: "THEMOST">} + +TOKEN: {<THELEAST: "THELEAST">} + +TOKEN: {<AFEW: "AFEW">} + +TOKEN: {<MANY: "MANY">} + +TOKEN: {<NO: "NO">} + +TOKEN: {<HOWMANY: "HOWMANY">} + +TOKEN: {<LABEL: "l"(["0"-"9"])+>} + +TOKEN: {<WORD: (["a"-"z","A"-"Z","_",".","#",":"])+>} + +TOKEN: {<DR: (["?","!"])?(["a"-"z","A"-"Z","0"-"9","."])+>} + +TOKEN: {<QUOTED_STRING: "\'" (~["\'"])+ "\'" >} + +Token dr() : { Token t; }{ (t=<WORD> | t=<DR> | t=<QUOTED_STRING>) { return t; } } + +SKIP : { " " | "\t" | "\n" | "\r" } + + Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj ___________________________________________________________________ Added: svn:executable + * Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserConstants.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -0,0 +1,74 @@ +/* Generated By:JavaCC: Do not edit this line. DRSParserConstants.java */ +package org.dllearner.algorithm.tbsl.sem.drs.reader; + + +/** + * Token literal values and constants. + * Generated by org.javacc.parser.OtherFilesGen#start() + */ +public interface DRSParserConstants { + + /** End of File. */ + int EOF = 0; + /** RegularExpression Id. */ + int EVERY = 10; + /** RegularExpression Id. */ + int MOST = 11; + /** RegularExpression Id. */ + int SOME = 12; + /** RegularExpression Id. */ + int THEMOST = 13; + /** RegularExpression Id. */ + int THELEAST = 14; + /** RegularExpression Id. */ + int AFEW = 15; + /** RegularExpression Id. */ + int MANY = 16; + /** RegularExpression Id. */ + int NO = 17; + /** RegularExpression Id. */ + int HOWMANY = 18; + /** RegularExpression Id. */ + int LABEL = 19; + /** RegularExpression Id. */ + int WORD = 20; + /** RegularExpression Id. */ + int DR = 21; + /** RegularExpression Id. */ + int QUOTED_STRING = 22; + + /** Lexical state. */ + int DEFAULT = 0; + + /** Literal token values. */ + String[] tokenImage = { + "<EOF>", + "\":\"", + "\"[\"", + "\"|\"", + "\"]\"", + "\",\"", + "\"(\"", + "\")\"", + "\"=\"", + "\"NOT\"", + "\"EVERY\"", + "\"MOST\"", + "\"SOME\"", + "\"THEMOST\"", + "\"THELEAST\"", + "\"AFEW\"", + "\"MANY\"", + "\"NO\"", + "\"HOWMANY\"", + "<LABEL>", + "<WORD>", + "<DR>", + "<QUOTED_STRING>", + "\" \"", + "\"\\t\"", + "\"\\n\"", + "\"\\r\"", + }; + +} Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParserTokenManager.java 2011-05-24 13:54:41 UTC (rev 2818) @@ -0,0 +1,710 @@ +/* Generated By:JavaCC: Do not edit this line. DRSParserTokenManager.java */ +package org.dllearner.algorithm.tbsl.sem.drs.reader; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.dllearner.algorithm.tbsl.sem.drs.*; +import org.dllearner.algorithm.tbsl.sem.util.Label; + +/** Token Manager. */ +public class DRSParserTokenManager implements DRSParserConstants +{ + + /** Debug output. */ + public java.io.PrintStream debugStream = System.out; + /** Set debug output. */ + public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private final int jjStopStringLiteralDfa_0(int pos, long active0) +{ + switch (pos) + { + case 0: + if ((active0 & 0x2L) != 0L) + return 2; + if ((active0 & 0x7fe00L) != 0L) + { + jjmatchedKind = 20; + return 8; + } + return -1; + case 1: + if ((active0 & 0x5fc00L) != 0L) + { + if (jjmatchedPos != 1) + { + jjmatchedKind = 20; + jjmatchedPos = 1; + } + return 8; + } + if ((active0 & 0x20200L) != 0L) + return 8; + return -1; + case 2: + if ((active0 & 0x5fc00L) != 0L) + { + jjmatchedKind = 20; + jjmatchedPos = 2; + return 8; + } + if ((active0 & 0x200L) != 0L) + return 8; + return -1; + case 3: + if ((active0 & 0x46400L) != 0L) + { + jjmatchedKind = 20; + jjmatchedPos = 3; + return 8; + } + if ((active0 & 0x19800L) != 0L) + return 8; + return -1; + case 4: + if ((active0 & 0x46000L) != 0L) + { + jjmatchedKind = 20; + jjmatchedPos = 4; + return 8; + } + if ((active0 & 0x400L) != 0L) + return 8; + return -1; + case 5: + if ((active0 & 0x46000L) != 0L) + { + jjmatchedKind = 20; + jjmatchedPos = 5; + return 8; + } + return -1; + case 6: + if ((active0 & 0x4000L) != 0L) + { + jjmatchedKind = 20; + jjmatchedPos = 6; + return 8; + } + if ((active0 & 0x42000L) != 0L) + return 8; + return -1; + default : + return -1; + } +} +private final int jjStartNfa_0(int pos, long active0) +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); +} +private int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +private int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 40: + return jjStopAtPos(0, 6); + case 41: + return jjStopAtPos(0, 7); + case 44: + return jjStopAtPos(0, 5); + case 58: + return jjStartNfaWithStates_0(0, 1, 2); + case 61: + return jjStopAtPos(0, 8); + case 65: + return jjMoveStringLiteralDfa1_0(0x8000L); + case 69: + return jjMoveStringLiteralDfa1_0(0x400L); + case 72: + return jjMoveStringLiteralDfa1_0(0x40000L); + case 77: + return jjMoveStringLiteralDfa1_0(0x10800L); + case 78: + return jjMoveStringLiteralDfa1_0(0x20200L); + case 83: + return jjMoveStringLiteralDfa1_0(0x1000L); + case 84: + return jjMoveStringLiteralDfa1_0(0x6000L); + case 91: + return jjStopAtPos(0, 2); + case 93: + return jjStopAtPos(0, 4); + case 124: + return jjStopAtPos(0, 3); + default : + return jjMoveNfa_0(0, 0); + } +} +private int jjMoveStringLiteralDfa1_0(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0); + return 1; + } + switch(curChar) + { + case 65: + return jjMoveStringLiteralDfa2_0(active0, 0x10000L); + case 70: + return jjMoveStringLiteralDfa2_0(active0, 0x8000L); + case 72: + return jjMoveStringLiteralDfa2_0(active0, 0x6000L); + case 79: + if ((active0 & 0x20000L) != 0L) + { + jjmatchedKind = 17; + jjmatchedPos = 1; + } + return jjMoveStringLiteralDfa2_0(active0, 0x41a00L); + case 86: + return jjMoveStringLiteralDfa2_0(active0, 0x400L); + default : + break; + } + return jjStartNfa_0(0, active0); +} +private int jjMoveStringLiteralDfa2_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(0, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0); + return 2; + } + switch(curChar) + { + case 69: + return jjMoveStringLiteralDfa3_0(active0, 0xe400L); + case 77: + return jjMoveStringLiteralDfa3_0(active0, 0x1000L); + case 78: + return jjMoveStringLiteralDfa3_0(active0, 0x10000L); + case 83: + return jjMoveStringLiteralDfa3_0(active0, 0x800L); + case 84: + if ((active0 & 0x200L) != 0L) + return jjStartNfaWithStates_0(2, 9, 8); + break; + case 87: + return jjMoveStringLiteralDfa3_0(active0, 0x40000L); + default : + break; + } + return jjStartNfa_0(1, active0); +} +private int jjMoveStringLiteralDfa3_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(1, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0); + return 3; + } + switch(curChar) + { + case 69: + if ((active0 & 0x1000L) != 0L) + return jjStartNfaWithStates_0(3, 12, 8); + break; + case 76: + return jjMoveStringLiteralDfa4_0(active0, 0x4000L); + case 77: + return jjMoveStringLiteralDfa4_0(active0, 0x42000L); + case 82: + return jjMoveStringLiteralDfa4_0(active0, 0x400L); + case 84: + if ((active0 & 0x800L) != 0L) + return jjStartNfaWithStates_0(3, 11, 8); + break; + case 87: + if ((active0 & 0x8000L) != 0L) + return jjStartNfaWithStates_0(3, 15, 8); + break; + case 89: + if ((active0 & 0x10000L) != 0L) + return jjStartNfaWithStates_0(3, 16, 8); + break; + default : + break; + } + return jjStartNfa_0(2, active0); +} +private int jjMoveStringLiteralDfa4_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(2, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0); + return 4; + } + switch(curChar) + { + case 65: + return jjMoveStringLiteralDfa5_0(active0, 0x40000L); + case 69: + return jjMoveStringLiteralDfa5_0(active0, 0x4000L); + case 79: + return jjMoveStringLiteralDfa5_0(active0, 0x2000L); + case 89: + if ((active0 & 0x400L) != 0L) + return jjStartNfaWithStates_0(4, 10, 8); + break; + default : + break; + } + return jjStartNfa_0(3, active0); +} +private int jjMoveStringLiteralDfa5_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(3, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(4, active0); + return 5; + } + switch(curChar) + { + case 65: + return jjMoveStringLiteralDfa6_0(active0, 0x4000L); + case 78: + return jjMoveStringLiteralDfa6_0(active0, 0x40000L); + case 83: + return jjMoveStringLiteralDfa6_0(active0, 0x2000L); + default : + break; + } + return jjStartNfa_0(4, active0); +} +private int jjMoveStringLiteralDfa6_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(4, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(5, active0); + return 6; + } + switch(curChar) + { + case 83: + return jjMoveStringLiteralDfa7_0(active0, 0x4000L); + case 84: + if ((active0 & 0x2000L) != 0L) + return jjStartNfaWithStates_0(6, 13, 8); + break; + case 89: + if ((active0 & 0x40000L) != 0L) + return jjStartNfaWithStates_0(6, 18, 8); + break; + default : + break; + } + return jjStartNfa_0(5, active0); +} +private int jjMoveStringLiteralDfa7_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(5, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(6, active0); + return 7; + } + switch(curChar) + { + case 84: + if ((active0 & 0x4000L) != 0L) + return jjStartNfaWithStates_0(7, 14, 8); + break; + default : + break; + } + return jjStartNfa_0(6, active0); +} +private int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +static final long[] jjbitVec0 = { + 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +private int jjMoveNfa_0(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 8; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x3ff400000000000L & l) != 0L) + { + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + } + else if (curChar == 39) + jjCheckNAdd(6); + else if ((0x8000000200000000L & l) != 0L) + jjCheckNAdd(4); + if ((0x400400800000000L & l) != 0L) + { + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + } + break; + case 8: + if ((0x3ff400000000000L & l) != 0L) + { + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + } + if ((0x400400800000000L & l) != 0L) + { + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + } + break; + case 1: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 19) + kind = 19; + jjstateSet[jjnewStateCnt++] = 1; + break; + case 2: + if ((0x400400800000000L & l) == 0L) + break; + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + break; + case 3: + if ((0x8000000200000000L & l) != 0L) + jjCheckNAdd(4); + break; + case 4: + if ((0x3ff400000000000L & l) == 0L) + break; + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + break; + case 5: + if (curChar == 39) + jjCheckNAdd(6); + break; + case 6: + if ((0xffffff7fffffffffL & l) != 0L) + jjCheckNAddTwoStates(6, 7); + break; + case 7: + if (curChar == 39 && kind > 22) + kind = 22; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + } + if ((0x7fffffe07fffffeL & l) != 0L) + { + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + } + if (curChar == 108) + jjstateSet[jjnewStateCnt++] = 1; + break; + case 8: + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + } + if ((0x7fffffe07fffffeL & l) != 0L) + { + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + } + break; + case 2: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 20) + kind = 20; + jjCheckNAdd(2); + break; + case 4: + if ((0x7fffffe07fffffeL & l) == 0L) + break; + if (kind > 21) + kind = 21; + jjCheckNAdd(4); + break; + case 6: + jjAddStates(0, 1); + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 6: + if ((jjbitVec0[i2] & l2) != 0L) + jjAddStates(0, 1); + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 8 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +static final int[] jjnextStates = { + 6, 7, +}; + +/** Token literal values. */ +public static final String[] jjstrLiteralImages = { +"", "\72", "\133", "\174", "\135", "\54", "\50", "\51", "\75", "\116\117\124", +"\105\126\105\122\131", "\115\117\123\124", "\123\117\115\105", "\124\110\105\115\117\123\124", +"\124\110\105\114\105\101\123\124", "\101\106\105\127", "\115\101\116\131", "\116\117", +"\110\117\127\115\101\116\131", null, null, null, null, null, null, null, null, }; + +/** Lexer state names. */ +public static final String[] lexStateNames = { + "DEFAULT", +}; +static final long[] jjtoToken = { + 0x7fffffL, +}; +static final long[] jjtoSkip = { + 0x7800000L, +}; +protected SimpleCharStream input_stream; +private final int[] jjrounds = new int[8]; +private final int[] jjstateSet = new int[16]; +protected char curChar; +/** Constructor. */ +public DRSParserTokenManager(SimpleCharStream stream){ + if (SimpleCharStream.staticFlag) + throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); + input_stream = stream; +} + +/** Constructor. */ +public DRSParserTokenManager(SimpleCharStream stream, int lexState){ + this(stream); + SwitchTo(lexState); +} + +/** Reinitialise parser. */ +public void ReInit(SimpleCharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +private void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 8; i-- > 0;) + jjrounds[i] = 0x80000000; +} + +/** Reinitialise parser. */ +public void ReInit(SimpleCharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} + +/** Switch to specified lex state. */ +public void SwitchTo(int lexState) +{ + if (lexState >= 1 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +protected Token jjFillToken() +{ + final Token t; + final String curTokenImage; + final int beginLine; + final int endLine; + final int beginColumn; + final int endColumn; + String im = jjstrLiteralImages[jjmatchedKind]; + curTokenImage = (im == null) ? input_stream.GetImage() : im; + beginLine = input_stream.getBeginLine(); + beginColumn = input_stream.getBeginColumn(); + endLine = input_stream.getEndLine(); + endColumn = input_stream.getEndColumn(); + t = Token.newToken(jjmatchedKind, curTokenImage); + + t.beginLine = beginLine; + t.endLine = endLine; + t.beginColumn = beginColumn; + t.endColumn = endColumn; + + return t; +} + +int curLexState = 0; +int defaultLexState = 0; +int jjnewStateCnt; +int jjround; +int jjmatchedPos; +int jjmatchedKind; + +/** Get the next Token. */ +public Token getNextToken() +{ + Token matchedToken; + int curPos = 0; + + EOFLoop : + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + return matchedToken; + } + + try { input_stream.backup(0); + while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) + curChar = input_stream.Begi... [truncated message content] |
From: <lor...@us...> - 2011-06-14 13:31:24
|
Revision: 2872 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2872&view=rev Author: lorenz_b Date: 2011-06-14 13:31:18 +0000 (Tue, 14 Jun 2011) Log Message: ----------- Some changes in Eval script. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.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-06-14 08:24:56 UTC (rev 2871) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-06-14 13:31:18 UTC (rev 2872) @@ -40,8 +40,10 @@ import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; +import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; import com.hp.hpl.jena.sparql.vocabulary.FOAF; import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; @@ -92,7 +94,7 @@ private Lemmatizer lemmatizer = new LingPipeLemmatizer();// StanfordLemmatizer(); - private int maxQueryExecutionTimeInSeconds = 10; + private int maxQueryExecutionTimeInSeconds = 20; public SPARQLTemplateBasedLearner(){ @@ -432,19 +434,19 @@ SortedSet<String> tmp; List<String> uris; - //prune the word list with lemmatizer only when slot type is not RESOURCE + //prune the word list with only when slot type is not RESOURCE List<String> words; if(slot.getSlotType() == SlotType.RESOURCE){ words = slot.getWords(); } else { - words = getLemmatizedWords(slot.getWords()); + words = pruneList(slot.getWords());//getLemmatizedWords(slot.getWords()); } for(String word : words){ tmp = new TreeSet<String>(new StringSimilarityComparator(word)); uris = uriCache.get(word); if(uris == null){ - uris = index.getResources("label:\"" + word + "\""); + uris = index.getResources("label:\"" + word + "\"~0.7"); uriCache.put(word, uris); } tmp.addAll(uris); @@ -457,6 +459,27 @@ return sortedURIs; } + private List<String> pruneList(List<String> words){ + List<String> prunedList = new ArrayList<String>(); + for(String w1 : words){ + boolean smallest = true; + for(String w2 : words){ + if(!w1.equals(w2)){ + if(w2.contains(w1)){ + smallest = false; + break; + } + } + } + if(smallest){ + prunedList.add(w1); + } + } + logger.info("Pruned list: " + prunedList); +// return getLemmatizedWords(words); + return prunedList; + } + private List<String> getLemmatizedWords(List<String> words){ logger.info("Pruning word list " + words + "..."); mon.start(); @@ -618,6 +641,7 @@ } private List<String> getResultFromRemoteEndpoint(String query){ + System.out.println(query); List<String> resources = new ArrayList<String>(); try { ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query + " LIMIT 10")); @@ -656,11 +680,11 @@ // Logger.getLogger(DefaultHttpParams.class).setLevel(Level.OFF); // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); - String question = "Give me all school types."; + String question = "Who are the presidents of the United States?"; // String question = "Give me all films starring Brad Pitt"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://live.dbpedia.org/sparql"), - Collections.<String>singletonList("http://dbpedia.org"), Collections.<String>emptyList()); + Collections.<String>singletonList("http://live.dbpedia.org"), Collections.<String>emptyList()); learner.setEndpoint(endpoint); learner.setQuestion(question); learner.learnSPARQLQueries(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-14 08:24:56 UTC (rev 2871) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-14 13:31:18 UTC (rev 2872) @@ -15,7 +15,7 @@ static final String[] genericReplacements = { "\"", "", "'", "", "[!?.,;]", "" }; static final String[] englishReplacements = { "don't", "do not", "doesn't", "does not" }; - static NER ner = new LingPipeNER(false);//not case sensitive best solution? + static NER ner = new LingPipeNER(true);//not case sensitive best solution? public Preprocessor() { } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-14 08:24:56 UTC (rev 2871) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-14 13:31:18 UTC (rev 2872) @@ -13,19 +13,22 @@ private static String NL = System.getProperty("line.separator"); private static final String PRAEAMBEL_FILE = "tbsl/evaluation/praeambel.tex"; private StringBuilder sb; + private StringBuilder summary; public LatexWriter() { sb = new StringBuilder(); + summary = new StringBuilder(); - loadPraeambel(); + beginSummaryTable(); } - private void loadPraeambel(){ + private String loadPraeambel(){ + StringBuilder praeamble = new StringBuilder(); try { Scanner scanner = new Scanner(new FileInputStream(this.getClass().getClassLoader().getResource(PRAEAMBEL_FILE).getPath())); try { while (scanner.hasNextLine()){ - sb.append(scanner.nextLine() + NL); + praeamble.append(scanner.nextLine() + NL); } } finally{ @@ -34,6 +37,7 @@ } catch (FileNotFoundException e) { e.printStackTrace(); } + return praeamble.toString(); } public void makeTitle(){ @@ -95,11 +99,38 @@ sb.append(text).append("\n"); } + public void beginSummaryTable(){ + summary.append("\\begin{tabular}{| c | l | c | c |}\\hline\n"); + summary.append("id & question & P & R \\\\\\hline\\hline\n"); + } + + public void endSummaryTable(){ + + summary.append("\\end{tabular}\n"); + } + + public void addSummaryTableEntry(int id, String question, double precision, double recall){ + summary.append(id).append(" & ").append(question).append(" & ").append(precision).append(" & ").append(recall).append("\\\\\\hline\n"); + } + public void write(String file){ + endSummaryTable(); + StringBuilder latex = new StringBuilder(); + latex.append(loadPraeambel()); + latex.append("\\begin{document}"); + latex.append("\\maketitle\n"); + latex.append("\\newpage\n"); + latex.append(summary.toString()); + latex.append("\\newpage\n"); + latex.append("\\tableofcontents\n"); + latex.append("\\newpage\n"); + latex.append(sb.toString()); + latex.append("\\end{document}"); + try { Writer output = new BufferedWriter(new FileWriter(file)); try { - output.write( sb.toString() ); + output.write( latex.toString() ); } finally { output.close(); 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-06-14 08:24:56 UTC (rev 2871) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-06-14 13:31:18 UTC (rev 2872) @@ -3,9 +3,12 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -116,6 +119,7 @@ String question; Object answer; for(Entry<Integer, String> entry : id2Query.entrySet()){ + if(entry.getKey() != 23)continue; questionId = entry.getKey(); question = entry.getValue(); try { @@ -150,7 +154,7 @@ answer = new HashSet<String>(); if(!query.contains("LIMIT")){ query = query + " LIMIT 200"; - } + }System.out.println(query); ResultSet rs = endpoint.executeSelect(query); String variable; if(rs.getResultVars().size() == 1){ @@ -158,6 +162,7 @@ } else { variable = targetVar; } + QuerySolution qs; RDFNode node; while(rs.hasNext()){ @@ -177,6 +182,12 @@ public void setEndpoint(SparqlEndpoint endpoint){ this.endpoint = endpoint; + try { + stbl.setEndpoint(new org.dllearner.kb.sparql.SparqlEndpoint( + new URL(endpoint.id().substring(endpoint.id().indexOf("_")+1)), Collections.singletonList("http://dbpedia.org"), Collections.<String>emptyList())); + } catch (MalformedURLException e) { + e.printStackTrace(); + } } public void setUseRemoteValidation(boolean useRemoteValidation){ @@ -188,23 +199,26 @@ int topN2Print = 10; - int questionId; - String question; - String query; - Object answer; + int questionId = -1; + String question = ""; + String targetQuery; + Object targetAnswer; + double precision = -1; + double recall = -1; LatexWriter latex = new LatexWriter(); - latex.beginDocument(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ -// if(i++ == 1)break; + if(entry.getKey() != 23)continue; try { questionId = entry.getKey(); question = entry.getValue(); - query = id2Query.get(questionId); - answer = id2Answer.get(questionId); + targetQuery = id2Query.get(questionId); + targetAnswer = id2Answer.get(questionId); + precision = -1; + recall = -1; logger.info("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); logger.info("QUESTION: " + question + "\n"); - logger.info("TARGET QUERY:\n" + query + "\n"); + logger.info("TARGET QUERY:\n" + targetQuery + "\n"); //write new section for query @@ -213,10 +227,10 @@ latex.beginSubsection("Target"); //write subsubsection for target query latex.beginSubSubsection("Query"); - latex.addListing(query); + latex.addListing(targetQuery); //write subsubsection for target result - latex.beginSubSubsection("Result" + ((answer instanceof Collection<?>) ? "(" + ((Collection)answer).size()+")" : "")); - latex.addText(escapeAnswerString(answer)); + latex.beginSubSubsection("Result" + ((targetAnswer instanceof Collection<?>) ? "(" + ((Collection)targetAnswer).size()+")" : "")); + latex.addText(escapeAnswerString(targetAnswer)); //set the question stbl.setQuestion(question); @@ -269,29 +283,73 @@ k++; } - //write solution subsection if exists if(learnedQuery != null){ latex.beginSubsection("Solution"); latex.beginSubSubsection("Query"); latex.addListing(learnedQuery); latex.beginSubSubsection("Result" + ((learnedAnswer instanceof Collection<?>) ? "(" + ((Collection)learnedAnswer).size()+")" : "")); - latex.addText(escapeAnswerString(learnedAnswer, answer)); + latex.addText(escapeAnswerString(learnedAnswer, targetAnswer)); + precision = computePrecision(targetAnswer, learnedAnswer); + recall = computeRecall(targetAnswer, learnedAnswer); } - + latex.addSummaryTableEntry(questionId, question, precision, recall); } catch (NoTemplateFoundException e) { e.printStackTrace(); logger.error("Template generation failed"); + latex.addSummaryTableEntry(questionId, question, precision, recall); } catch(Exception e){ e.printStackTrace(); logger.error("ERROR"); + latex.addSummaryTableEntry(questionId, question, precision, recall); } } - latex.endDocument(); latex.write("log/evaluation.tex"); } + private double computeRecall(Object targetAnswer, Object answer){ + if(answer == null){ + return -1; + } + double recall = 0; + if(targetAnswer instanceof Collection<?> && answer instanceof Collection<?>){ + Set<String> targetAnswerColl = new HashSet<String>((Collection<? extends String>) targetAnswer); + Set<String> answerColl = new HashSet<String>((Collection<? extends String>) answer); + int targetSize = targetAnswerColl.size(); + targetAnswerColl.retainAll(answerColl); + recall = targetAnswerColl.size() / targetSize; + } else { + if(targetAnswer.equals(answer)){ + recall = 1; + } else { + recall = 0; + } + } + return recall; + } + + private double computePrecision(Object targetAnswer, Object answer){ + if(answer == null){ + return -1; + } + double precision = 0; + if(targetAnswer instanceof Collection<?> && answer instanceof Collection<?>){ + Set<String> targetAnswerColl = new HashSet<String>((Collection<? extends String>) targetAnswer); + Set<String> answerColl = new HashSet<String>((Collection<? extends String>) answer); + int learnedSize = targetAnswerColl.size(); + targetAnswerColl.retainAll(answerColl); + precision = targetAnswerColl.size() / learnedSize; + } else { + if(targetAnswer.equals(answer)){ + precision = 1; + } else { + precision = 0; + } + } + return precision; + } + public void run_without_testing_answer(){ int topN2Print = 25; @@ -304,7 +362,7 @@ latex.beginDocument(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ -// if(i++ == 1)break; + if(entry.getKey() != 23)continue; try { questionId = entry.getKey(); question = entry.getValue(); @@ -445,8 +503,7 @@ File file = new File("src/main/resources/tbsl/evaluation/dbpedia-train.xml"); - SparqlEndpoint endpoint = new CachingSparqlEndpoint(new HttpSparqlEndpoint("http://live.dbpedia.org/sparql/", "http://dbpedia.org/sparql"), "cache"); - + SparqlEndpoint endpoint = new CachingSparqlEndpoint(new HttpSparqlEndpoint("http://139.18.2.96:8910/sparql", "http://dbpedia.org"), "cache");System.out.println(endpoint.id()); Evaluation eval = new Evaluation(file); eval.setEndpoint(endpoint); eval.setUseRemoteValidation(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-06-14 16:39:19
|
Revision: 2873 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2873&view=rev Author: christinaunger Date: 2011-06-14 16:39:12 +0000 (Tue, 14 Jun 2011) Log Message: ----------- [tbsl] added SYMPROPERTY. fixed wrong filters. added more sophisticated adjective templates. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Quantifier.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -165,7 +165,7 @@ System.out.print("|quantor:" + quant); } switch (quant) { - case HOW_MANY: + case HOWMANY: query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); break; case EVERY: @@ -185,13 +185,13 @@ break; case SOME: // break; - case THE_LEAST: + case THELEAST: fresh = "c"+createFresh(); query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,true, new SPARQL_Term(fresh))); query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); query.setLimit(1); break; - case THE_MOST: + case THEMOST: fresh = "c"+createFresh(); query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,true, new SPARQL_Term(fresh))); query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); @@ -353,7 +353,19 @@ } } } - + + // finally remove all conditions that ended up of form equal(y,y) + Set<Simple_DRS_Condition> equalEqualsConditions = new HashSet<Simple_DRS_Condition>(); + for (Simple_DRS_Condition c : drs.getAllSimpleConditions()) { + if(c.getPredicate().equals("equal") && c.getArguments().get(0).getValue().equals(c.getArguments().get(1).getValue())) { + System.out.println("Found " + c); // DEBUG + equalEqualsConditions.add(c); + } + } + for (Simple_DRS_Condition c : equalEqualsConditions) { + drs.removeCondition(c); + } + System.out.println("DRS: " + drs); } private boolean isUri(String arg) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -8,7 +8,6 @@ import org.dllearner.algorithm.tbsl.nlp.LingPipeNER; import org.dllearner.algorithm.tbsl.nlp.NER; -import org.dllearner.algorithm.tbsl.sem.util.Pair; public class Preprocessor { @@ -53,7 +52,7 @@ Pattern compAdjPattern = Pattern.compile("(\\w+/RBR.(\\w+)/JJ)"); Pattern superAdjPattern = Pattern.compile("(\\w+/RBS.(\\w+)/JJ)"); - Pattern howAdjPattern = Pattern.compile("(\\w+/WRB.(\\w+)/JJ)"); + Pattern howAdjPattern = Pattern.compile("(\\w+/WRB.(\\w+)(?<!many)/JJ)"); Pattern nprepPattern = Pattern.compile("\\s((\\w+)/NNS?.of/IN)"); Pattern didPattern = Pattern.compile("(?i)(\\s((did)|(do)|(does))/VB.?)\\s"); Pattern prepfrontPattern = Pattern.compile("(\\A\\w+/((TO)|(IN)).)\\w+/WDT"); // TODO (Nicht ganz sauber. Bei P-Stranding immer zwei Querys, hier nur eine.) @@ -70,6 +69,8 @@ Pattern vprepPattern = Pattern.compile("\\s((\\w+)/V[A-Z]+\\s\\w+/(IN|TO))"); Pattern whenPattern = Pattern.compile("(?i)(when/WRB\\s(.+\\s)(\\w+)/((V[A-Z]+)|(PASS[A-Z]+)))"); Pattern wherePattern = Pattern.compile("(?i)(where/WRB\\s(.+\\s)(\\w+)/((V[A-Z]+)|(PASS[A-Z]+)))"); + Pattern adjnounPattern = Pattern.compile("((\\w+)(?<!many)/JJ.(\\w+)/NN(S)?)"); + Pattern adjnprepPattern = Pattern.compile("((\\w+)(?<!many)/JJ.(\\w+)/NPREP)"); m = compAdjPattern.matcher(condensedstring); while (m.find()) { @@ -147,6 +148,14 @@ while (m.find()) { condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2) + m.group(3)+"/WHERE"); } + m = adjnounPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(4)+"/JJNN"); + } + m = adjnprepPattern.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(4)+"/JJNPREP"); + } return condensedstring; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -219,15 +219,28 @@ public void removeCondition(DRS_Condition condition) { m_DRS_Conditions.remove(condition); + Set<DRS_Condition> donotkeep = new HashSet<DRS_Condition>(); for (DRS_Condition c : m_DRS_Conditions) { + if (c.equals(condition)) { + donotkeep.add(c); + } if (c.isNegatedCondition()) { ((Negated_DRS) c).getDRS().removeCondition(condition); } - else if (condition.isComplexCondition()) { + else if (c.isComplexCondition()) { ((Complex_DRS_Condition) c).getRestrictor().removeCondition(condition); ((Complex_DRS_Condition) c).getScope().removeCondition(condition); } } + + // only because remove sometimes fails (for whatever mysterious reason) + Set<DRS_Condition> newconditions = new HashSet<DRS_Condition>(); + for (DRS_Condition c : m_DRS_Conditions) { + if (!c.equals(condition)) { + newconditions.add(c); + } + } + m_DRS_Conditions = newconditions; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Constructor.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -16,6 +16,7 @@ try { drs = parser.DRS(); } catch (ParseException e) { + System.err.println("DRS Parse Exception: " + string); e.printStackTrace(); } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Quantifier.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Quantifier.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/DRS_Quantifier.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -1,5 +1,5 @@ package org.dllearner.algorithm.tbsl.sem.drs; public enum DRS_Quantifier { - SOME, EVERY, MOST, MANY, HOW_MANY, THE_MOST, FEW, NO, THE_LEAST + SOME, EVERY, MOST, MANY, HOWMANY, THEMOST, FEW, NO, THELEAST } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -188,11 +188,11 @@ if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} - if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} - if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THEMOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THELEAST);} if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} - if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOWMANY);} if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} {if (true) return drs;} Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/drs/reader/DRSParser.jj 2011-06-14 16:39:12 UTC (rev 2873) @@ -185,11 +185,11 @@ if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} - if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} - if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THEMOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THELEAST);} if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} - if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOWMANY);} if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} return drs; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -406,11 +406,11 @@ if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} - if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} - if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THEMOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THELEAST);} if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} - if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOWMANY);} if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} {if (true) return drs;} @@ -492,6 +492,7 @@ if (type.toString().equals("CLASS")) { slottype = SlotType.CLASS; } else if (type.toString().equals("RESOURCE")) { slottype = SlotType.RESOURCE; } else if (type.toString().equals("PROPERTY")) { slottype = SlotType.PROPERTY; } + else if (type.toString().equals("SYMPROPERTY")) { slottype = SlotType.SYMPROPERTY; } else { slottype = SlotType.UNSPEC; } {if (true) return new Slot(ref.toString(),slottype,words);} @@ -874,17 +875,17 @@ return false; } + private boolean jj_3_38() { + if (jj_scan_token(DR)) return true; + return false; + } + private boolean jj_3R_15() { if (jj_scan_token(WORD)) return true; if (jj_scan_token(14)) return true; return false; } - private boolean jj_3_38() { - if (jj_scan_token(DR)) return true; - return false; - } - private boolean jj_3_23() { if (jj_scan_token(MOST)) return true; return false; @@ -1094,18 +1095,18 @@ return false; } + private boolean jj_3_36() { + if (jj_scan_token(15)) return true; + if (jj_3R_12()) return true; + return false; + } + private boolean jj_3_18() { if (jj_scan_token(2)) return true; if (jj_3R_7()) return true; return false; } - private boolean jj_3_36() { - if (jj_scan_token(15)) return true; - if (jj_3R_12()) return true; - return false; - } - private boolean jj_3_26() { if (jj_scan_token(HOWMANY)) return true; return false; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj 2011-06-14 16:39:12 UTC (rev 2873) @@ -376,11 +376,11 @@ if (quantifier.toString().equals("EVERY")) {drs.setQuantifier(DRS_Quantifier.EVERY);} if (quantifier.toString().equals("SOME")) {drs.setQuantifier(DRS_Quantifier.SOME);} if (quantifier.toString().equals("MOST")) {drs.setQuantifier(DRS_Quantifier.MOST);} - if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THE_MOST);} - if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THE_LEAST);} + if (quantifier.toString().equals("THEMOST")) {drs.setQuantifier(DRS_Quantifier.THEMOST);} + if (quantifier.toString().equals("THELEAST")) {drs.setQuantifier(DRS_Quantifier.THELEAST);} if (quantifier.toString().equals("AFEW")) {drs.setQuantifier(DRS_Quantifier.FEW);} if (quantifier.toString().equals("MANY")) {drs.setQuantifier(DRS_Quantifier.MANY);} - if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOW_MANY);} + if (quantifier.toString().equals("HOWMANY")) {drs.setQuantifier(DRS_Quantifier.HOWMANY);} if (quantifier.toString().equals("NO")) {drs.setQuantifier(DRS_Quantifier.NO);} return drs; @@ -452,6 +452,7 @@ if (type.toString().equals("CLASS")) { slottype = SlotType.CLASS; } else if (type.toString().equals("RESOURCE")) { slottype = SlotType.RESOURCE; } else if (type.toString().equals("PROPERTY")) { slottype = SlotType.PROPERTY; } + else if (type.toString().equals("SYMPROPERTY")) { slottype = SlotType.SYMPROPERTY; } else { slottype = SlotType.UNSPEC; } return new Slot(ref.toString(),slottype,words); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -1,5 +1,5 @@ package org.dllearner.algorithm.tbsl.sparql; public enum SlotType { - CLASS, PROPERTY, RESOURCE, UNSPEC + CLASS, PROPERTY, SYMPROPERTY, RESOURCE, UNSPEC } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -11,7 +11,7 @@ public class SlotBuilder { private WordNet wordnet; - private String[] noun = {"NN","NNS","NNP","NNPS","NPREP"}; + private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; private String[] adjective = {"JJ","JJR","JJS","JJH"}; private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; private String[] preps = {"IN","TO"}; @@ -53,11 +53,11 @@ List<String> words = new ArrayList<String>(); words.add(token); - if (!pos.equals("NNP") && !pos.equals("NNPS")) { + if (!pos.equals("NNP") && !pos.equals("NNPS") && !pos.equals("JJNN")) { words.addAll(wordnet.getBestSynonyms(token)); } - String tokenfluent = token.replaceAll(" ",""); + String tokenfluent = token.replaceAll(" ","").replaceAll("_",""); String slotX = "x/" + type + "/"; String slotP = "SLOT_" + tokenfluent + "/" + type + "/"; String slotC = "SLOT_" + tokenfluent + "/CLASS/"; @@ -115,8 +115,8 @@ "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotC + "," + "SLOT_of/PROPERTY/" + "]>"}; String[] dpEntry2 = {token, "(DP DET[det] (NP " + treetoken + " DP[pobj]))", - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotP + "]> ;; " + - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotC + "," + "SLOT_of/PROPERTY/" + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotP + "]> ;; " + + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotC + "," + "SLOT_of/PROPERTY/" + "]>"}; String[] npEntry = {token, "(NP " + treetoken + " DP[pobj])", "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotP + "]> ;; " + @@ -125,83 +125,124 @@ result.add(dpEntry2); result.add(npEntry); } + else if (pos.equals("JJNPREP")) { + String jjtoken = token.substring(0,token.indexOf("_")); + String nntoken = token.substring(token.indexOf("_")+1); + String slotfluent = "SLOT_" + tokenfluent + "/" + type + "/" + token; + String slotnn = "SLOT_" + nntoken + "/PROPERTY/" + nntoken; + String slotnnc = "SLOT_" + nntoken + "/CLASS/" + nntoken; + String slotjj = "SLOT_" + jjtoken + "/CLASS/" + jjtoken; + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotfluent + "]> ;; " + + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotnn + "," + slotjj + "]> ;;" + + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotnnc + "," + slotjj + "," + "SLOT_of/PROPERTY/" + "]>"}; + String[] dpEntry2 = {token, + "(DP DET[det] (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotfluent + "]> ;; " + + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotnn + "," + slotjj + "]> ;;" + + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slotnnc + "," + slotjj + "," + "SLOT_of/PROPERTY/" + "]>"}; + String[] npEntry = {token, + "(NP " + treetoken + " DP[pobj])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotfluent + "]> ;; " + + "<x,l1,<e,t>,[ l1:[ | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(y,x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotnn + "," + slotjj + "]> ;;" + + "<x,l1,<e,t>,[ l1:[ | SLOT_" + jjtoken + "(x), SLOT_" + nntoken + "(x), SLOT_of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slotnnc + "," + slotjj + "," + "SLOT_of/PROPERTY/" + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); + result.add(npEntry); + } + else if(pos.equals("JJNN") && token.contains("_")) { + String jjtoken = token.substring(0,token.indexOf("_")); + String nntoken = token.substring(token.indexOf("_")+1); + String slotfluent = "SLOT_" + tokenfluent + "/CLASS/" + token; + String slotnn = "SLOT_" + nntoken + "/CLASS/" + nntoken; + String slotjj = "SLOT_" + jjtoken + "/CLASS/" + jjtoken; + String[] npEntry = {token, + "(NP " + treetoken + " )", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slotfluent + "]> ;; " + + "<x,l1,<e,t>,[ l1:[ | SLOT_" + nntoken + "(x), SLOT_" + jjtoken + "(x) ] ],[],[],[" + slotnn + "," + slotjj + "]>"}; + result.add(npEntry); + } } /* VERBS */ else if (equalsOneOf(pos,verb)) { - String slot = "SLOT_" + token + "/PROPERTY/" + token; + String slot = "SLOT_" + token + "/PROPERTY/" + token; + String symslot = "SLOT_" + token + "/SYMPROPERTY/" + token; List<String> preds = wordnet.getAttributes(token); for (Iterator<String> i = preds.iterator(); i.hasNext();) { slot += i.next(); + symslot += i.next(); if (i.hasNext()) { slot += "^"; + symslot += "^"; } } if (pos.equals("PASSIVE")) { String[] passEntry1 = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; String[] passEntry2 = {token, "(S DP[wh] (VP DP[dp] V:'" + token + "'))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,wh,<<e,t>,t>),(l3,y,dp,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,wh,<<e,t>,t>),(l3,y,dp,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(passEntry1); result.add(passEntry2); } else if (pos.equals("PASSPART")) { String[] passpartEntry = {token, "(NP NP* (VP V:'" + token + "' DP[dp]))", - "<x,l1,t,[ l1:[ | SLOT_" + token + "(y,x) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[ | SLOT_" + token + "(y,x) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + symslot + "]>"}; result.add(passpartEntry); } else if (pos.equals("VPASS")) { String[] passEntry = {token, "(S DP[subj] (VP V:'" + token + "'))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(y,x) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(passEntry); } else if (pos.equals("VPASSIN")) { String[] passEntry = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(passEntry); } else if (pos.equals("GERUNDIN")) { String[] gerundinEntry1 = {token, "(NP NP* V:'" + token + "' DP[obj]))", - "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + symslot + "]>"}; String[] gerundinEntry2 = {token, "(ADJ V:'" + token + "' DP[obj]))", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + symslot + "]>"}; result.add(gerundinEntry1); result.add(gerundinEntry2); } else if (pos.equals("VPREP")) { String[] passEntry = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; String[] whEntry = {token, "(S DP[obj] (VP DP[subj] V:'" + token + "'))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(passEntry); result.add(whEntry); } else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP")) { String[] vEntry = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(vEntry); } else if (pos.equals("VB")) { String[] whEntry = {token, "(S DP[obj] (VP DP[subj] V:'" + token + "'))", - "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; result.add(whEntry); } else if (pos.equals("VBG") || pos.equals("VBN")) { String[] gerEntry = {token, "(NP NP* (VP V:'" + token + "' DP[dp]))", - "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + "<x,l1,t,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + symslot + "]>"}; result.add(gerEntry); } else if (pos.equals("WHEN")) { @@ -297,7 +338,7 @@ } /* PREPOSITIONS */ else if (equalsOneOf(pos,preps)) { - String slot = "SLOT_" + token + "/PROPERTY/"; + String slot = "SLOT_" + token + "/SYMPROPERTY/"; String[] npAdjunct = {token, "(NP NP* (PP P:'" + token.toLowerCase() + "' DP[pobj]))", "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],["+slot+"]>"}; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -99,12 +99,13 @@ d2s.redundantEqualRenaming(drs); if (!containsModuloRenaming(drses,drs)) { -// // DEBUG -// System.out.println(drs); -// for (Slot sl : slots) { -// System.out.println(sl.toString()); -// } -// // + // DEBUG + System.out.println(dude); + System.out.println(drs); + for (Slot sl : slots) { + System.out.println(sl.toString()); + } + // drses.add(drs); try { Modified: trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex =================================================================== --- trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex 2011-06-14 16:39:12 UTC (rev 2873) @@ -16,7 +16,10 @@ which are || (NP NP* (S C:'which' (VP V:'are' DP[object]))) || <x, l1, t, [ l1:[ | x=y ] ], [ (l2,y,object,<<e,t>,t>) ], [ l2=l1 ],[]> that are || (NP NP* (S C:'that' (VP V:'are' DP[object]))) || <x, l1, t, [ l1:[ | x=y ] ], [ (l2,y,object,<<e,t>,t>) ], [ l2=l1 ],[]> - is there || (S V:'is' C:'there' DP[dp]) || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> + is there || (S V:'is' C:'there' DP[dp]) || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> + are there || (S V:'are' C:'there' DP[dp]) || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> + is there || (S DP[dp] V:'is' C:'there') || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> + are there || (S DP[dp] V:'are' C:'there') || <x, l1, t, [ l1:[ | ] ], [ (l2,x,dp,<<e,t>,t>) ], [ l2=l1 ],[]> // TO BE: YES/NO QUESTIONS @@ -141,7 +144,7 @@ // EXISTENTIAL // ----------- - there || (DP (NP EX:'there')) || <x,l1,<<e,t>,t>,[l1:[x|]],[],[],[]> + there || (DP (NP EX:'there')) || <x,l1,<<e,t>,t>,[l1:[|]],[],[],[]> // ORDINAL NUMBERS (1-10) Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/POStest.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -3,7 +3,6 @@ import java.io.IOException; import java.util.List; -import org.annolab.tt4j.TreeTaggerException; import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.LingPipePartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; @@ -12,7 +11,7 @@ public class POStest { - public static void main(String[] args) throws IOException, ClassNotFoundException, TreeTaggerException { + public static void main(String[] args) throws IOException, ClassNotFoundException { String sentence = "When did Nirvana record Nevermind?"; // String sentence = "Which rivers does the Brooklyn Bridge cross?"; Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -12,9 +12,9 @@ // TODO Auto-generated method stub String nep = "World"; - String s = "Who/WP developed/VBD the/DT video/NN game/NN World/NN of/IN Warcraft/NNP"; + String s = "how/WRB many/JJ and/CONJ how/WRB big/JJ"; - Pattern p = Pattern.compile("(\\s)?(" + nep + "/([A-Z]+))(\\s)?"); + Pattern p = Pattern.compile("(\\w+/WRB.(\\w+)(?<!many)/JJ)"); Matcher m = p.matcher(s); while (m.find()) { System.out.println("Found! " + m.group(2)); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-06-14 13:31:18 UTC (rev 2872) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-06-14 16:39:12 UTC (rev 2873) @@ -16,7 +16,7 @@ public static void main(String[] args) { Templator templator = new Templator(); - templator.setUNTAGGED_INPUT(false); + templator.setUNTAGGED_INPUT(true); System.out.println("======= SPARQL Templator v0.1 ============="); System.out.println("\nType ':q' to quit."); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-06-15 08:51:04
|
Revision: 2877 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2877&view=rev Author: lorenz_b Date: 2011-06-15 08:50:57 +0000 (Wed, 15 Jun 2011) Log Message: ----------- Fixed bug in evaluation output. Made evaluation configurable with properties file. 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 Added Paths: ----------- trunk/components-ext/src/main/resources/tbsl/evaluation/evaluation.properties 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-06-15 07:04:54 UTC (rev 2876) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-06-15 08:50:57 UTC (rev 2877) @@ -8,7 +8,6 @@ import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -40,10 +39,8 @@ import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; -import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; -import com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP; import com.hp.hpl.jena.sparql.vocabulary.FOAF; import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; @@ -66,7 +63,7 @@ private Ranking ranking = Ranking.SIMILARITY; private boolean useRemoteEndpointValidation = true; private boolean stopIfQueryResultNotEmpty = true; - private int maxQueriesPerTemplate = 25; + private int maxTestedQueriesPerTemplate = 25; private SparqlEndpoint endpoint = SparqlEndpoint.getEndpointDBpediaLiveAKSW(); private ExtractionDBCache cache = new ExtractionDBCache("cache"); @@ -148,6 +145,14 @@ this.maxQueryExecutionTimeInSeconds = maxQueryExecutionTimeInSeconds; } + public int getMaxTestedQueriesPerTemplate() { + return maxTestedQueriesPerTemplate; + } + + public void setMaxTestedQueriesPerTemplate(int maxTestedQueriesPerTemplate) { + this.maxTestedQueriesPerTemplate = maxTestedQueriesPerTemplate; + } + public void setRanking(Ranking ranking) { this.ranking = ranking; } @@ -579,7 +584,7 @@ private List<Query> getNBestQueryCandidatesForTemplates(Map<Template, Collection<? extends Query>> template2Queries){ List<Query> queries = new ArrayList<Query>(); for(Entry<Template, Collection<? extends Query>> entry : template2Queries.entrySet()){ - int max = Math.min(maxQueriesPerTemplate, entry.getValue().size()); + int max = Math.min(maxTestedQueriesPerTemplate, entry.getValue().size()); int i = 0; for(Query q : entry.getValue()){ queries.add(q); @@ -681,11 +686,10 @@ // Logger.getLogger(DefaultHttpParams.class).setLevel(Level.OFF); // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); - String question = "Give me all actors starring in Batman Begins."; -// String question = "Give me all films starring Brad Pitt"; + String question = "Give me all school types."; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); - SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://live.dbpedia.org/sparql"), - Collections.<String>singletonList("http://live.dbpedia.org"), Collections.<String>emptyList()); + SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), + Collections.<String>singletonList(""), Collections.<String>emptyList()); learner.setEndpoint(endpoint); learner.setQuestion(question); learner.learnSPARQLQueries(); Added: trunk/components-ext/src/main/resources/tbsl/evaluation/evaluation.properties =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/evaluation.properties (rev 0) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/evaluation.properties 2011-06-15 08:50:57 UTC (rev 2877) @@ -0,0 +1,10 @@ +#endpoint http://live.dbpedia.org/sparql +endpointURL=http://greententacle.techfak.uni-bielefeld.de:5171/sparql +defaultGraphURI= +# validate against remote endpoint if 'true', otherwise load a model and validate against it +useRemoteEndpointValidation=true +# number of tested SPARQL queries per template +maxTestedQueriesPerTemplate=25 +# max execution time for a SPARQL query before canceled +maxQueryExecutionTimeInSeconds=20 + Property changes on: trunk/components-ext/src/main/resources/tbsl/evaluation/evaluation.properties ___________________________________________________________________ Added: svn:mime-type + text/plain 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-06-15 07:04:54 UTC (rev 2876) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-06-15 08:50:57 UTC (rev 2877) @@ -1,11 +1,11 @@ package org.dllearner.algorithm.tbsl; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; -import java.net.URLDecoder; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Properties; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; @@ -47,9 +48,8 @@ public class Evaluation{ private static Logger logger = Logger.getLogger(Evaluation.class); + private static String PROPERTIES_PATH = "tbsl/evaluation/evaluation.properties"; - private File evaluationFile; - private SortedMap<Integer, String> id2Question = new TreeMap<Integer, String>(); private SortedMap<Integer, String> id2Query = new TreeMap<Integer, String>(); private SortedMap<Integer, Object> id2Answer = new TreeMap<Integer, Object>(); @@ -58,14 +58,41 @@ private SPARQLTemplateBasedLearner stbl; - public Evaluation(File ... evaluationFiles){ + private int testID = -1; + + public Evaluation(File ... evaluationFiles) throws FileNotFoundException, IOException{ for(File file : evaluationFiles){ readQueries(file); } stbl = new SPARQLTemplateBasedLearner(); + + init(); } - public void init(){ + public void init() throws FileNotFoundException, IOException{ + //load properties for evaluation + Properties props = new Properties(); + props.load(new FileInputStream(this.getClass().getClassLoader().getResource(PROPERTIES_PATH).getPath())); + + String endpointURL = props.getProperty("endpointURL", "http://live.dbpedia.org/sparql"); + String defaultGraphURI = props.getProperty("defaultGraphURI", "http://live.dbpedia.org"); + this.endpoint = new CachingSparqlEndpoint(new HttpSparqlEndpoint(endpointURL, defaultGraphURI), "cache"); + try { + stbl.setEndpoint(new org.dllearner.kb.sparql.SparqlEndpoint( + new URL(endpointURL), Collections.singletonList(defaultGraphURI), Collections.<String>emptyList())); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + boolean useRemoteEndpointValidation = Boolean.parseBoolean(props.getProperty("useRemoteEndpointValidation", "True")); + stbl.setUseRemoteEndpointValidation(useRemoteEndpointValidation); + + int maxTestedQueriesPerTemplate = Integer.parseInt(props.getProperty("maxTestedQueriesPerTemplate", "25")); + stbl.setMaxTestedQueriesPerTemplate(maxTestedQueriesPerTemplate); + + int maxQueryExecutionTimeInSeconds = Integer.parseInt(props.getProperty("maxQueryExecutionTimeInSeconds", "20")); + stbl.setMaxQueryExecutionTimeInSeconds(maxQueryExecutionTimeInSeconds); + loadAnswers(); } @@ -119,7 +146,7 @@ String question; Object answer; for(Entry<Integer, String> entry : id2Query.entrySet()){ - if(entry.getKey() != 23)continue; + if(testID != -1 && entry.getKey() != testID)continue; questionId = entry.getKey(); question = entry.getValue(); try { @@ -153,7 +180,7 @@ } else { answer = new HashSet<String>(); if(!query.contains("LIMIT")){ - query = query + " LIMIT 200"; + query = query + " LIMIT 500"; }System.out.println(query); ResultSet rs = endpoint.executeSelect(query); String variable; @@ -168,12 +195,13 @@ while(rs.hasNext()){ qs = rs.next(); node = qs.get(variable); - if(node.isURIResource()){ - ((HashSet)answer).add(node.asResource().getURI()); - } else if(node.isLiteral()){ - ((HashSet)answer).add(node.asLiteral().getLexicalForm()); + if(node != null){ + if(node.isURIResource()){ + ((HashSet)answer).add(node.asResource().getURI()); + } else if(node.isLiteral()){ + ((HashSet)answer).add(node.asLiteral().getLexicalForm()); + } } - } } logger.debug("Answer: " + answer); @@ -194,7 +222,15 @@ stbl.setUseRemoteEndpointValidation(useRemoteValidation); } + public void setMaxQueryExecutionTimeInSeconds(int maxQueryExecutionTimeInSeconds){ + stbl.setMaxQueryExecutionTimeInSeconds(maxQueryExecutionTimeInSeconds); + } + public void setMaxTestedQueriesPerTemplate(int maxTestedQueriesPerTemplate) { + stbl.setMaxTestedQueriesPerTemplate(maxTestedQueriesPerTemplate); + } + + public void run(){ int topN2Print = 10; @@ -208,7 +244,7 @@ LatexWriter latex = new LatexWriter(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ - if(entry.getKey() != 23)continue; + if(testID != -1 && entry.getKey() != testID)continue; try { questionId = entry.getKey(); question = entry.getValue(); @@ -308,19 +344,20 @@ latex.write("log/evaluation.tex"); } - private double computeRecall(Object targetAnswer, Object answer){ - if(answer == null){ + private double computeRecall(Object targetAnswer, Object learnedAnswer){ + if(learnedAnswer == null){ return -1; } double recall = 0; - if(targetAnswer instanceof Collection<?> && answer instanceof Collection<?>){ + if(targetAnswer instanceof Collection<?> && learnedAnswer instanceof Collection<?>){ Set<String> targetAnswerColl = new HashSet<String>((Collection<? extends String>) targetAnswer); - Set<String> answerColl = new HashSet<String>((Collection<? extends String>) answer); + Set<String> learnedAnswerColl = new HashSet<String>((Collection<? extends String>) learnedAnswer); int targetSize = targetAnswerColl.size(); - targetAnswerColl.retainAll(answerColl); - recall = targetAnswerColl.size() / targetSize; + targetAnswerColl.retainAll(learnedAnswerColl); + recall = (double)targetAnswerColl.size() / (double)targetSize; + recall = Math.round( recall * 100. ) / 100.; } else { - if(targetAnswer.equals(answer)){ + if(targetAnswer.equals(learnedAnswer)){ recall = 1; } else { recall = 0; @@ -329,19 +366,20 @@ return recall; } - private double computePrecision(Object targetAnswer, Object answer){ - if(answer == null){ + private double computePrecision(Object targetAnswer, Object learnedAnswer){ + if(learnedAnswer == null){ return -1; } double precision = 0; - if(targetAnswer instanceof Collection<?> && answer instanceof Collection<?>){ + if(targetAnswer instanceof Collection<?> && learnedAnswer instanceof Collection<?>){ Set<String> targetAnswerColl = new HashSet<String>((Collection<? extends String>) targetAnswer); - Set<String> answerColl = new HashSet<String>((Collection<? extends String>) answer); - int learnedSize = targetAnswerColl.size(); - targetAnswerColl.retainAll(answerColl); - precision = targetAnswerColl.size() / learnedSize; + Set<String> learnedAnswerColl = new HashSet<String>((Collection<? extends String>) learnedAnswer); + int learnedSize = learnedAnswerColl.size(); + targetAnswerColl.retainAll(learnedAnswerColl); + precision = (double)targetAnswerColl.size() / (double)learnedSize; + precision = Math.round( precision * 100. ) / 100.; } else { - if(targetAnswer.equals(answer)){ + if(targetAnswer.equals(learnedAnswer)){ precision = 1; } else { precision = 0; @@ -362,7 +400,7 @@ latex.beginDocument(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ - if(entry.getKey() != 23)continue; + if(entry.getKey() != testID)continue; try { questionId = entry.getKey(); question = entry.getValue(); @@ -501,13 +539,14 @@ fileAppender.setThreshold(Level.INFO); Logger.getRootLogger().addAppender(fileAppender); + if(args.length == 0){ + System.out.println("Usage: Evaluation <file>"); + System.exit(0); + } - File file = new File("src/main/resources/tbsl/evaluation/dbpedia-train.xml"); - SparqlEndpoint endpoint = new CachingSparqlEndpoint(new HttpSparqlEndpoint("http://139.18.2.96:8910/sparql", "http://dbpedia.org"), "cache");System.out.println(endpoint.id()); + File file = new File(Evaluation.class.getClassLoader().getResource(args[0]).getPath()); + Evaluation eval = new Evaluation(file); - eval.setEndpoint(endpoint); - eval.setUseRemoteValidation(true); - eval.init(); eval.run(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-06-16 10:10:31
|
Revision: 2895 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2895&view=rev Author: lorenz_b Date: 2011-06-16 10:10:24 +0000 (Thu, 16 Jun 2011) Log Message: ----------- Implemented Triple reverse function, to generate queries for SYMPROPERTIES slot in both directions. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.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-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -394,6 +394,19 @@ } } for(Query query : queries){ + if(slot.getSlotType() == SlotType.SYMPROPERTY){ + Query reversedQuery = new Query(query); + reversedQuery.getTriplesWithVar(var).iterator().next().reverse(); +// logger.info("NORMAL QUERY:\n" + query.toString()); +// logger.info("REVERSED QUERY:\n" + reversedQuery.toString()); + if(prefix != null){ + reversedQuery.addPrefix(prefix); + reversedQuery.replaceVarWithPrefixedURI(var, uri); + } else { + reversedQuery.replaceVarWithURI(var, uri); + } + tmp.add(reversedQuery); + } Query newQuery = new Query(query); if(prefix != null){ newQuery.addPrefix(prefix); @@ -401,7 +414,6 @@ } else { newQuery.replaceVarWithURI(var, uri); } - tmp.add(newQuery); } prefix = null; @@ -699,7 +711,7 @@ // Logger.getLogger(DefaultHttpParams.class).setLevel(Level.OFF); // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); - String question = "Give me all school types."; + String question = "Who developed the video game World of Warcraft?"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), Collections.<String>singletonList(""), Collections.<String>emptyList()); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -386,6 +386,28 @@ } } + + public List<SPARQL_Triple> getTriplesWithVar(String var){ + List<SPARQL_Triple> triples = new ArrayList<SPARQL_Triple>(); + + SPARQL_Term variable; + SPARQL_Property property; + SPARQL_Value value; + for(SPARQL_Triple triple : conditions){ + variable = triple.getVariable(); + property = triple.getProperty(); + value = triple.getValue(); + + if(variable.isVariable() && variable.getName().equals(var)){ + triples.add(triple); + } else if(property.isVariable() && property.getName().equals(var)){ + triples.add(triple); + } else if(value.isVariable() && value.getName().equals(var)){ + triples.add(triple); + } + } + return triples; + } @Override public int hashCode() { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -34,10 +34,11 @@ public void reverse(){ SPARQL_Term newVariable = new SPARQL_Term(this.value.getName()); newVariable.setIsVariable(this.value.isVariable()); - this.variable = newVariable; SPARQL_Value newValue = new SPARQL_Value(this.variable.getName()); newValue.setIsVariable(this.variable.isVariable()); + + this.variable = newVariable; this.value = newValue; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -103,8 +103,8 @@ public void beginSummaryTable(){ summary.append("\\small\n"); - summary.append("\\begin{tabular}{| c | l | c | c |}\\hline\n"); - summary.append("id & question & P & R \\\\\\hline\\hline\n"); + summary.append("\\begin{tabular}{| c | p{10cm} | c | c | c |}\\hline\n"); + summary.append("id & question & P & R & \\\\\\hline\\hline\n"); } public void endSummaryTable(){ @@ -112,8 +112,16 @@ summary.append("\\end{tabular}\n"); } - public void addSummaryTableEntry(int id, String question, double precision, double recall){ - summary.append("\\ref{" + id + "}").append(" & ").append(question).append(" & ").append(precision).append(" & ").append(recall).append("\\\\\\hline\n"); + public void addSummaryTableEntry(int id, String question, double precision, double recall, String errorCode){ + String precisionStr = ""; + String recallStr = ""; + if(precision != -1 && recall != -1){ + precisionStr = Double.toString(precision); + recallStr = Double.toString(recall); + } + summary.append("\\ref{" + id + "}").append(" & ").append(question). + append(" & ").append(precisionStr).append(" & ").append(recallStr).append(" & ").append(errorCode).append("\\\\\\hline\n"); + } public void write(String file){ 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-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -261,6 +261,7 @@ Object targetAnswer; double precision = -1; double recall = -1; + String errorCode = ""; LatexWriter latex = new LatexWriter(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ @@ -272,6 +273,7 @@ targetAnswer = id2Answer.get(questionId); precision = -1; recall = -1; + errorCode = ""; logger.info("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); logger.info("QUESTION: " + question + "\n"); logger.info("TARGET QUERY:\n" + targetQuery + "\n"); @@ -362,6 +364,9 @@ } coveredEntitiesMap.put(entity, covered); + if(!covered){ +// errorCode = "NE"; + } } latex.beginSubSubsection("Target entities"); StringBuilder sb = new StringBuilder(); @@ -373,7 +378,7 @@ latex.addText(sb.toString()); latex.beginSubSubsection("Keyword -> URIs"); sb = new StringBuilder(); - sb.append("\\begin{tabular}{| l | l |}\\hline\n"); + sb.append("\\begin{tabular}{| l | p{10cm} |}\\hline\n"); for(Entry<Slot, List<String>> slot2URI : slot2URIsMap.entrySet()){ if(!slot2URI.getKey().getWords().isEmpty()){ StringBuilder uris = new StringBuilder(); @@ -396,16 +401,17 @@ precision = computePrecision(targetAnswer, learnedAnswer); recall = computeRecall(targetAnswer, learnedAnswer); } - latex.addSummaryTableEntry(questionId, question, precision, recall); + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } catch (NoTemplateFoundException e) { e.printStackTrace(); logger.error("Template generation failed"); - latex.addSummaryTableEntry(questionId, question, precision, recall); + errorCode = "NT"; + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } catch(Exception e){ e.printStackTrace(); logger.error("ERROR"); - latex.addSummaryTableEntry(questionId, question, precision, recall); + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } } latex.write("log/evaluation.tex"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-06-16 13:02:44
|
Revision: 2896 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2896&view=rev Author: christinaunger Date: 2011-06-16 13:02:38 +0000 (Thu, 16 Jun 2011) Log Message: ----------- [tbsl] some small fixes Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train-tagged(ideal).xml trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-16 10:10:24 UTC (rev 2895) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-06-16 13:02:38 UTC (rev 2896) @@ -46,6 +46,7 @@ /* condense: * x/RBR adj/JJ > adj/JJR, x/RBS adj/JJ > adj/JJS, x/WRB adj/JJ > x/JJH * nn/RBR of/IN > nn/NPREP + * usw. * */ String condensedstring = taggedstring; Matcher m; @@ -60,8 +61,9 @@ Pattern passivePattern1b = Pattern.compile("(\\s((has)|(have)|(had))/VB[A-Z]?(.+\\s)been/VBN\\s(\\w+)/VB(N|D))"); Pattern passivePattern2a = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.by/IN)"); Pattern pseudopassPattern = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(\\w+)/VBN.\\w+/TO)"); - Pattern pseudopwhPattern = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(.+)\\s(\\w+)/VBN.\\w+/TO)"); - Pattern passivePattern2b = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(.+)(\\s\\w+)/VB(N|D))"); + Pattern pseudopwhPattern = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.(.+)\\s(\\w+)/VB(N|D).\\w+/TO)"); + Pattern saveIsThere = Pattern.compile("((is)|(are))/(VB[A-Z]?).there/(RB)"); + Pattern passivePattern2b = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.((.+)\\s\\w+)/VB(N|D))"); Pattern passpartPattern = Pattern.compile("\\s((\\w+)/VBN.by/IN)"); Pattern vpassPattern = Pattern.compile("\\s(\\w+/VBD.(\\w+)/VBN)"); Pattern vpassinPattern = Pattern.compile("\\s((\\w+)/VPASS.\\w+/IN)"); @@ -74,87 +76,112 @@ m = compAdjPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/JJR"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJR"); } m = superAdjPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/JJS"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJS"); } m = howAdjPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/JJH"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/JJH"); } m = nprepPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/NPREP"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/NPREP"); } m = didPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by \"\""); condensedstring = condensedstring.replaceFirst(m.group(1),""); } m = prepfrontPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by \"\""); condensedstring = condensedstring.replaceFirst(m.group(1),""); } m = passivePattern1a.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(6)+"/PASSIVE"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(6)+"/PASSIVE"); } m = passivePattern1b.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(6)+m.group(7)+"/PASSIVE"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(6) + m.group(7)+"/PASSIVE"); } m = passivePattern2a.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(7)+"/PASSIVE"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+"/PASSIVE"); } m = pseudopassPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(7)+"/VPREP"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+"/VPREP"); } m = pseudopwhPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(7)+m.group(8)+"/VPREP"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+" "+m.group(8)+"/VPREP"); } + m = saveIsThere.matcher(condensedstring); + while (m.find()) { + condensedstring = condensedstring.replaceFirst(m.group(4),"LEX").replaceFirst(m.group(5),"LEX"); // TODO what a dirty hack! + } m = passivePattern2b.matcher(condensedstring); while (m.find()) { - condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7) + m.group(8)+"/PASSIVE"); + System.out.println("Replacing " + m.group(1) + " by " + m.group(7)+"/PASSIVE"); + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(7)+"/PASSIVE"); } m = passpartPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/PASSPART"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/PASSPART"); } m = vpassPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/VPASS"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPASS"); } m = vpassinPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/VPASSIN"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPASSIN"); } m = gerundinPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/GERUNDIN"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/GERUNDIN"); } m = vprepPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"/VPREP"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"/VPREP"); } m = whenPattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+m.group(3)+"/WHEN"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2) + m.group(3)+"/WHEN"); } m = wherePattern.matcher(condensedstring); while (m.find()) { + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+m.group(3)+"/WHERE"); condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2) + m.group(3)+"/WHERE"); } m = adjnounPattern.matcher(condensedstring); while (m.find()) { - condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(4)+"/JJNN"); + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"_"+m.group(3)+"/JJNN"); + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(3)+"/JJNN"); } m = adjnprepPattern.matcher(condensedstring); while (m.find()) { - condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(4)+"/JJNPREP"); + System.out.println("Replacing " + m.group(1) + " by " + m.group(2)+"_"+m.group(3)+"/JJNPREP"); + condensedstring = condensedstring.replaceFirst(m.group(1),m.group(2)+"_"+m.group(3)+"/JJNPREP"); } return condensedstring; Modified: trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train-tagged(ideal).xml =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train-tagged(ideal).xml 2011-06-16 10:10:24 UTC (rev 2895) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train-tagged(ideal).xml 2011-06-16 13:02:38 UTC (rev 2896) @@ -19239,7 +19239,7 @@ </answers> </question> <question id="15"> -<string>Which/WDT capitals/NNS in/IN Europe/NNP were/VBD host/NN cities/NNS of/IN the/DT summer/NN olympic/JJ games/NNS</string> +<string>Which/WDT capitals/NNS in/IN Europe/NNP were/VBD host/NN cities/NNS of/IN the/DT Summer/NNP Olympic/NNP Games/NNPS</string> <query> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> Modified: trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml 2011-06-16 10:10:24 UTC (rev 2895) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/dbpedia-train.xml 2011-06-16 13:02:38 UTC (rev 2896) @@ -19301,7 +19301,7 @@ </question> <question id="15"> <string> -Which capitals in Europe were host cities of the summer olympic games? +Which capitals in Europe were host cities of the Summer Olympic Games? </string> <query> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-06-16 10:10:24 UTC (rev 2895) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java 2011-06-16 13:02:38 UTC (rev 2896) @@ -12,13 +12,13 @@ // TODO Auto-generated method stub String nep = "World"; - String s = "how/WRB many/JJ and/CONJ how/WRB big/JJ"; + String s = "is/VBZ there/RB a/DT video/NN game/NN called/VBN Battle/NNP Chess/NNP"; - Pattern p = Pattern.compile("(\\w+/WRB.(\\w+)(?<!many)/JJ)"); + Pattern p = Pattern.compile("(((is)|(are)|(was)|(were))/VB[A-Z]?.((.+)\\s\\w+)/VB(N|D))(?<!is/VBZ there/RB.+/VB(N|D))"); Matcher m = p.matcher(s); while (m.find()) { - System.out.println("Found! " + m.group(2)); - s = s.replaceFirst(m.group(2),nep+"/NNP"); + System.out.println("Found! " + m.group(1) + " m.group(7): " + m.group(7)); + s = s.replaceFirst(m.group(1),m.group(7)+"/NNP"); } System.out.println(s); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-07-25 09:05:30
|
Revision: 2961 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2961&view=rev Author: lorenz_b Date: 2011-07-25 09:05:24 +0000 (Mon, 25 Jul 2011) Log Message: ----------- Setting Wordnet dictionary via properties file. 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/WordNetTest.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-07-25 09:03:10 UTC (rev 2960) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-07-25 09:05:24 UTC (rev 2961) @@ -60,7 +60,7 @@ LUCENE, SIMILARITY, NONE } - private static final String OPTIONS_FILE = "tbsl/tbsl.properties"; + private static final String OPTIONS_FILE = SPARQLTemplateBasedLearner.class.getClassLoader().getResource("tbsl/tbsl.properties").getPath(); private static final Logger logger = Logger.getLogger(SPARQLTemplateBasedLearner.class); private Monitor mon = MonitorFactory.getTimeMonitor("tbsl"); @@ -100,14 +100,16 @@ private Lemmatizer lemmatizer = new LingPipeLemmatizer();// StanfordLemmatizer(); - public SPARQLTemplateBasedLearner(){ - try { - init(new Options(this.getClass().getClassLoader().getResourceAsStream(OPTIONS_FILE))); - } catch (InvalidFileFormatException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } + public SPARQLTemplateBasedLearner() throws InvalidFileFormatException, FileNotFoundException, IOException{ + this(OPTIONS_FILE); + } + + public SPARQLTemplateBasedLearner(String optionsFile) throws InvalidFileFormatException, FileNotFoundException, IOException{ + this(new Options(new FileReader(new File(optionsFile)))); + } + + public SPARQLTemplateBasedLearner(Options options){ + init(options); Set<String> predicateFilters = new HashSet<String>(); predicateFilters.add("http://dbpedia.org/ontology/wikiPageWikiLink"); @@ -120,22 +122,6 @@ templateGenerator = new Templator(); } - public SPARQLTemplateBasedLearner(String optionsFile){ - try { - init(new Options(new FileReader(new File(optionsFile)))); - } catch (InvalidFileFormatException e) { - e.printStackTrace(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public SPARQLTemplateBasedLearner(Options options){ - init(options); - } - private void init(Options options){ String resourcesIndexUrl = options.fetch("solr.resources.url"); resource_index = new SolrSearch(resourcesIndexUrl); @@ -153,6 +139,9 @@ useRemoteEndpointValidation = options.get("learning.validationType", "remote").equals("remote") ? true : false; stopIfQueryResultNotEmpty = Boolean.parseBoolean(options.get("learning.stopAfterFirstNonEmptyQueryResult", "true")); maxTestedQueriesPerTemplate = Integer.parseInt(options.get("learning.maxTestedQueriesPerTemplate", "20")); + + String wordnetPath = options.get("wordnet.dictionary", "tbsl/dict"); + System.setProperty("wordnet.database.dir", wordnetPath); } public void setEndpoint(SparqlEndpoint endpoint){ @@ -737,10 +726,12 @@ /** * @param args - * @throws MalformedURLException * @throws NoTemplateFoundException + * @throws IOException + * @throws FileNotFoundException + * @throws InvalidFileFormatException */ - public static void main(String[] args) throws MalformedURLException, NoTemplateFoundException { + public static void main(String[] args) throws NoTemplateFoundException, InvalidFileFormatException, FileNotFoundException, IOException { // Logger.getLogger(DefaultHttpParams.class).setLevel(Level.OFF); // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-07-25 09:03:10 UTC (rev 2960) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-07-25 09:05:24 UTC (rev 2961) @@ -7,7 +7,6 @@ public static void main(String[] args) { WordNet wordnet = new WordNet(); - wordnet.init(); System.out.println(wordnet.getBestSynonyms("city")); System.out.println(wordnet.getAttributes("biggest")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-09-07 17:09:56
|
Revision: 3244 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3244&view=rev Author: christinaunger Date: 2011-09-07 17:09:48 +0000 (Wed, 07 Sep 2011) Log Message: ----------- [tbsl] added a simpler version of templates without triples (for template filling by means of graph exploration) Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/TestFrontend.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/resources/tbsl/lexicon/english.lex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/PatternMatchingTest.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicSlot.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term_deprecated.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicTemplator.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/TestFrontend.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/TestFrontend.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/TestFrontend.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -5,17 +5,24 @@ import java.io.InputStreamReader; import java.util.Set; +import org.dllearner.algorithm.tbsl.sparql.BasicQueryTemplate; import org.dllearner.algorithm.tbsl.sparql.Template; +import org.dllearner.algorithm.tbsl.templator.BasicTemplator; import org.dllearner.algorithm.tbsl.templator.Templator; public class TestFrontend { + + // MODE ::= BASIC | LEIPZIG + static String MODE = "BASIC"; public static void main(String[] args) { Templator templator = new Templator(); + BasicTemplator btemplator = new BasicTemplator(); - System.out.println("======= SPARQL Templator v0.1 ============="); + System.out.println("======= SPARQL Templator ================="); + System.out.println("Running in " + MODE + " mode."); System.out.println("\nType ':q' to quit."); while (true) { @@ -24,13 +31,19 @@ if (s.equals(":q")) { System.exit(0); } - - Set<Template> temps = templator.buildTemplates(s); - for (Template temp : temps) { - System.out.println(temp.toString()); + if (MODE.equals("BASIC")) { + Set<BasicQueryTemplate> querytemps = btemplator.buildBasicQueries(s); + for (BasicQueryTemplate temp : querytemps) { + System.out.println(temp.toString()); + } } - + else if (MODE.equals("LEIPZG")) { + Set<Template> temps = templator.buildTemplates(s); + for (Template temp : temps) { + System.out.println(temp.toString()); + } + } } } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,321 @@ +package org.dllearner.algorithm.tbsl.converter; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.dllearner.algorithm.tbsl.sem.drs.Complex_DRS_Condition; +import org.dllearner.algorithm.tbsl.sem.drs.DRS; +import org.dllearner.algorithm.tbsl.sem.drs.DRS_Condition; +import org.dllearner.algorithm.tbsl.sem.drs.DRS_Quantifier; +import org.dllearner.algorithm.tbsl.sem.drs.DiscourseReferent; +import org.dllearner.algorithm.tbsl.sem.drs.Negated_DRS; +import org.dllearner.algorithm.tbsl.sem.drs.Simple_DRS_Condition; +import org.dllearner.algorithm.tbsl.sparql.BasicQueryTemplate; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Aggregate; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Filter; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_OrderBy; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Pair; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_PairType; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Property; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_QueryType; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Term; +import org.dllearner.algorithm.tbsl.sparql.Slot; + + +public class DRS2BasicSPARQL_Converter { + + List<Slot> slots; + BasicQueryTemplate query; + List<Integer> usedInts; + + public DRS2BasicSPARQL_Converter() { + query = new BasicQueryTemplate(); + usedInts = new ArrayList<Integer>(); + } + + public void setSlots(List<Slot> ls) { + slots = ls; + } + + // TODO ?? + public List<SPARQL_Property> getProperties(Complex_DRS_Condition cond) { + List<SPARQL_Property> retVal = new ArrayList<SPARQL_Property>(); + + return retVal; + } + + public BasicQueryTemplate convert(DRS drs,List<Slot> ls) { + + query = new BasicQueryTemplate(); + slots = ls; + + return convert(drs, new BasicQueryTemplate(), false); + } + + private BasicQueryTemplate convert(DRS drs, BasicQueryTemplate query, boolean negate) { + + redundantEqualRenaming(drs); + + for (DRS_Condition condition : drs.getConditions()) { + convertCondition(condition,query); + if (negate) { + for (SPARQL_Term term : query.getSelTerms()) { + SPARQL_Filter f = new SPARQL_Filter(); + f.addNotBound(term); + query.addFilter(f); + } + } + } + + for (DiscourseReferent referent : drs.getDRs()) { + if (referent.isMarked()) { + SPARQL_Term term = new SPARQL_Term(referent.toString().replace("?","")); + term.setIsVariable(true); + query.addSelTerm(term); + } + if (referent.isNonexistential()) { + SPARQL_Term term = new SPARQL_Term(referent.getValue()); + term.setIsVariable(true); + SPARQL_Filter f = new SPARQL_Filter(); + f.addNotBound(term); + query.addFilter(f); + } + for (Slot s : slots) { + if (s.getAnchor().equals(referent.getValue())) { + query.addSlot(s); + break; + } + } + } + + if (query.getSelTerms().size() == 0) + query.setQt(SPARQL_QueryType.ASK); + + return query; + } + + private BasicQueryTemplate convertCondition(DRS_Condition condition, BasicQueryTemplate query) { + + if (condition.isComplexCondition()) { + + Complex_DRS_Condition complex = (Complex_DRS_Condition) condition; + + DRS restrictor = complex.getRestrictor(); + DRS_Quantifier quant = complex.getQuantifier(); + DRS scope = complex.getScope(); + + // call recursively + for (DRS_Condition cond : restrictor.getConditions()) { + query = convertCondition(cond, query); + } + for (DRS_Condition cond : scope.getConditions()) { + query = convertCondition(cond, query); + } + // add the quantifier at last + DiscourseReferent ref = complex.getReferent(); + String sref = ref.getValue(); + String fresh; + + switch (quant) { + case HOWMANY: + query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); + break; + case EVERY: + // probably save to ignore // TODO unless in cases like "which actor starred in every movie by spielberg?" + // query.addFilter(new SPARQL_Filter(new SPARQL_Term(sref))); + break; + case NO: + SPARQL_Filter f = new SPARQL_Filter(); + f.addNotBound(new SPARQL_Term(sref)); + query.addFilter(f); + break; + case FEW: // + break; + case MANY: // + break; + case MOST: // + break; + case SOME: // + break; + case THELEAST: + fresh = "c"+createFresh(); + query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); + query.setLimit(1); + break; + case THEMOST: + fresh = "c"+createFresh(); + query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); + query.setLimit(1); + break; + } + } else if (condition.isNegatedCondition()) { + Negated_DRS neg = (Negated_DRS) condition; + query = convert(neg.getDRS(), query, true); + + } else { + Simple_DRS_Condition simple = (Simple_DRS_Condition) condition; + + String predicate = simple.getPredicate(); + if (predicate.startsWith("SLOT")) { + for (Slot s : slots) { + if (s.getAnchor().equals(predicate)) { + s.setToken(predicate); + predicate = "p" + createFresh(); + s.setAnchor(simple.getArguments().get(0).getValue()); + break; + } + else if (s.getToken().equals(predicate)) { + predicate = s.getAnchor(); + } + } + } + + SPARQL_Property prop = new SPARQL_Property(predicate); + prop.setIsVariable(true); + + boolean noliteral = true; + if (simple.getArguments().size() > 1 && simple.getArguments().get(1).getValue().matches("\\d+")) { + noliteral = false; + } + + if (predicate.equals("p")) { + query.addConditions(simple.toString()); + } + else if (predicate.equals("count")) { + // COUNT(?x) AS ?c + if (noliteral) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); + return query; + } + else { + String fresh = "c"+createFresh(); + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(fresh), + new SPARQL_Term(simple.getArguments().get(1).getValue(),true), + SPARQL_PairType.EQ))); + return query; + } + } else if (predicate.equals("sum")) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); + return query; + } else if (predicate.equals("greater")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),noliteral), + SPARQL_PairType.GT))); + return query; + } else if (predicate.equals("greaterorequal")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),noliteral), + SPARQL_PairType.GTEQ))); + return query; + } else if (predicate.equals("less")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),noliteral), + SPARQL_PairType.LT))); + return query; + } else if (predicate.equals("lessorequal")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),noliteral), + SPARQL_PairType.LTEQ))); + return query; + } else if (predicate.equals("maximum")) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); + query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.DESC)); + query.setLimit(1); + return query; + } else if (predicate.equals("minimum")) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); + query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.ASC)); + query.setLimit(1); + return query; + } else if (predicate.equals("countmaximum")) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); + query.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); + query.setLimit(1); + return query; + } else if (predicate.equals("countminimum")) { + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); + query.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); + query.setLimit(1); + return query; + } else if (predicate.equals("equal")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term(simple.getArguments().get(1).getValue(),noliteral), + SPARQL_PairType.EQ))); + return query; + } + } + return query; + } + + + public void redundantEqualRenaming(DRS drs) { + + Set<Simple_DRS_Condition> equalsConditions = new HashSet<Simple_DRS_Condition>(); + for (Simple_DRS_Condition c : drs.getAllSimpleConditions()) { + if(c.getPredicate().equals("equal")) { + equalsConditions.add(c); + } + } + + DiscourseReferent firstArg; + DiscourseReferent secondArg; + + for (Simple_DRS_Condition c : equalsConditions) { + + firstArg = c.getArguments().get(0); + secondArg = c.getArguments().get(1); + + boolean oneArgIsInt = firstArg.getValue().matches("\\d+") || secondArg.getValue().matches("\\d+"); + + drs.removeCondition(c); + if (!oneArgIsInt) { + drs.replaceEqualRef(firstArg, secondArg, false); + } else { + drs.replaceEqualRef(firstArg, secondArg, true); + } + for (Slot s : slots) { + if (s.getAnchor().equals(firstArg.getValue())) { + s.setAnchor(secondArg.getValue()); + } + } + } + + // finally remove all conditions that ended up of form equal(y,y) + Set<Simple_DRS_Condition> equalEqualsConditions = new HashSet<Simple_DRS_Condition>(); + for (Simple_DRS_Condition c : drs.getAllSimpleConditions()) { + if(c.getPredicate().equals("equal") && c.getArguments().get(0).getValue().equals(c.getArguments().get(1).getValue())) { + equalEqualsConditions.add(c); + } + } + for (Simple_DRS_Condition c : equalEqualsConditions) { + drs.removeCondition(c); + } + } + + private int createFresh() { + + int fresh = 0; + for (int i = 0; usedInts.contains(i); i++) { + fresh = i+1 ; + } + usedInts.add(fresh); + return fresh; + } +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -187,13 +187,13 @@ break; case THELEAST: fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,true, new SPARQL_Term(fresh))); + query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); query.setLimit(1); break; case THEMOST: fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,true, new SPARQL_Term(fresh))); + query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); query.setLimit(1); break; @@ -238,7 +238,7 @@ if (predicate.equals("count")) { // COUNT(?x) AS ?c - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, true, new SPARQL_Term(simple.getArguments().get(1).getValue(),true))); + query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); return query; } else if (predicate.equals("sum")) { query.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -10,6 +10,7 @@ import org.dllearner.algorithm.tbsl.ltag.data.TreeNode; import org.dllearner.algorithm.tbsl.ltag.reader.ParseException; import org.dllearner.algorithm.tbsl.sem.util.Pair; +import org.dllearner.algorithm.tbsl.templator.BasicSlotBuilder; import org.dllearner.algorithm.tbsl.templator.SlotBuilder; /** @@ -29,13 +30,14 @@ static List<Integer> usedInts = new ArrayList<Integer>(); static ArrayList<String> doubles = new ArrayList<String>(); - static ParseGrammar filter(String taggedinput,LTAGLexicon grammar,List<Integer> temps) { + static ParseGrammar filter(String taggedinput,LTAGLexicon grammar,List<Integer> temps, String mode) { // DISAM: CLEAR usedInts = new ArrayList<Integer>(); doubles = new ArrayList<String>(); SlotBuilder slotbuilder = new SlotBuilder(); + BasicSlotBuilder basicslotbuilder = new BasicSlotBuilder(); List<String> input = getWordList(taggedinput.trim()); input.add(0,"#"); // This is important. Don't mess with the parser! @@ -235,7 +237,16 @@ } System.out.println("build slot for: " + buildSlotFor + "\n"); - List<String[]> entries = slotbuilder.build(taggedinput,buildSlotFor); + List<String[]> entries; + if (mode.equals("LEIPZIG")) { + entries = slotbuilder.build(taggedinput,buildSlotFor); + } + else if (mode.equals("BASIC")) { + entries = basicslotbuilder.build(taggedinput,buildSlotFor); + } + else { // should never happen! + entries = new ArrayList<String[]>(); + } try { for (String[] entry : entries) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -15,6 +15,7 @@ public boolean USE_LESS_MEMORY = false; public boolean SHOW_GRAMMAR = false; public boolean SHOW_LEXICAL_COVERAGE = false; + public String MODE = "BASIC"; // MODE ::= BASIC | LEIPZIG private String[] input; private List<DerivationTree> derivationTrees = new ArrayList<DerivationTree>(); @@ -53,7 +54,7 @@ * times, a tree for each token is added. Both trees need to have * different treeIDs for the parser to work correctly. */ - parseGrammar = GrammarFilter.filter(taggeduserinput,grammar,temporaryEntries); + parseGrammar = GrammarFilter.filter(taggeduserinput,grammar,temporaryEntries,MODE); String inputNoTags = ""; for (String s : taggeduserinput.split(" ")) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Preprocessor.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -13,17 +13,21 @@ static final String[] genericReplacements = { "\"", "", "'", "", "[!?.,;]", "" }; static final String[] englishReplacements = { "don't", "do not", "doesn't", "does not" }; + static boolean USE_NER; + static NER ner; - static NER ner = new LingPipeNER(true);//not case sensitive best solution? - - public Preprocessor() { + public Preprocessor(boolean n) { + USE_NER = n; + if (USE_NER) { + ner = new LingPipeNER(true); //not case sensitive best solution? + } } - public static String normalize(String s) { + public String normalize(String s) { return normalize(s, new String[0]); } - public static String normalize(String s, String... repl) { + public String normalize(String s, String... repl) { if (repl.length % 2 != 0 || genericReplacements.length % 2 != 0 || englishReplacements.length % 2 != 0) { throw new IllegalArgumentException(); @@ -41,7 +45,7 @@ return s; } - public static String condense(String taggedstring) { + public String condense(String taggedstring) { /* condense: * x/RBR adj/JJ > adj/JJR, x/RBS adj/JJ > adj/JJS, x/WRB adj/JJ > x/JJH @@ -187,7 +191,7 @@ return condensedstring; } - public static String condenseNominals(String s) { + public String condenseNominals(String s) { String flat = s; @@ -216,7 +220,7 @@ return flat; } - public static String findNEs(String tagged,String untagged) { + public String findNEs(String tagged,String untagged) { String out = tagged; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/data/Dude.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -12,6 +12,7 @@ import org.dllearner.algorithm.tbsl.sem.util.Label; import org.dllearner.algorithm.tbsl.sem.util.SemanticRepresentation; import org.dllearner.algorithm.tbsl.sem.util.Type; +import org.dllearner.algorithm.tbsl.sparql.BasicSlot; import org.dllearner.algorithm.tbsl.sparql.Slot; public class Dude implements SemanticRepresentation{ @@ -221,6 +222,7 @@ List<Argument> args = new ArrayList<Argument>(); List<DominanceConstraint> dcs = new ArrayList<DominanceConstraint>(); List<Slot> ls = new ArrayList<Slot>(); + List<BasicSlot> lbs = new ArrayList<BasicSlot>(); for (DRS component : components) { cs.add(component.clone()); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sem/dudes/reader/DUDE_Parser.jj 2011-09-07 17:09:48 UTC (rev 3244) @@ -62,7 +62,7 @@ List<DRS> drs_list = null; List<DominanceConstraint> constraints = null; List<Argument> arg_list = null; - List<Slot> slots = null; + List<Slot> slots = null; } { "<" referent = dr() "," label=<LABEL> "," type=Type() "," "[" (drs_list=DRS_List())? "]" "," "[" (arg_list = Arg_List())? "]" Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,284 @@ +package org.dllearner.algorithm.tbsl.sparql; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class BasicQueryTemplate +{ + + Set<SPARQL_Term> selTerms; // SELECT ?x ?y + Set<SPARQL_Prefix> prefixes; + Set<String> conditions; + Set<SPARQL_Term> orderBy; + Set<SPARQL_Filter> filter; + SPARQL_QueryType qt = SPARQL_QueryType.SELECT; + List<Slot> slots; + + int limit; + int offset; + + public BasicQueryTemplate() + { + super(); + selTerms = new HashSet<SPARQL_Term>(); + prefixes = new HashSet<SPARQL_Prefix>(); + conditions = new HashSet<String>(); + orderBy = new HashSet<SPARQL_Term>(); + filter = new HashSet<SPARQL_Filter>(); + slots = new ArrayList<Slot>(); + } + + public void addSlot(Slot s) { + slots.add(s); + } + + public void addConditions(String s) { + conditions.add(s); + } + + @Override + public String toString() + { + + String retVal = ""; + for (SPARQL_Prefix prefix : prefixes) + { + retVal += prefix.toString() + "\n"; + } + + if (qt == SPARQL_QueryType.SELECT) + { + retVal += "\nSELECT "; + + for (SPARQL_Term term : selTerms) + { + retVal += term.toString() + " "; + } + } + else retVal += "\nASK "; + + retVal += "WHERE {\n"; + + for (String s : conditions) { + retVal += "\t" + s + "\n"; + } + + for (SPARQL_Filter f : filter) + { + retVal += "\t" + f.toString() + " .\n"; + } + + retVal += "}\n"; + + if (orderBy != null && !orderBy.isEmpty()) + { + retVal += "ORDER BY "; + for (SPARQL_Term term : orderBy) + { + retVal += term.toString() + " "; + } + retVal += "\n"; + } + + if (limit != 0 || offset != 0) + { + retVal += "LIMIT " + limit + " OFFSET " + offset + "\n"; + } + + retVal += "\n"; + + for (Slot s : slots) { + retVal += s.toString() + "\n"; + } + + return retVal; + + } + + public List<String> getVariablesAsStringList() + { + List<String> result = new ArrayList<String>(); + for (SPARQL_Term term : selTerms) + { + result.add(term.toString()); + } + return result; + } + + public Set<SPARQL_Term> getSelTerms() + { + return selTerms; + } + + public void setSelTerms(Set<SPARQL_Term> selTerms) + { + this.selTerms = selTerms; + } + + public Set<SPARQL_Prefix> getPrefixes() + { + return prefixes; + } + + public Set<SPARQL_Filter> getFilters(){ + return filter; + } + + public void setPrefixes(Set<SPARQL_Prefix> prefixes) + { + this.prefixes = prefixes; + } + + public void addFilter(SPARQL_Filter f) + { + for (int i = 0; i < filter.size(); ++i) + if (f.equals(filter.toArray()[i])) return; + + this.filter.add(f); + } + + public Set<SPARQL_Term> getOrderBy() + { + return orderBy; + } + + public void addOrderBy(SPARQL_Term term) + { + if (term.orderBy == SPARQL_OrderBy.NONE) + term.orderBy = SPARQL_OrderBy.ASC; + + orderBy.add(term); + } + + public void addPrefix(SPARQL_Prefix prefix) + { + prefixes.add(prefix); + } + + public void addSelTerm(SPARQL_Term term) + { + for (int i = 0; i < selTerms.size(); ++i) + if (term.equals(selTerms.toArray()[i])) return; + + selTerms.add(term); + } + + public boolean isSelTerm(SPARQL_Term term) + { + for (int i = 0; i < selTerms.size(); ++i) // TODO: have to figure out + // while .remove doesn't + // call .equals + { + if (term.equals(selTerms.toArray()[i])) return true; + } + return false; + } + + public void removeSelTerm(SPARQL_Term term) + { + Set<SPARQL_Term> newSelTerms = new HashSet<SPARQL_Term>(); + for (int i = 0; i < selTerms.size(); ++i) // TODO: have to figure out + // while .remove doesn't + // call .equals + { + if (!term.equals(selTerms.toArray()[i])) newSelTerms.add((SPARQL_Term) selTerms.toArray()[i]); + } + selTerms = newSelTerms; + } + + public int getLimit() + { + return limit; + } + + public void setLimit(int limit) + { + this.limit = limit; + } + + public int getOffset() + { + return offset; + } + + public void setOffset(int offset) + { + this.offset = offset; + } + + public SPARQL_QueryType getQt() + { + return qt; + } + + public void setQt(SPARQL_QueryType qt) + { + this.qt = qt; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((filter == null) ? 0 : filter.hashCode()); + result = prime * result + limit; + result = prime * result + offset; + result = prime * result + ((orderBy == null) ? 0 : orderBy.hashCode()); + result = prime * result + + ((prefixes == null) ? 0 : prefixes.hashCode()); + result = prime * result + ((qt == null) ? 0 : qt.hashCode()); + result = prime * result + + ((selTerms == null) ? 0 : selTerms.hashCode()); + result = prime * result + ((slots == null) ? 0 : slots.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BasicQueryTemplate other = (BasicQueryTemplate) obj; + if (filter == null) { + if (other.filter != null) + return false; + } else if (!filter.equals(other.filter)) + return false; + if (limit != other.limit) + return false; + if (offset != other.offset) + return false; + if (orderBy == null) { + if (other.orderBy != null) + return false; + } else if (!orderBy.equals(other.orderBy)) + return false; + if (prefixes == null) { + if (other.prefixes != null) + return false; + } else if (!prefixes.equals(other.prefixes)) + return false; + if (qt == null) { + if (other.qt != null) + return false; + } else if (!qt.equals(other.qt)) + return false; + if (selTerms == null) { + if (other.selTerms != null) + return false; + } else if (!selTerms.equals(other.selTerms)) + return false; + if (slots == null) { + if (other.slots != null) + return false; + } else if (!slots.equals(other.slots)) + return false; + return true; + } + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicSlot.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicSlot.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicSlot.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,100 @@ +package org.dllearner.algorithm.tbsl.sparql; + + +public class BasicSlot { + + String anchor; + String token; + SlotType type; + + public BasicSlot(String a,String t) { + anchor = a; + token = t; + type = SlotType.UNSPEC; + replaceUnderscores(); + } + public BasicSlot(String a,SlotType t,String s) { + anchor = a; + token = s; + type = t; + replaceUnderscores(); + } + + public void setSlotType(SlotType st) { + type = st; + } + + public SlotType getSlotType(){ + return type; + } + + public String getAnchor() { + return anchor; + } + public void setAnchor(String s) { + anchor = s; + } + public String getToken() { + return token; + } + public void setToken(String t) { + token = t; + } + + public void replaceReferent(String ref1,String ref2) { + if (anchor.equals(ref1)) { + anchor = ref2; + } + } + + public void replaceUnderscores() { + token = token.replaceAll("_"," "); + } + + @Override + public String toString() { + return anchor + ": " + type + " {" + token + "}"; + } + @Override + public BasicSlot clone() { + return new BasicSlot(anchor,type,token); + } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((anchor == null) ? 0 : anchor.hashCode()); + result = prime * result + ((token == null) ? 0 : token.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BasicSlot other = (BasicSlot) obj; + if (anchor == null) { + if (other.anchor != null) + return false; + } else if (!anchor.equals(other.anchor)) + return false; + if (token == null) { + if (other.token != null) + return false; + } else if (!token.equals(other.token)) + return false; + if (type == null) { + if (other.type != null) + return false; + } else if (!type.equals(other.type)) + return false; + return true; + } + + + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicSlot.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -1,42 +1,45 @@ package org.dllearner.algorithm.tbsl.sparql; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Aggregate; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_OrderBy; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Term; +import org.dllearner.algorithm.tbsl.sparql.SPARQL_Value; + public class SPARQL_Term extends SPARQL_Value { SPARQL_OrderBy orderBy = SPARQL_OrderBy.NONE; SPARQL_Aggregate aggregate = SPARQL_Aggregate.NONE; - SPARQL_Term as = null; + boolean isURI = false; + String alias; public SPARQL_Term(String name) { super(name); this.name = name.replace("?","").replace("!",""); + alias = name; } - public SPARQL_Term(String name,boolean b) { + public SPARQL_Term(String name, boolean uri) { super(name); this.name = name.replace("?","").replace("!",""); - setIsVariable(b); + isURI = uri; + alias = name; } public SPARQL_Term(String name, SPARQL_Aggregate aggregate) { super(name); this.aggregate = aggregate; + alias = name; } - public SPARQL_Term(String name, SPARQL_Aggregate aggregate,boolean b,SPARQL_Term t) { + public SPARQL_Term(String name, SPARQL_Aggregate aggregate, String as) { super(name); this.aggregate = aggregate; - setIsVariable(b); - as = t; + alias = as; } - public SPARQL_Term(String name, SPARQL_OrderBy orderBy) { + public SPARQL_Term(String name, SPARQL_OrderBy ob) { super(name); - this.orderBy = orderBy; + orderBy = ob; + alias = name; } - public SPARQL_Term(String name, SPARQL_OrderBy orderBy,boolean b,SPARQL_Term t) { - super(name); - this.orderBy = orderBy; - setIsVariable(b); - as = t; - } @Override public boolean equals(Object obj) { @@ -50,8 +53,8 @@ return orderBy; } - public void setOrderBy(SPARQL_OrderBy orderBy) { - this.orderBy = orderBy; + public void setOrderBy(SPARQL_OrderBy ob) { + orderBy = ob; } public SPARQL_Aggregate getAggregate() { @@ -64,35 +67,29 @@ public boolean isString() { - return name.startsWith("'"); + return name.startsWith("'") || name.matches("\\d+"); } @Override public String toString() { +// System.err.println("SPARQL_Term: name="+name+",alias="+alias+",agg="+aggregate+",orderBy="+orderBy); // DEBUG if (aggregate != SPARQL_Aggregate.NONE) { - if (as != null) { - return aggregate+"(?"+name.toLowerCase()+") AS " + as.toString(); - } - else { + if (alias != null && !alias.equals(name)) + return aggregate+"(?"+name.toLowerCase()+") AS ?" + alias; + else return aggregate+"(?"+name.toLowerCase()+")"; - } } if (orderBy != SPARQL_OrderBy.NONE) { - String n; - if (as != null) { n = as.name; } else { n = name; } if (orderBy == SPARQL_OrderBy.ASC) - return "ASC(?"+n.toLowerCase()+")"; - else - return "DESC(?"+n.toLowerCase()+")"; + return "ASC(?"+alias.toLowerCase()+")"; + else + return "DESC(?"+alias.toLowerCase()+")"; } - if (isVariable() && !isString()) { - return "?"+name.toLowerCase(); - } - else { + if (isString() || isURI) { return name; } + else return "?"+name.toLowerCase(); } - } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term_deprecated.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term_deprecated.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term_deprecated.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,98 @@ +package org.dllearner.algorithm.tbsl.sparql; + +public class SPARQL_Term_deprecated extends SPARQL_Value { + + SPARQL_OrderBy orderBy = SPARQL_OrderBy.NONE; + SPARQL_Aggregate aggregate = SPARQL_Aggregate.NONE; + SPARQL_Term_deprecated as = null; + + public SPARQL_Term_deprecated(String name) { + super(name); + this.name = name.replace("?","").replace("!",""); + } + public SPARQL_Term_deprecated(String name,boolean b) { + super(name); + this.name = name.replace("?","").replace("!",""); + setIsVariable(b); + } + + public SPARQL_Term_deprecated(String name, SPARQL_Aggregate aggregate) { + super(name); + this.aggregate = aggregate; + } + public SPARQL_Term_deprecated(String name, SPARQL_Aggregate aggregate,boolean b,SPARQL_Term_deprecated t) { + super(name); + this.aggregate = aggregate; + setIsVariable(b); + as = t; + } + + public SPARQL_Term_deprecated(String name, SPARQL_OrderBy orderBy) { + super(name); + this.orderBy = orderBy; + } + public SPARQL_Term_deprecated(String name, SPARQL_OrderBy orderBy,boolean b,SPARQL_Term_deprecated t) { + super(name); + this.orderBy = orderBy; + setIsVariable(b); + as = t; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof SPARQL_Term_deprecated)) return false; + + SPARQL_Term_deprecated f = (SPARQL_Term_deprecated) obj; + return f.getName().toLowerCase().equals(this.getName().toLowerCase()) && f.getAggregate() == aggregate && f.getOrderBy() == orderBy; + } + + public SPARQL_OrderBy getOrderBy() { + return orderBy; + } + + public void setOrderBy(SPARQL_OrderBy orderBy) { + this.orderBy = orderBy; + } + + public SPARQL_Aggregate getAggregate() { + return aggregate; + } + + public void setAggregate(SPARQL_Aggregate aggregate) { + this.aggregate = aggregate; + } + + public boolean isString() + { + return name.startsWith("'"); + } + + @Override + public String toString() { + if (aggregate != SPARQL_Aggregate.NONE) { + if (as != null) { + return aggregate+"(?"+name.toLowerCase()+") AS " + as.toString(); + } + else { + return aggregate+"(?"+name.toLowerCase()+")"; + } + } + if (orderBy != SPARQL_OrderBy.NONE) { + String n; + if (as != null) { n = as.name; } else { n = name; } + if (orderBy == SPARQL_OrderBy.ASC) + return "ASC(?"+n.toLowerCase()+")"; + else + return "DESC(?"+n.toLowerCase()+")"; + } + if (isVariable() && !isString()) { + return "?"+name.toLowerCase(); + } + else { + return name; + } + } + + + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term_deprecated.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java 2011-09-03 02:53:32 UTC (rev 3243) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SlotType.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -1,5 +1,5 @@ package org.dllearner.algorithm.tbsl.sparql; public enum SlotType { - CLASS, PROPERTY, SYMPROPERTY, RESOURCE, UNSPEC + CLASS, PROPERTY, SYMPROPERTY, RESOURCE, LITERAL, UNSPEC } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,318 @@ +package org.dllearner.algorithm.tbsl.templator; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import org.dllearner.algorithm.tbsl.sem.util.Pair; + +public class BasicSlotBuilder { + + private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; + private String[] adjective = {"JJ","JJR","JJS","JJH"}; + private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; + private String[] preps = {"IN","TO"}; + + public BasicSlotBuilder() { + } + + /** + * gets synonyms, attribute etc. from WordNet and construct grammar entries + * INPUT: array of tokens and array of POStags, from which preprocessor constructs a list of pairs (token,pos) + * OUTPUT: list of (treestring,dude) + **/ + public List<String[]> build(String taggedstring,List<Pair<String,String>> tokenPOSpairs) { + + List<String[]> result = new ArrayList<String[]>(); + + for (Pair<String,String> pair : tokenPOSpairs) { + + String token = pair.fst; + String tokenfluent = token.replaceAll(" ","").replaceAll("_",""); + String pos = pair.snd; + + String type = "UNSPEC"; + String slot; + + /* NOUNS */ + if (equalsOneOf(pos,noun)) { + + if (pos.equals("NNP") || pos.equals("NNPS")) { + type = "RESOURCE"; + } + + slot = "SLOT_" + tokenfluent + "/" + type + "/" + token; + + // treetoken + String treetoken = "N:'" + token.toLowerCase() + "'"; + if (token.trim().contains(" ")) { + String[] tokenParts = token.split(" "); + treetoken = ""; + for (String t : tokenParts) { + treetoken += " N:'" + t.toLowerCase() + "'"; + } + treetoken = treetoken.trim(); + } + // + if (pos.equals("NN") || pos.equals("NNS")) { + /* DP */ + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + "))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + String[] dpEntry2 = {token, + "(DP (NP " + treetoken + " DP[name]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); + /* NP */ + String[] npEntry1 = {token, + "(NP " + treetoken + ")", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + String[] npEntry2 = {token, + "(NP " + treetoken + " DP[name])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), equal(x,y) ] ],[ (l2,y,name,<<e,t>,t>) ],[l2=l1],[" + slot + "]>"}; + result.add(npEntry1); + result.add(npEntry2); + } + else if (pos.equals("NNP") || pos.equals("NNPS")) { + /* DP */ + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + "))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + String[] dpEntry2 = {token, + "(DP DET[det] (NP " + treetoken + "))", + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[(l2,x,det,e)],[l2=l1],[" + slot + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); + } + else if (pos.equals("NPREP")) { + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + String[] dpEntry2 = {token, + "(DP DET[det] (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>"}; + String[] npEntry = {token, + "(NP " + treetoken + " DP[pobj])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); + result.add(npEntry); + } + else if (pos.equals("JJNPREP")) { + slot = "SLOT_" + tokenfluent + "/UNSPEC/" + token; + String[] dpEntry1 = {token, + "(DP (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(p) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>" }; + String[] dpEntry2 = {token, + "(DP DET[det] (NP " + treetoken + " DP[pobj]))", + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(p) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>" }; + String[] npEntry = {token, + "(NP " + treetoken + " DP[pobj])", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(p) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + result.add(dpEntry1); + result.add(dpEntry2); + result.add(npEntry); + } + else if(pos.equals("JJNN") && token.contains("_")) { + slot = "SLOT_" + tokenfluent + "/USNPEC/" + token; + String[] npEntry = {token, + "(NP " + treetoken + " )", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x) ] ],[],[],[" + slot + "]>"}; + result.add(npEntry); + } + + } + /* VERBS */ + else if (equalsOneOf(pos,verb)) { + + if (token.equals("has") || token.equals("have") || token.equals("had")) { + slot = ""; + } + else { + slot = "SLOT_" + token + "/PROPERTY/" + token; + } + if (pos.equals("PASSIVE")) { + String[] passEntry1 = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + String[] passEntry2 = {token, + "(S DP[wh] (VP DP[dp] V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,wh,<<e,t>,t>),(l3,y,dp,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry1); + result.add(passEntry2); + } + else if (pos.equals("PASSPART")) { + String[] passpartEntry = {token, + "(NP NP* (VP V:'" + token + "' DP[dp]))", + "<x,l1,t,[ l1:[ | SLOT_" + token + "(p) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + result.add(passpartEntry); + } + else if (pos.equals("VPASS")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("VPASSIN")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + } + else if (pos.equals("GERUNDIN")) { + String[] gerundinEntry1 = {token, + "(NP NP* V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[ | SLOT_" + token + "(p) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + String[] gerundinEntry2 = {token, + "(ADJ V:'" + token + "' DP[obj]))", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(p) ] ],[(l2,y,obj,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + result.add(gerundinEntry1); + result.add(gerundinEntry2); + } + else if (pos.equals("VPREP")) { + String[] passEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + String[] whEntry = {token, + "(S DP[obj] (VP DP[subj] V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(passEntry); + result.add(whEntry); + } + else if (pos.equals("VBD") || pos.equals("VBZ") || pos.equals("VBP")) { + String[] vEntry = {token, + "(S DP[subj] (VP V:'" + token + "' DP[obj]))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(vEntry); + } + else if (pos.equals("VB")) { + String[] whEntry = {token, + "(S DP[obj] (VP DP[subj] V:'" + token + "'))", + "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + slot + "]>"}; + result.add(whEntry); + } + else if (pos.equals("VBG") || pos.equals("VBN")) { + String[] gerEntry = {token, + "(NP NP* (VP V:'" + token + "' DP[dp]))", + "<x,l1,t,[ l1:[ | SLOT_" + token + "(p) ] ],[(l2,y,dp,<<e,t>,t>)],[ l2=l1 ],[" + slot + "]>"}; + result.add(gerEntry); + } + else if (pos.equals("WHEN")) { + slot = "SLOT_" + token + "/PROPERTY/" + token + "_date"; + String[] whenEntry = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[ ?y | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>)],[ l2=l1 ],[ " + slot + " ]>"}; + result.add(whenEntry); + } + else if (pos.equals("WHERE")) { + slot = "SLOT_" + token + "/PROPERTY/" + token + "_place"; + String[] whereEntry = {token, + "(S DP[subj] (VP V:'" + token + "'))", + "<x,l1,t,[ l1:[ ?y | SLOT_" + token + "(p) ] ],[(l2,x,subj,<<e,t>,t>)],[ l2=l1 ],[ " + slot + " ]>"}; + result.add(whereEntry); + } + + } + /* ADJECTIVES */ + else if (equalsOneOf(pos,adjective)) { + + slot = "SLOT_" + token + "/PROPERTY/" + token; + /* ADJECTIVE */ + if (pos.equals("JJ")) { + String[] adjEntry = {token, + "(NP ADJ:'" + token.toLowerCase() + "' NP*)", + "<x,l1,<e,t>,[ l1:[ j | SLOT_" + token + "(j) ] ],[],[],["+slot+"]>"}; + result.add(adjEntry); + } + if (pos.equals("JJH")) { + String[] howEntry = {"how "+token, + "(DP WH:'how' ADJ:'" + token.toLowerCase() + "')", + "<x,l1,<<e,t>,t>,[ l1:[ ?j,x | SLOT_" + token + "(j) ] ],[],[],["+slot+"]>"}; + result.add(howEntry); + } + /* COMPARATIVE */ + else if (pos.equals("JJR")) { + String pol = polarity(token); + String comp; + if (pol.equals("POS")) { + comp = "greater"; + } else { comp = "less"; } + + String[] compEntry1 = {token, + "(ADJ ADJ:'" + token.toLowerCase() + "' P:'than' DP[compobj])", + "<x,l1,<e,t>,[ l1:[ p,j,i | SLOT_" + token + "(p), p(x,i), p(y,j), " + comp + "(i,j) ] ],[ (l2,y,compobj,<<e,t>,t>) ],[l1=l2],["+slot+"]>"}; + result.add(compEntry1); + String[] compEntry2 = {token, + "(NP NP* (ADJ ADJ:'" + token.toLowerCase() + "' P:'than' DP[compobj]))", + "<x,l1,<e,t>,[ l1:[ p,j,i | SLOT_" + token + "(p), p(i), p(j), " + comp + "(i,j) ] ],[ (l2,y,compobj,<<e,t>,t>) ],[l1=l2],["+slot+"]>"}; + result.add(compEntry2); + } + /* SUPERLATIVE */ + else if (pos.equals("JJS")) { + String pol = polarity(token); + String comp; + if (pol.equals("POS")) { + comp = "maximum"; + } else { comp = "minimum"; } + + String[] superEntry1 = {token, + "(DET DET:'the' ADJ:'" + token.toLowerCase() + "')", + "<x,l1,e,[ l1:[ p,x,j | SLOT_" + token + "(p), p(x,j), " + comp + "(j) ] ],[],[],["+slot+"]>"}; + result.add(superEntry1); + String[] superEntry2 = {token, + "(DP (NP DET:'the' ADJ:'" + token.toLowerCase() + "'))", + "<x,l1,<<e,t>,t>,[ l1:[ p,x,j | SLOT_" + token + "(p), p(x,j), " + comp + "(j) ] ],[],[],["+slot+"]>"}; + result.add(superEntry2); + String[] superEntry3 = {token, + "(DP (NP DET:'the' ADJ:'" + token.toLowerCase() + "' NP[noun]))", + "<x,l1,<<e,t>,t>,[ l1:[ p,x,j | SLOT_" + token + "(p), p(x,j), " + comp + "(j) ] ],[ (l2,x,noun,<e,t>) ],[l2=l1],["+slot+"]>"}; + result.add(superEntry3); + } + } + /* PREPOSITIONS */ + else if (equalsOneOf(pos,preps)) { + String[] npAdjunct = {token, + "(NP NP* (PP P:'" + token.toLowerCase() + "' DP[pobj]))", + "<x,l1,<e,t>,[ l1:[ | SLOT_" + token + "(p) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[]>"}; + result.add(npAdjunct); + } + } + + return result; + } + + private boolean equalsOneOf(String string,String[] strings) { + for (String s : strings) { + if (string.equals(s)) { + return true; + } + } + return false; + } + + private String polarity(String adj) { + + String polarity = "POS"; + + BufferedReader in; + try { + in = new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("tbsl/lexicon/adj_list.txt"))); + String line; + while ((line = in.readLine()) != null ) { + if (line.contains(adj)) { + polarity = line.split(" ")[0]; + break; + } + } + in.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return polarity; + } + + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicTemplator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicTemplator.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicTemplator.java 2011-09-07 17:09:48 UTC (rev 3244) @@ -0,0 +1,150 @@ +package org.dllearner.algorithm.tbsl.templator; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.dllearner.algorithm.tbsl.converter.DRS2BasicSPARQL_Converter; +import org.dllearner.algorithm.tbsl.converter.DUDE2UDRS_Converter; +import org.dllearner.algorithm.tbsl.ltag.parser.LTAGLexicon; +import org.dllearner.algorithm.tbsl.ltag.parser.LTAG_Lexicon_Constructor; +import org.dllearner.algorithm.tbsl.ltag.parser.Parser; +import org.dllearner.algorithm.tbsl.ltag.parser.Preprocessor; +import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; +import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; +import org.dllearner.algorithm.tbsl.sem.drs.DRS; +import org.dllearner.algorithm.tbsl.sem.drs.UDRS; +import org.dllearner.algorithm.tbsl.sem.dudes.data.Dude; +import org.dllearner.algorithm.tbsl.sem.dudes.reader.ParseException; +import org.dllearner.algorithm.tbsl.sparql.BasicQueryTemplate; +import org.dllearner.algorithm.tbsl.sparql.Slot; + +public class BasicTemplator { + + String[] GRAMMAR_FILES = {"tbsl/lexicon/english.lex"}; + + PartOfSpeechTagger tagger; + LTAGLexicon g; + LTAG_Lexicon_Constructor LTAG_Constructor = new LTAG_Lexicon_Constructor(); + Parser p; + Preprocessor pp; + + boolean ONE_SCOPE_ONLY = true; + boolean UNTAGGED_INPUT = true; + + public BasicTemplator() { + List<InputStream> grammarFiles = new ArrayList<InputStream>(); + for(int i = 0; i < GRAMMAR_FILES.length; i++){ + grammarFiles.add(this.getClass().getClassLoader().getResourceAsStream(GRAMMAR_FILES[i])); + } + + g = LTAG_Constructor.construct(grammarFiles); + +// tagger = new StanfordPartOfSpeechTagger(); + tagger = new ApachePartOfSpeechTagger(); + + p = new Parser(); + p.SHOW_GRAMMAR = true; + p.USE_DPS_AS_INITTREES = true; + p.CONSTRUCT_SEMANTICS = true; + p.MODE = "BASIC"; + + pp = new Preprocessor(false); + } + + public void setUNTAGGED_INPUT(boolean b) { + UNTAGGED_INPUT = b; + } + + public Set<BasicQueryTemplate> buildBasicQueries(String s) { + + DUDE2UDRS_Converter d2u = new DUDE2UDRS_Converter(); + DRS2BasicSPARQL_Converter d2s = new DRS2BasicSPARQL_Converter(); + boolean clearAgain = true; + + String tagged; + if (UNTAGGED_INPUT) { + s = pp.normalize(s); + tagged = tagger.tag(s); + System.out.println("Tagged input: " + tagged); + } + else { + tagged = s; + } + + String newtagged = pp.condenseNominals(tagged); + newtagged = pp.condense(newtagged); + System.out.println("Preprocessed: " + newtagg... [truncated message content] |
From: <lor...@us...> - 2011-09-14 07:43:48
|
Revision: 3256 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3256&view=rev Author: lorenz_b Date: 2011-09-14 07:43:41 +0000 (Wed, 14 Sep 2011) Log Message: ----------- Moved CLI from test to main. Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java Removed Paths: ------------- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/CLI.java Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java 2011-09-14 07:43:41 UTC (rev 3256) @@ -0,0 +1,67 @@ +package org.dllearner.algorithm.tbsl.cli; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.Collections; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.dllearner.algorithm.tbsl.learning.NoTemplateFoundException; +import org.dllearner.algorithm.tbsl.learning.SPARQLTemplateBasedLearner; +import org.dllearner.algorithm.tbsl.templator.Templator; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.ini4j.InvalidFileFormatException; + +public class CLI { + + + public static void main(String[] args) throws InvalidFileFormatException, FileNotFoundException, IOException { + +// Logger.getLogger(SPARQLTemplateBasedLearner.class).setLevel(Level.OFF); + + SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); + SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://live.dbpedia.org/sparql"), + Collections.<String>singletonList(""), Collections.<String>emptyList()); + + System.out.println("======= TBSL v0.1 ============="); + System.out.println("\nType ':q' to quit."); + + while (true) { + String question = getStringFromUser("Question > ").trim(); + + if (question.equals(":q")) { + System.exit(0); + } + + learner.setEndpoint(endpoint); + learner.setQuestion(question); + try { + learner.learnSPARQLQueries(); + String learnedQuery = learner.getBestSPARQLQuery(); + if(learnedQuery != null){ + System.out.println("Learned query:\n" + learnedQuery); + } else { + System.out.println("Could not learn a SPARQL query."); + } + } catch (NoTemplateFoundException e) { + System.out.println("Sorry, could not generate a template."); + } + + } + } + + public static String getStringFromUser(String msg) { + String str = ""; + try { + System.out.println("\n===========================================\n"); + System.out.print(msg); + str = new BufferedReader(new InputStreamReader(System.in)).readLine(); + } catch (IOException e) { + } + return str; + } + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/CLI.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/CLI.java 2011-09-14 07:40:37 UTC (rev 3255) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/CLI.java 2011-09-14 07:43:41 UTC (rev 3256) @@ -1,67 +0,0 @@ -package org.dllearner.algorithm.tbsl; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.util.Collections; - -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.dllearner.algorithm.tbsl.learning.NoTemplateFoundException; -import org.dllearner.algorithm.tbsl.learning.SPARQLTemplateBasedLearner; -import org.dllearner.algorithm.tbsl.templator.Templator; -import org.dllearner.kb.sparql.SparqlEndpoint; -import org.ini4j.InvalidFileFormatException; - -public class CLI { - - - public static void main(String[] args) throws InvalidFileFormatException, FileNotFoundException, IOException { - -// Logger.getLogger(SPARQLTemplateBasedLearner.class).setLevel(Level.OFF); - - SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); - SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://live.dbpedia.org/sparql"), - Collections.<String>singletonList(""), Collections.<String>emptyList()); - - System.out.println("======= TBSL v0.1 ============="); - System.out.println("\nType ':q' to quit."); - - while (true) { - String question = getStringFromUser("Question > ").trim(); - - if (question.equals(":q")) { - System.exit(0); - } - - learner.setEndpoint(endpoint); - learner.setQuestion(question); - try { - learner.learnSPARQLQueries(); - String learnedQuery = learner.getBestSPARQLQuery(); - if(learnedQuery != null){ - System.out.println("Learned query:\n" + learnedQuery); - } else { - System.out.println("Could not learn a SPARQL query."); - } - } catch (NoTemplateFoundException e) { - System.out.println("Sorry, could not generate a template."); - } - - } - } - - public static String getStringFromUser(String msg) { - String str = ""; - try { - System.out.println("\n===========================================\n"); - System.out.print(msg); - str = new BufferedReader(new InputStreamReader(System.in)).readLine(); - } catch (IOException e) { - } - return str; - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-09-14 10:05:36
|
Revision: 3258 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3258&view=rev Author: christinaunger Date: 2011-09-14 10:05:25 +0000 (Wed, 14 Sep 2011) Log Message: ----------- [tbsl] updates wordnet lookup for slots Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/LingPipeLemmatizer.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/LemmatizationTest.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/LingPipeLemmatizer.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/LingPipeLemmatizer.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/LingPipeLemmatizer.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -7,6 +7,9 @@ public class LingPipeLemmatizer implements Lemmatizer { + public LingPipeLemmatizer() { + } + @Override public String stem(String word) { return PorterStemmerTokenizerFactory.stem(word); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Slot.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -10,6 +10,7 @@ String token; SlotType type; List<String> words; + String postag; public Slot(String a,List<String> ws) { anchor = a; @@ -17,15 +18,21 @@ type = SlotType.UNSPEC; words = ws; replaceUnderscores(); + postag = ""; } public Slot(String a,SlotType t,List<String> ws) { anchor = a; token = ""; type = t; words = ws; - replaceUnderscores(); + replaceUnderscores(); + postag = ""; } + public void setPOStag(String s) { + postag = s; + } + public void setSlotType(SlotType st) { type = st; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -3,6 +3,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.HashSet; +import java.util.Hashtable; import java.util.List; import java.util.Set; @@ -13,6 +14,7 @@ import org.dllearner.algorithm.tbsl.ltag.parser.Parser; import org.dllearner.algorithm.tbsl.ltag.parser.Preprocessor; import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; +import org.dllearner.algorithm.tbsl.nlp.LingPipeLemmatizer; import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; import org.dllearner.algorithm.tbsl.sem.drs.DRS; import org.dllearner.algorithm.tbsl.sem.drs.UDRS; @@ -31,10 +33,17 @@ Parser p; Preprocessor pp; + WordNet wordnet; + LingPipeLemmatizer lem = new LingPipeLemmatizer(); + + DUDE2UDRS_Converter d2u = new DUDE2UDRS_Converter(); + DRS2SPARQL_Converter d2s = new DRS2SPARQL_Converter(); + boolean ONE_SCOPE_ONLY = true; boolean UNTAGGED_INPUT = true; public Templator() { + List<InputStream> grammarFiles = new ArrayList<InputStream>(); for(int i = 0; i < GRAMMAR_FILES.length; i++){ grammarFiles.add(this.getClass().getClassLoader().getResourceAsStream(GRAMMAR_FILES[i])); @@ -52,6 +61,8 @@ p.MODE = "LEIPZIG"; pp = new Preprocessor(true); + + wordnet = new WordNet(); } public void setUNTAGGED_INPUT(boolean b) { @@ -60,8 +71,6 @@ public Set<Template> buildTemplates(String s) { - DUDE2UDRS_Converter d2u = new DUDE2UDRS_Converter(); - DRS2SPARQL_Converter d2s = new DRS2SPARQL_Converter(); boolean clearAgain = true; String tagged; @@ -93,6 +102,13 @@ } } + // build pairs <String,POStag> from tagged + Hashtable<String,String> postable = new Hashtable<String,String>(); + for (String st : newtagged.split(" ")) { + postable.put(st.substring(0,st.indexOf("/")),st.substring(st.indexOf("/")+1));; + } + // + Set<DRS> drses = new HashSet<DRS>(); Set<Template> templates = new HashSet<Template>(); @@ -119,6 +135,37 @@ try { Template temp = d2s.convert(drs,slots); + + // find WordNet synonyms + List<String> newwords; + String word; + String pos; + for (Slot slot : temp.getSlots()) { + if (!slot.getWords().isEmpty()) { + + word = slot.getWords().get(0); + pos = postable.get(word.replace(" ","_")); + List<String> strings = wordnet.getAttributes(word); + + newwords = new ArrayList<String>(); + newwords.add(word); + newwords.addAll(strings); + if (strings.isEmpty()) { + newwords.addAll(wordnet.getBestSynonyms(word,pos)); + } else { + for (String att : strings) { + newwords.addAll(wordnet.getBestSynonyms(att,pos)); + } + } + if (newwords.isEmpty()) { + newwords.add(slot.getWords().get(0)); + } + // stem = lem.stem(slot.getWords().get(0)); newwords.add(stem); + slot.setWords(newwords); + } + } + // + templates.add(temp); } catch (java.lang.ClassCastException e) { continue; Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -2,7 +2,10 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; +import java.util.Hashtable; import java.util.List; +import java.util.Set; import edu.smu.tspell.wordnet.*; @@ -10,23 +13,57 @@ private WordNetDatabase database; + private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; + private String[] adjective = {"JJ","JJR","JJS","JJH"}; + private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; + private String[] preps = {"IN","TO"}; + public WordNet() { + System.setProperty("wordnet.database.dir", System.getProperty("user.dir") + "/src/main/resources/tbsl/dict/"); database = WordNetDatabase.getFileInstance(); } - public List<String> getBestSynonyms(String s) { + public Set<String> getBestSynonyms(String s,String pos) { - List<String> synonyms = new ArrayList<String>(); + Set<String> synonyms = new HashSet<String>(); - Synset[] synsets = database.getSynsets(s); - if (synsets.length != 0) { - String[] candidates = synsets[0].getWordForms(); - for (String c : candidates) { - if (!c.equals(s) && !c.contains(" ") && synonyms.size() < 4) { - synonyms.add(c); + SynsetType type = null; + if (equalsOneOf(pos,noun)) { + type = SynsetType.NOUN; + } + else if (equalsOneOf(pos,adjective)) { + type = SynsetType.ADJECTIVE; + } + else if (equalsOneOf(pos,verb)) { + type = SynsetType.VERB; + } + + String[] basecandidates; + if (type != null) { + String[] bfc = database.getBaseFormCandidates(s,type); + basecandidates = new String[bfc.length + 1]; + basecandidates[0] = s; + for (int i = 0; i < bfc.length; i++) { + basecandidates[i+1] = bfc[i]; + } + } + else { + basecandidates = new String[1]; + basecandidates[0] = s; + } + + for (String b : basecandidates) { + Synset[] synsets = database.getSynsets(b); + if (synsets.length != 0) { + String[] candidates = synsets[0].getWordForms(); + for (String c : candidates) { + if (!c.equals(b) && !c.contains(" ") && synonyms.size() < 4) { + synonyms.add(c); + } } } } + return synonyms; } @@ -67,4 +104,13 @@ return result; } + private boolean equalsOneOf(String string,String[] strings) { + for (String s : strings) { + if (string.equals(s)) { + return true; + } + } + return false; + } + } Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/LemmatizationTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/LemmatizationTest.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/LemmatizationTest.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -1,13 +1,21 @@ package org.dllearner.algorithm.tbsl; +import org.dllearner.algorithm.tbsl.nlp.LingPipeLemmatizer; + public class LemmatizationTest { /** * @param args */ public static void main(String[] args) { - // TODO Auto-generated method stub + + LingPipeLemmatizer lem = new LingPipeLemmatizer(); + System.out.println(lem.stem("soccer clubs")); + System.out.println(lem.stem("Permier League","NNP")); + System.out.println(lem.stem("cities","NNS")); + System.out.println(lem.stem("killed")); + System.out.println(lem.stem("bigger")); } } Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-09-14 08:23:09 UTC (rev 3257) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-09-14 10:05:25 UTC (rev 3258) @@ -2,14 +2,25 @@ import org.dllearner.algorithm.tbsl.templator.WordNet; +import edu.smu.tspell.wordnet.SynsetType; +import edu.smu.tspell.wordnet.WordNetDatabase; + public class WordNetTest { public static void main(String[] args) { + System.setProperty("wordnet.database.dir", System.getProperty("user.dir") + "/src/main/resources/tbsl/dict/"); + WordNetDatabase database = WordNetDatabase.getFileInstance(); + + System.out.println(database.getBaseFormCandidates("cities",SynsetType.NOUN)[1]); + WordNet wordnet = new WordNet(); - - System.out.println(wordnet.getBestSynonyms("city")); + + System.out.println(wordnet.getAttributes("bigger")); + System.out.println(wordnet.getBestSynonyms("city","NN")); System.out.println(wordnet.getAttributes("biggest")); + System.out.println(wordnet.getBestSynonyms("biggest","JJR")); + System.out.println(wordnet.getAttributes("city")); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-09-14 14:29:08
|
Revision: 3263 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3263&view=rev Author: christinaunger Date: 2011-09-14 14:29:01 +0000 (Wed, 14 Sep 2011) Log Message: ----------- [tbsl] corrected WordNet use in Templator Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java Removed Paths: ------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java 2011-09-14 13:22:39 UTC (rev 3262) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java 2011-09-14 14:29:01 UTC (rev 3263) @@ -13,7 +13,7 @@ public class WordNet { - private Dictionary dict; + private Dictionary dict; public WordNet() { try { @@ -52,7 +52,7 @@ List<String> result = new ArrayList<String>(); try { - IndexWord iw = dict.getIndexWord(POS.ADJECTIVE, s); + IndexWord iw = dict.getIndexWord(POS.ADJECTIVE, s); if(iw != null){ Synset[] synsets = iw.getSenses(); Word[] words = synsets[0].getWords(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-09-14 13:22:39 UTC (rev 3262) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-09-14 14:29:01 UTC (rev 3263) @@ -10,15 +10,12 @@ public class SlotBuilder { - private WordNet wordnet; private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; private String[] adjective = {"JJ","JJR","JJS","JJH"}; private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; private String[] preps = {"IN","TO"}; public SlotBuilder() { - - wordnet = new WordNet(); } /** Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-09-14 13:22:39 UTC (rev 3262) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-09-14 14:29:01 UTC (rev 3263) @@ -7,6 +7,8 @@ import java.util.List; import java.util.Set; +import net.didion.jwnl.data.POS; + import org.dllearner.algorithm.tbsl.converter.DRS2SPARQL_Converter; import org.dllearner.algorithm.tbsl.converter.DUDE2UDRS_Converter; import org.dllearner.algorithm.tbsl.ltag.parser.LTAGLexicon; @@ -16,6 +18,7 @@ import org.dllearner.algorithm.tbsl.nlp.ApachePartOfSpeechTagger; import org.dllearner.algorithm.tbsl.nlp.LingPipeLemmatizer; import org.dllearner.algorithm.tbsl.nlp.PartOfSpeechTagger; +import org.dllearner.algorithm.tbsl.nlp.WordNet; import org.dllearner.algorithm.tbsl.sem.drs.DRS; import org.dllearner.algorithm.tbsl.sem.drs.UDRS; import org.dllearner.algorithm.tbsl.sem.dudes.data.Dude; @@ -27,6 +30,10 @@ String[] GRAMMAR_FILES = {"tbsl/lexicon/english.lex"}; + private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; + private String[] adjective = {"JJ","JJR","JJS","JJH"}; + private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; + PartOfSpeechTagger tagger; LTAGLexicon g; LTAG_Lexicon_Constructor LTAG_Constructor = new LTAG_Lexicon_Constructor(); @@ -145,25 +152,34 @@ word = slot.getWords().get(0); pos = postable.get(word.replace(" ","_")); - List<String> strings = wordnet.getAttributes(word); + POS wordnetpos = null; + if (equalsOneOf(pos,noun)) { + wordnetpos = POS.NOUN; + } + else if (equalsOneOf(pos,adjective)) { + wordnetpos = POS.ADJECTIVE; + } + else if (equalsOneOf(pos,verb)) { + wordnetpos = POS.VERB; + } + + List<String> strings = new ArrayList<String>(); + if (wordnetpos.equals(POS.ADJECTIVE)) { + strings = wordnet.getAttributes(word); + } + newwords = new HashSet<String>(); newwords.add(word); - newwords.addAll(strings); + newwords.addAll(strings); - if (strings.isEmpty()) { - for (String base : wordnet.getBaseFormCandidates(word,pos)) { - newwords.addAll(wordnet.getBestSynonyms(word)); - } - } else { - for (String att : strings) { - newwords.addAll(wordnet.getBestSynonyms(att)); - } + newwords.addAll(wordnet.getBestSynonyms(wordnetpos,word)); + for (String att : strings) { + newwords.addAll(wordnet.getBestSynonyms(wordnetpos,att)); } if (newwords.isEmpty()) { newwords.add(slot.getWords().get(0)); } - // stem = lem.stem(slot.getWords().get(0)); newwords.add(stem); List<String> newwordslist = new ArrayList<String>(); newwordslist.addAll(newwords); slot.setWords(newwordslist); @@ -198,5 +214,14 @@ } return false; } + + private boolean equalsOneOf(String string,String[] strings) { + for (String s : strings) { + if (string.equals(s)) { + return true; + } + } + return false; + } } Deleted: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-09-14 13:22:39 UTC (rev 3262) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-09-14 14:29:01 UTC (rev 3263) @@ -1,119 +0,0 @@ -package org.dllearner.algorithm.tbsl.templator; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.List; -import java.util.Set; - -import edu.smu.tspell.wordnet.*; - -public class WordNet { - - private WordNetDatabase database; - - private String[] noun = {"NN","NNS","NNP","NNPS","NPREP","JJNN","JJNPREP"}; - private String[] adjective = {"JJ","JJR","JJS","JJH"}; - private String[] verb = {"VB","VBD","VBG","VBN","VBP","VBZ","PASSIVE","PASSPART","VPASS","VPASSIN","GERUNDIN","VPREP","WHEN","WHERE"}; - private String[] preps = {"IN","TO"}; - - public WordNet() { -// System.setProperty("wordnet.database.dir", System.getProperty("user.dir") + "/src/main/resources/tbsl/dict/"); - database = WordNetDatabase.getFileInstance(); - } - - public String[] getBaseFormCandidates(String s,String pos) { - - SynsetType type = null; - if (equalsOneOf(pos,noun)) { - type = SynsetType.NOUN; - } - else if (equalsOneOf(pos,adjective)) { - type = SynsetType.ADJECTIVE; - } - else if (equalsOneOf(pos,verb)) { - type = SynsetType.VERB; - } - - String[] basecandidates; - if (type != null) { - String[] bfc = database.getBaseFormCandidates(s,type); - basecandidates = new String[bfc.length + 1]; - basecandidates[0] = s; - for (int i = 0; i < bfc.length; i++) { - basecandidates[i+1] = bfc[i]; - } - } - else { - basecandidates = new String[1]; - basecandidates[0] = s; - } - - return basecandidates; - } - - public Set<String> getBestSynonyms(String s) { - - Set<String> synonyms = new HashSet<String>(); - - Synset[] synsets = database.getSynsets(s); - if (synsets.length != 0) { - String[] candidates = synsets[0].getWordForms(); - for (String c : candidates) { - if (!c.equals(s) && !c.contains(" ") && synonyms.size() < 4) { - synonyms.add(c); - } - } - } - - return synonyms; - } - - public List<String> getHypernyms(String s) { - - List<String> hypernyms = new ArrayList<String>(); - - Synset[] synsets = database.getSynsets(s); - Synset[] hypsets = {}; - for(int i = 0; i < synsets.length; i++){ - if(synsets[i].getType() == SynsetType.NOUN){ - hypsets = ((NounSynset)synsets[i]).getHypernyms(); - } else if(synsets[i].getType() == SynsetType.VERB){ - hypsets = ((VerbSynset)synsets[i]).getHypernyms(); - } - for(Synset hypset : hypsets){ - hypernyms.addAll(Arrays.asList(hypset.getWordForms())); - } - } - return hypernyms; - } - - public List<String> getAttributes(String s) { - - List<String> result = new ArrayList<String>(); - - Synset[] synsets = database.getSynsets(s); - if (synsets.length > 0) { - Synset synset = synsets[0]; - if (synset.getType().equals(SynsetType.ADJECTIVE)) { - NounSynset[] attributes = ((AdjectiveSynset) synset).getAttributes(); - for (int i = 0; i < attributes.length; i++) { - result.add(attributes[i].getWordForms()[0]); - } - } - } - - return result; - } - - private boolean equalsOneOf(String string,String[] strings) { - for (String s : strings) { - if (string.equals(s)) { - return true; - } - } - return false; - } - -} Deleted: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-09-14 13:22:39 UTC (rev 3262) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-09-14 14:29:01 UTC (rev 3263) @@ -1,26 +0,0 @@ -package org.dllearner.algorithm.tbsl; - -import org.dllearner.algorithm.tbsl.templator.WordNet; - -import edu.smu.tspell.wordnet.SynsetType; -import edu.smu.tspell.wordnet.WordNetDatabase; - -public class WordNetTest { - - public static void main(String[] args) { - - System.setProperty("wordnet.database.dir", System.getProperty("user.dir") + "/src/main/resources/tbsl/dict/"); - WordNetDatabase database = WordNetDatabase.getFileInstance(); - - System.out.println(database.getBaseFormCandidates("cities",SynsetType.NOUN)[1]); - - WordNet wordnet = new WordNet(); - - System.out.println(wordnet.getAttributes("bigger")); - System.out.println(wordnet.getBestSynonyms("city")); - System.out.println(wordnet.getAttributes("biggest")); - System.out.println(wordnet.getBestSynonyms("biggest")); - System.out.println(wordnet.getAttributes("city")); - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-09-29 13:03:05
|
Revision: 3292 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3292&view=rev Author: lorenz_b Date: 2011-09-29 13:02:55 +0000 (Thu, 29 Sep 2011) Log Message: ----------- Started test skript to evaluate indexes. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java Added Paths: ----------- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/IndexEvaluation.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java 2011-09-29 08:47:15 UTC (rev 3291) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/ThresholdSlidingSolrSearch.java 2011-09-29 13:02:55 UTC (rev 3292) @@ -33,7 +33,7 @@ if(threshold < 1){ queryWithThreshold = queryString + "~" + threshold; } - System.out.println(queryWithThreshold); + resources.addAll(findResources(queryWithThreshold, limit - resources.size(), 0)); threshold -= step; } Added: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/IndexEvaluation.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/IndexEvaluation.java (rev 0) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/IndexEvaluation.java 2011-09-29 13:02:55 UTC (rev 3292) @@ -0,0 +1,352 @@ +package org.dllearner.algorithm.tbsl; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.SortedMap; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.TreeSet; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.log4j.FileAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.algorithm.tbsl.learning.SPARQLTemplateBasedLearner; +import org.dllearner.algorithm.tbsl.search.HierarchicalSolrSearch; +import org.dllearner.algorithm.tbsl.search.SolrSearch; +import org.dllearner.algorithm.tbsl.search.ThresholdSlidingSolrSearch; +import org.dllearner.algorithm.tbsl.sparql.Slot; +import org.dllearner.algorithm.tbsl.sparql.SlotType; +import org.dllearner.algorithm.tbsl.sparql.Template; +import org.dllearner.algorithm.tbsl.templator.Templator; +import org.dllearner.algorithm.tbsl.util.Prefixes; +import org.dllearner.algorithm.tbsl.util.StringSimilarityComparator; +import org.ini4j.InvalidFileFormatException; +import org.ini4j.Options; +import org.w3c.dom.DOMException; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class IndexEvaluation { + + private static Logger logger = Logger.getLogger(IndexEvaluation.class); + + private SortedMap<Integer, String> id2Question = new TreeMap<Integer, String>(); + private SortedMap<Integer, String> id2Query = new TreeMap<Integer, String>(); + + private Map<String, String> prefixMap; + + private Templator templateGenerator; + + private SolrSearch resource_index; + private SolrSearch class_index; + private SolrSearch property_index; + + public IndexEvaluation(File ... evaluationFiles) { + for(File file : evaluationFiles){ + readQueries(file); + } + init(); + } + + private void init(){ + try { + Options options = new Options(new FileInputStream(this.getClass().getClassLoader().getResource("tbsl/tbsl.properties").getPath())); + + templateGenerator = new Templator(); + prefixMap = Prefixes.getPrefixes(); + + String resourcesIndexUrl = options.fetch("solr.resources.url"); + String resourcesIndexSearchField = options.fetch("solr.resources.searchfield"); + resource_index = new ThresholdSlidingSolrSearch(resourcesIndexUrl, resourcesIndexSearchField, 1.0, 0.1); + + String classesIndexUrl = options.fetch("solr.classes.url"); + String classesIndexSearchField = options.fetch("solr.classes.searchfield"); + class_index = new ThresholdSlidingSolrSearch(classesIndexUrl, classesIndexSearchField, 1.0, 0.1); + + String propertiesIndexUrl = options.fetch("solr.properties.url"); + String propertiesIndexSearchField = options.fetch("solr.properties.searchfield"); + SolrSearch labelBasedPropertyIndex = new SolrSearch(propertiesIndexUrl, propertiesIndexSearchField); + + String boaPatternIndexUrl = options.fetch("solr.boa.properties.url"); + String boaPatternIndexSearchField = options.fetch("solr.boa.properties.searchfield"); + SolrSearch patternBasedPropertyIndex = new SolrSearch(boaPatternIndexUrl, boaPatternIndexSearchField); + + property_index = new HierarchicalSolrSearch(patternBasedPropertyIndex, labelBasedPropertyIndex); + } catch (InvalidFileFormatException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void readQueries(File file){ + logger.info("Reading file containing queries and answers..."); + try { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + Document doc = db.parse(file); + doc.getDocumentElement().normalize(); + NodeList questionNodes = doc.getElementsByTagName("question"); + int id; + String question; + String query; + for(int i = 0; i < questionNodes.getLength(); i++){ + Element questionNode = (Element) questionNodes.item(i); + //read question ID + id = Integer.valueOf(questionNode.getAttribute("id")); + //Read question + question = ((Element)questionNode.getElementsByTagName("string").item(0)).getChildNodes().item(0).getNodeValue().trim(); + //Read SPARQL query + query = ((Element)questionNode.getElementsByTagName("query").item(0)).getChildNodes().item(0).getNodeValue().trim(); + + id2Question.put(id, question); + id2Query.put(id, query); + + } + } catch (DOMException e) { + e.printStackTrace(); + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + logger.info("Done."); + } + + private Set<String> extractEntities(String query){ + List<String> exclusions = Arrays.asList(new String[]{"rdf", "rdfs"}); + Set<String> entities = new HashSet<String>(); + //pattern to detect resources + Pattern pattern = Pattern.compile("(\\w+):(\\w+)"); + Matcher matcher = pattern.matcher(query); + String group; + while(matcher.find()){ + group = matcher.group(); + boolean add = true; + for(String ex : exclusions){ + if(group.contains(ex)){ + add = false; + break; + } + } + if(add){ + entities.add(getFullURI(group)); + } + } + //pattern to detect string literals + pattern = Pattern.compile("'(\\w+)'@en"); + matcher = pattern.matcher(query); + while(matcher.find()){ + group = matcher.group(); + entities.add(getFullURI(buildEntityFromLabel(group))); + } + + return entities; + } + + private String getFullURI(String prefixedURI){ + String fullURI = prefixedURI; + String prefix; + String uri; + for(Entry<String, String> uri2Prefix : prefixMap.entrySet()){ + uri = uri2Prefix.getKey(); + prefix = uri2Prefix.getValue(); + if(prefixedURI.startsWith(prefix)){ + fullURI = prefixedURI.replace(prefix + ":", uri); + break; + } + } + return fullURI; + } + + private String getPrefixedURI(String fullURI){ + String prefixedURI = fullURI; + String prefix; + String uri; + for(Entry<String, String> prefix2URI : prefixMap.entrySet()){ + prefix = prefix2URI.getKey(); + uri = prefix2URI.getValue(); + if(fullURI.startsWith(uri)){ + prefixedURI = fullURI.replace(uri, prefix + ":" ); + break; + } + } + return prefixedURI; + } + + private String buildEntityFromLabel(String label){ + String base = "res:"; + String entity = label.substring(1).substring(0, label.lastIndexOf("'")-1).replace(" ", "_"); + return base + entity; + } + + private List<String> getCandidateURIsSortedBySimilarity(Slot slot){ + logger.info("Generating URI candidates for " + slot.getWords() + "..."); + List<String> sortedURIs = new ArrayList<String>(); + //get the appropriate index based on slot type + SolrSearch index = getIndexBySlotType(slot); + + SortedSet<String> tmp; + List<String> uris; + + //prune the word list only when slot type is not RESOURCE + List<String> words; + if(slot.getSlotType() == SlotType.RESOURCE){ + words = slot.getWords(); + } else { +// words = pruneList(slot.getWords());//getLemmatizedWords(slot.getWords()); + words = pruneList(slot.getWords()); + } + + for(String word : words){ + tmp = new TreeSet<String>(new StringSimilarityComparator(word)); + uris = index.getResources(word, 5); + + tmp.addAll(uris); + sortedURIs.addAll(tmp); + tmp.clear(); + } + + logger.info("URIs: " + sortedURIs); + return sortedURIs; + } + + private List<String> pruneList(List<String> words){ + List<String> prunedList = new ArrayList<String>(); + for(String w1 : words){ + boolean smallest = true; + for(String w2 : words){ + if(!w1.equals(w2)){ + if(w1.contains(w2)){ + smallest = false; + break; + } + } + } + if(smallest){ + prunedList.add(w1); + } + } + logger.info("Pruned list: " + prunedList); +// return getLemmatizedWords(words); + return prunedList; + } + + private SolrSearch getIndexBySlotType(Slot slot){ + SolrSearch index = null; + SlotType type = slot.getSlotType(); + if(type == SlotType.CLASS){ + index = class_index; + } else if(type == SlotType.PROPERTY || type == SlotType.SYMPROPERTY){ + index = property_index; + } else if(type == SlotType.RESOURCE || type == SlotType.UNSPEC){ + index = resource_index; + } + return index; + } + + public void run(){ + String question; + String targetQuery; + Set<String> targetEntities; + Set<Template> templates; + for(Entry<Integer, String> entry : id2Question.entrySet()){ + try { + question = entry.getValue(); + targetQuery = id2Query.get(entry.getKey()); + targetQuery = targetQuery.replace("onto:", "dbo:").replace("res:", "dbr:").replace("prop:", "dbp:"); + + logger.info(question); + logger.info(targetQuery); + + + templates = templateGenerator.buildTemplates(question); + if(!templates.isEmpty()){ + targetEntities = extractEntities(targetQuery); + logger.info("Target entities:\n" + targetEntities); + + + SortedSet<Slot> slots = new TreeSet<Slot>(new Comparator<Slot>() { + + @Override + public int compare(Slot o1, Slot o2) { + if(o1.getToken().equals(o2.getToken()) && o1.getSlotType()==o2.getSlotType()){ + return 0; + } else { + return o1.getToken().compareTo(o2.getToken()); + } + } + }); + for(Template t : templates){ + slots.addAll(t.getSlots()); + } + + Set<List<String>> uriLists = new HashSet<List<String>>(); + for(Slot slot : slots){ + uriLists.add(getCandidateURIsSortedBySimilarity(slot)); + } + + int pos = -1; + for(String entity : targetEntities){ + for(List<String> uris : uriLists){ + pos = uris.indexOf(entity); + if(pos >= 0){ + break; + } + } + if(pos == -1){ + logger.info(entity + " not covered."); + } else { + logger.info(entity + " covered at position " + pos); + } + } + } else { + logger.info("No template generated."); + } + + + + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + + public static void main(String[] args) throws IOException { + Logger.getRootLogger().removeAllAppenders(); + Logger.getRootLogger().addAppender(new FileAppender(new SimpleLayout(), "log/index_eval.txt")); + Logger.getLogger(IndexEvaluation.class).setLevel(Level.INFO); + if(args.length == 0){ + System.out.println("Usage: IndexEvaluation <file>"); + System.exit(0); + } + + File file = new File(IndexEvaluation.class.getClassLoader().getResource(args[0]).getPath()); + new IndexEvaluation(file).run(); + } + +} Property changes on: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/IndexEvaluation.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-10-11 08:52:06
|
Revision: 3298 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3298&view=rev Author: christinaunger Date: 2011-10-11 08:51:56 +0000 (Tue, 11 Oct 2011) Log Message: ----------- [tbsl] BasicTemplator update (added getConditions() method to BasicQueryTemplate and changed path built for NPREPs) Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java 2011-10-07 07:41:19 UTC (rev 3297) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/nlp/WordNet.java 2011-10-11 08:51:56 UTC (rev 3298) @@ -17,7 +17,7 @@ public class WordNet { - private Dictionary dict; + public Dictionary dict; public WordNet() { try { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java 2011-10-07 07:41:19 UTC (rev 3297) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/BasicQueryTemplate.java 2011-10-11 08:51:56 UTC (rev 3298) @@ -125,6 +125,10 @@ public Set<SPARQL_Filter> getFilters(){ return filter; } + + public Set<Path> getConditions() { + return conditions; + } public void setPrefixes(Set<SPARQL_Prefix> prefixes) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java 2011-10-07 07:41:19 UTC (rev 3297) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/BasicSlotBuilder.java 2011-10-11 08:51:56 UTC (rev 3298) @@ -89,13 +89,13 @@ else if (pos.equals("NPREP")) { String[] dpEntry1 = {token, "(DP (NP " + treetoken + " DP[pobj]))", - "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x), of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ x | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; String[] dpEntry2 = {token, "(DP DET[det] (NP " + treetoken + " DP[pobj]))", - "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>"}; + "<x,l1,<<e,t>,t>,[ l1:[ | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>),(l3,x,det,e)],[l2=l1,l3=l1],[" + slot + "]>"}; String[] npEntry = {token, "(NP " + treetoken + " DP[pobj])", - "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x), of(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; + "<x,l1,<e,t>,[ l1:[ | SLOT_" + tokenfluent + "(x,y) ] ],[(l2,y,pobj,<<e,t>,t>)],[l2=l1],[" + slot + "]>"}; result.add(dpEntry1); result.add(dpEntry2); result.add(npEntry); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-10-07 07:41:19 UTC (rev 3297) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/WordNetTest.java 2011-10-11 08:51:56 UTC (rev 3298) @@ -1,11 +1,13 @@ package org.dllearner.algorithm.tbsl; -import net.didion.jwnl.JWNL; +import java.util.Iterator; + import net.didion.jwnl.JWNLException; import net.didion.jwnl.data.POS; +import net.didion.jwnl.data.PointerUtils; import net.didion.jwnl.data.Synset; +import net.didion.jwnl.data.list.PointerTargetNode; import net.didion.jwnl.data.list.PointerTargetNodeList; -import net.didion.jwnl.dictionary.Dictionary; import org.dllearner.algorithm.tbsl.nlp.WordNet; @@ -21,6 +23,17 @@ System.out.println(wordnet.getBestSynonyms(POS.NOUN,"mayor")); + PointerTargetNodeList relatedList; + for (Synset syn : wordnet.dict.getIndexWord(POS.NOUN,"mayor").getSenses()) { + relatedList = PointerUtils.getInstance().getSynonyms(syn); + Iterator<PointerTargetNode> i = relatedList.iterator(); + while (i.hasNext()) { + PointerTargetNode related = i.next(); + Synset s = related.getSynset(); + System.out.println("-- " + s); + } + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-10-17 11:28:04
|
Revision: 3307 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3307&view=rev Author: christinaunger Date: 2011-10-17 11:27:53 +0000 (Mon, 17 Oct 2011) Log Message: ----------- [tbsl] added TemplatorHandler (provides two methods: buildTemplates for LEIPZIG mode and buildBasicTemplates for BASIC mode) Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TemplatorHandler.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java 2011-10-16 09:26:57 UTC (rev 3306) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/Parser.java 2011-10-17 11:27:53 UTC (rev 3307) @@ -18,7 +18,7 @@ public boolean USE_LESS_MEMORY = false; public boolean SHOW_GRAMMAR = false; public boolean SHOW_LEXICAL_COVERAGE = false; - public String MODE = "BASIC"; // MODE ::= BASIC | LEIPZIG + public String MODE = "BASIC"; // MODE ::= BASIC | LEIPZIG (set by Templator and BasicTemplator) private String[] input; private List<DerivationTree> derivationTrees = new ArrayList<DerivationTree>(); Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TemplatorHandler.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TemplatorHandler.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TemplatorHandler.java 2011-10-17 11:27:53 UTC (rev 3307) @@ -0,0 +1,32 @@ +package org.dllearner.algorithm.tbsl.templator; + +import java.util.Set; + +import org.dllearner.algorithm.tbsl.sparql.BasicQueryTemplate; +import org.dllearner.algorithm.tbsl.sparql.Template; + +public class TemplatorHandler { + + static String[] GRAMMAR_FILES; + Templator templator; + BasicTemplator basictemplator; + + public TemplatorHandler(String[] files) { + templator = new Templator(); + basictemplator = new BasicTemplator(); + GRAMMAR_FILES = files; + } + + public void setGRAMMAR_FILES(String[] g) { + GRAMMAR_FILES = g; + } + + public Set<Template> buildTemplates(String s) { + return templator.buildTemplates(s); + } + + public Set<BasicQueryTemplate> buildBasicTemplates(String s) { + return basictemplator.buildBasicQueries(s); + } + +} Property changes on: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/TemplatorHandler.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-16 09:26:57 UTC (rev 3306) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-17 11:27:53 UTC (rev 3307) @@ -3,22 +3,24 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.util.Set; +import org.dllearner.algorithm.tbsl.sparql.BasicQueryTemplate; import org.dllearner.algorithm.tbsl.sparql.Template; -import org.dllearner.algorithm.tbsl.templator.Templator; +import org.dllearner.algorithm.tbsl.templator.TemplatorHandler; public class TestFrontend { static String[] GRAMMAR_FILES = {"src/main/resources/lexicon/english.lex"}; - + static boolean BASIC_MODE = false; // true for BASIC mode, false for LEIPZIG mode + public static void main(String[] args) { - Templator templator = new Templator(); - templator.setUNTAGGED_INPUT(true); + TemplatorHandler handler = new TemplatorHandler(GRAMMAR_FILES); - System.out.println("======= SPARQL Templator v0.1 ============="); + System.out.println("======= SPARQL Templator v0.1 ============="); + System.out.print("\nMode: "); + if (BASIC_MODE) { System.out.print("BASIC"); } else { System.out.print("LEIPZIG"); } System.out.println("\nType ':q' to quit."); while (true) { @@ -28,12 +30,15 @@ System.exit(0); } - Set<Template> temps = templator.buildTemplates(s); - - for (Template temp : temps) { - System.out.println(temp.toString()); + if (BASIC_MODE) { + for (BasicQueryTemplate temp : handler.buildBasicTemplates(s)) { + System.out.println(temp.toString()); + } + } else { + for (Template temp : handler.buildTemplates(s)) { + System.out.println(temp.toString()); + } } - } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-10-17 13:54:31
|
Revision: 3308 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3308&view=rev Author: christinaunger Date: 2011-10-17 13:54:24 +0000 (Mon, 17 Oct 2011) Log Message: ----------- [tbsl] repaired slot names in basic templates Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java 2011-10-17 11:27:53 UTC (rev 3307) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2BasicSPARQL_Converter.java 2011-10-17 13:54:24 UTC (rev 3308) @@ -28,11 +28,11 @@ public class DRS2BasicSPARQL_Converter { List<Slot> slots; - BasicQueryTemplate query; +// BasicQueryTemplate query; List<Integer> usedInts; public DRS2BasicSPARQL_Converter() { - query = new BasicQueryTemplate(); + // query = new BasicQueryTemplate(); usedInts = new ArrayList<Integer>(); } @@ -49,23 +49,23 @@ public BasicQueryTemplate convert(DRS drs,List<Slot> ls) { - query = new BasicQueryTemplate(); + // query = new BasicQueryTemplate(); slots = ls; return convert(drs, new BasicQueryTemplate(), false); } - private BasicQueryTemplate convert(DRS drs, BasicQueryTemplate query, boolean negate) { + private BasicQueryTemplate convert(DRS drs, BasicQueryTemplate temp, boolean negate) { redundantEqualRenaming(drs); for (DRS_Condition condition : drs.getConditions()) { - convertCondition(condition,query); + convertCondition(condition,temp); if (negate) { - for (SPARQL_Term term : query.getSelTerms()) { + for (SPARQL_Term term : temp.getSelTerms()) { SPARQL_Filter f = new SPARQL_Filter(); f.addNotBound(term); - query.addFilter(f); + temp.addFilter(f); } } } @@ -74,30 +74,30 @@ if (referent.isMarked()) { SPARQL_Term term = new SPARQL_Term(referent.toString().replace("?","")); term.setIsVariable(true); - query.addSelTerm(term); + temp.addSelTerm(term); } if (referent.isNonexistential()) { SPARQL_Term term = new SPARQL_Term(referent.getValue()); term.setIsVariable(true); SPARQL_Filter f = new SPARQL_Filter(); f.addNotBound(term); - query.addFilter(f); + temp.addFilter(f); } for (Slot s : slots) { if (s.getAnchor().equals(referent.getValue())) { - query.addSlot(s); + temp.addSlot(s); // query break; } } } - if (query.getSelTerms().size() == 0) - query.setQt(SPARQL_QueryType.ASK); + if (temp.getSelTerms().size() == 0) + temp.setQt(SPARQL_QueryType.ASK); - return query; + return temp; } - private BasicQueryTemplate convertCondition(DRS_Condition condition, BasicQueryTemplate query) { + private BasicQueryTemplate convertCondition(DRS_Condition condition, BasicQueryTemplate temp) { if (condition.isComplexCondition()) { @@ -109,10 +109,10 @@ // call recursively for (DRS_Condition cond : restrictor.getConditions()) { - query = convertCondition(cond, query); + temp = convertCondition(cond,temp); } for (DRS_Condition cond : scope.getConditions()) { - query = convertCondition(cond, query); + temp = convertCondition(cond,temp); } // add the quantifier at last DiscourseReferent ref = complex.getReferent(); @@ -121,7 +121,7 @@ switch (quant) { case HOWMANY: - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); + temp.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT)); break; case EVERY: // probably save to ignore // TODO unless in cases like "which actor starred in every movie by spielberg?" @@ -130,7 +130,7 @@ case NO: SPARQL_Filter f = new SPARQL_Filter(); f.addNotBound(new SPARQL_Term(sref)); - query.addFilter(f); + temp.addFilter(f); break; case FEW: // break; @@ -142,20 +142,20 @@ break; case THELEAST: fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); - query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); - query.setLimit(1); + temp.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + temp.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.ASC)); + temp.setLimit(1); break; case THEMOST: fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); - query.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); - query.setLimit(1); + temp.addSelTerm(new SPARQL_Term(sref, SPARQL_Aggregate.COUNT,fresh)); + temp.addOrderBy(new SPARQL_Term(fresh, SPARQL_OrderBy.DESC)); + temp.setLimit(1); break; } } else if (condition.isNegatedCondition()) { Negated_DRS neg = (Negated_DRS) condition; - query = convert(neg.getDRS(), query, true); + temp = convert(neg.getDRS(), temp, true); } else { Simple_DRS_Condition simple = (Simple_DRS_Condition) condition; @@ -164,9 +164,15 @@ if (predicate.startsWith("SLOT")) { for (Slot s : slots) { if (s.getAnchor().equals(predicate)) { - s.setToken(predicate); - predicate = "p" + createFresh(); - s.setAnchor(simple.getArguments().get(0).getValue()); + if (simple.getArguments().size() > 1) { + s.setToken(predicate); + predicate = "p" + createFresh(); + s.setAnchor(predicate); + temp.addSlot(s); + } + else if (simple.getArguments().size() == 1) { + s.setAnchor(simple.getArguments().get(0).getValue()); + } break; } else if (s.getToken().equals(predicate)) { @@ -188,95 +194,95 @@ Path p = new Path(); p.setStart(simple.getArguments().get(1).getValue()); p.setTarget(simple.getArguments().get(0).getValue()); - query.addConditions(p); + temp.addConditions(p); } } if (predicate.startsWith("p")) { if (simple.getArguments().size() == 2) { Path p = new Path(); p.setStart(simple.getArguments().get(0).getValue()); - p.setVia(simple.getPredicate()); + p.setVia(predicate); p.setTarget(simple.getArguments().get(1).getValue()); - query.addConditions(p); + temp.addConditions(p); } } else if (predicate.equals("count")) { // COUNT(?x) AS ?c if (!literal) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); + return temp; } else { String fresh = "c"+createFresh(); - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); - query.addFilter(new SPARQL_Filter( + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(fresh), new SPARQL_Term(simple.getArguments().get(1).getValue(),true), SPARQL_PairType.EQ))); - return query; + return temp; } } else if (predicate.equals("sum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(1).getValue(), SPARQL_Aggregate.SUM)); + return temp; } else if (predicate.equals("greater")) { - query.addFilter(new SPARQL_Filter( + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.GT))); - return query; + return temp; } else if (predicate.equals("greaterorequal")) { - query.addFilter(new SPARQL_Filter( + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.GTEQ))); - return query; + return temp; } else if (predicate.equals("less")) { - query.addFilter(new SPARQL_Filter( + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.LT))); - return query; + return temp; } else if (predicate.equals("lessorequal")) { - query.addFilter(new SPARQL_Filter( + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.LTEQ))); - return query; + return temp; } else if (predicate.equals("maximum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); - query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.DESC)); - query.setLimit(1); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); + temp.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.DESC)); + temp.setLimit(1); + return temp; } else if (predicate.equals("minimum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); - query.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.ASC)); - query.setLimit(1); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue())); + temp.addOrderBy(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_OrderBy.ASC)); + temp.setLimit(1); + return temp; } else if (predicate.equals("countmaximum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); - query.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); - query.setLimit(1); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); + temp.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); + temp.setLimit(1); + return temp; } else if (predicate.equals("countminimum")) { - query.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); - query.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); - query.setLimit(1); - return query; + temp.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, "c")); + temp.addOrderBy(new SPARQL_Term("c", SPARQL_OrderBy.DESC)); + temp.setLimit(1); + return temp; } else if (predicate.equals("equal")) { - query.addFilter(new SPARQL_Filter( + temp.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.EQ))); - return query; + return temp; } } - return query; + return temp; } @@ -291,25 +297,41 @@ DiscourseReferent firstArg; DiscourseReferent secondArg; + boolean firstIsURI; + boolean secondIsURI; for (Simple_DRS_Condition c : equalsConditions) { - + firstArg = c.getArguments().get(0); secondArg = c.getArguments().get(1); + firstIsURI = isUri(firstArg.getValue()); + secondIsURI = isUri(secondArg.getValue()); - boolean oneArgIsInt = firstArg.getValue().matches("\\d+") || secondArg.getValue().matches("\\d+"); + boolean oneArgIsInt = firstArg.toString().matches("[0..9]") || secondArg.toString().matches("[0..9]"); drs.removeCondition(c); - if (!oneArgIsInt) { + if (firstIsURI) { + drs.replaceEqualRef(secondArg, firstArg, false); + for (Slot s : slots) { + if (s.getAnchor().equals(secondArg.getValue())) { + s.setAnchor(firstArg.getValue()); + } + } + } else if (secondIsURI) { drs.replaceEqualRef(firstArg, secondArg, false); - } else { - drs.replaceEqualRef(firstArg, secondArg, true); + for (Slot s : slots) { + if (s.getAnchor().equals(firstArg.getValue())) { + s.setAnchor(secondArg.getValue()); + } + } + } else if (!oneArgIsInt) { + drs.replaceEqualRef(firstArg, secondArg, false); + for (Slot s : slots) { + if (s.getAnchor().equals(firstArg.getValue())) { + s.setAnchor(secondArg.getValue()); + } + } } - for (Slot s : slots) { - if (s.getAnchor().equals(firstArg.getValue())) { - s.setAnchor(secondArg.getValue()); - } - } } // finally remove all conditions that ended up of form equal(y,y) @@ -323,6 +345,10 @@ drs.removeCondition(c); } } + + private boolean isUri(String arg) { + return false; // TODO + } private int createFresh() { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-10-17 11:27:53 UTC (rev 3307) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-10-17 13:54:24 UTC (rev 3308) @@ -136,11 +136,11 @@ if (!containsModuloRenaming(drses,drs)) { // // DEBUG - System.out.println(dude); - System.out.println(drs); - for (Slot sl : slots) { - System.out.println(sl.toString()); - } +// System.out.println(dude); +// System.out.println(drs); +// for (Slot sl : slots) { +// System.out.println(sl.toString()); +// } // // drses.add(drs); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-17 11:27:53 UTC (rev 3307) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-17 13:54:24 UTC (rev 3308) @@ -12,7 +12,7 @@ public class TestFrontend { static String[] GRAMMAR_FILES = {"src/main/resources/lexicon/english.lex"}; - static boolean BASIC_MODE = false; // true for BASIC mode, false for LEIPZIG mode + static boolean BASIC_MODE = true; // true for BASIC mode, false for LEIPZIG mode public static void main(String[] args) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2011-10-26 08:41:47
|
Revision: 3321 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3321&view=rev Author: christinaunger Date: 2011-10-26 08:41:40 +0000 (Wed, 26 Oct 2011) Log Message: ----------- [tbsl] can now handle dates such as 'in 1950' Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Pair.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_PairType.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -289,19 +289,27 @@ SPARQL_PairType.EQ))); return query; } - - if (arity == 1) { - SPARQL_Term term = new SPARQL_Term(simple.getArguments().get(0).getValue(),false);term.setIsVariable(true); - query.addCondition(new SPARQL_Triple(term,new SPARQL_Property("type",new SPARQL_Prefix("rdf","")),prop)); + else if (predicate.equals("DATE")) { + query.addFilter(new SPARQL_Filter( + new SPARQL_Pair( + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), + new SPARQL_Term("'^"+simple.getArguments().get(1).getValue()+"'",true), + SPARQL_PairType.REGEX))); } - else if (arity == 2) { - String arg1 = simple.getArguments().get(0).getValue();SPARQL_Term term1 = new SPARQL_Term(arg1,false);term1.setIsVariable(true); - String arg2 = simple.getArguments().get(1).getValue();SPARQL_Term term2 = new SPARQL_Term(arg2,false);term2.setIsVariable(true); - query.addCondition(new SPARQL_Triple(term1, prop, term2)); + else { + if (arity == 1) { + SPARQL_Term term = new SPARQL_Term(simple.getArguments().get(0).getValue(),false);term.setIsVariable(true); + query.addCondition(new SPARQL_Triple(term,new SPARQL_Property("type",new SPARQL_Prefix("rdf","")),prop)); + } + else if (arity == 2) { + String arg1 = simple.getArguments().get(0).getValue();SPARQL_Term term1 = new SPARQL_Term(arg1,false);term1.setIsVariable(true); + String arg2 = simple.getArguments().get(1).getValue();SPARQL_Term term2 = new SPARQL_Term(arg2,false);term2.setIsVariable(true); + query.addCondition(new SPARQL_Triple(term1, prop, term2)); + } + else if (arity > 2) { + // TODO + } } - else if (arity > 2) { - // TODO - } } return query; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Pair.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Pair.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Pair.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -42,6 +42,8 @@ return "!BOUND(" + a + ")"; case NEQ: return a + "!=" + b; + case REGEX: + return "regex(" + a + "," + b + ")"; } return ""; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_PairType.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_PairType.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_PairType.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -2,5 +2,5 @@ public enum SPARQL_PairType { - GT, LT, GTEQ, LTEQ, EQ, NEQ, B, NB + GT, LT, GTEQ, LTEQ, EQ, NEQ, B, NB, REGEX } \ No newline at end of file Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -205,10 +205,14 @@ result.add(passEntry); } else if (pos.equals("VPASSIN")) { - String[] passEntry = {token, + String[] passEntry1 = {token, "(S DP[subj] (VP V:'" + token + "' DP[obj]))", "<x,l1,t,[ l1:[|], l4:[ | SLOT_" + token + "(x,y) ] ],[(l2,x,subj,<<e,t>,t>),(l3,y,obj,<<e,t>,t>)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; - result.add(passEntry); + String[] passEntry2 = {token, + "(S DP[dp] (VP V:'" + token + "' NUM[num]))", + "<x,l1,t,[ l1:[|], l4:[ y | SLOT_" + token + "(x,y), DATE(y,z) ] ],[(l2,x,dp,<<e,t>,t>),(l3,z,num,e)],[ l2<l1,l3<l1,l4<scope(l2),l4<scope(l3) ],[" + symslot + "]>"}; + result.add(passEntry1); + result.add(passEntry2); } else if (pos.equals("GERUNDIN")) { String[] gerundinEntry1 = {token, Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -26,6 +26,7 @@ import org.dllearner.algorithm.tbsl.sem.dudes.data.Dude; import org.dllearner.algorithm.tbsl.sem.dudes.reader.ParseException; import org.dllearner.algorithm.tbsl.sparql.Slot; +import org.dllearner.algorithm.tbsl.sparql.SlotType; import org.dllearner.algorithm.tbsl.sparql.Template; public class Templator { @@ -179,7 +180,7 @@ newwords.add(word); newwords.addAll(strings); - if (wordnetpos != null) { + if (wordnetpos != null && !slot.getSlotType().equals(SlotType.RESOURCE)) { newwords.addAll(wordnet.getBestSynonyms(wordnetpos,getLemmatizedWord(word))); for (String att : getLemmatizedWords(strings)) { newwords.addAll(wordnet.getBestSynonyms(wordnetpos,att)); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-26 07:52:30 UTC (rev 3320) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/TestFrontend.java 2011-10-26 08:41:40 UTC (rev 3321) @@ -12,7 +12,7 @@ public class TestFrontend { static String[] GRAMMAR_FILES = {"src/main/resources/lexicon/english.lex"}; - static boolean BASIC_MODE = true; // true for BASIC mode, false for LEIPZIG mode + static boolean BASIC_MODE = false; // true for BASIC mode, false for LEIPZIG mode public static void main(String[] args) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-10-31 09:29:33
|
Revision: 3342 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3342&view=rev Author: lorenz_b Date: 2011-10-31 09:29:27 +0000 (Mon, 31 Oct 2011) Log Message: ----------- Changed eval pdf header. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java trunk/components-ext/src/main/resources/tbsl/evaluation/praeambel.tex trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-10-30 11:45:33 UTC (rev 3341) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-10-31 09:29:27 UTC (rev 3342) @@ -124,10 +124,12 @@ } - public void write(String file){ + public void write(String file, String time, int correctAnswers){ endSummaryTable(); StringBuilder latex = new StringBuilder(); latex.append(loadPraeambel()); + latex.append("\\subtitle{" + time + "}\n"); + latex.append("\\author{Correct answers:" + correctAnswers + "}\n"); latex.append("\\begin{document}"); latex.append("\\maketitle\n"); latex.append("\\newpage\n"); Modified: trunk/components-ext/src/main/resources/tbsl/evaluation/praeambel.tex =================================================================== --- trunk/components-ext/src/main/resources/tbsl/evaluation/praeambel.tex 2011-10-30 11:45:33 UTC (rev 3341) +++ trunk/components-ext/src/main/resources/tbsl/evaluation/praeambel.tex 2011-10-31 09:29:27 UTC (rev 3342) @@ -1,4 +1,4 @@ -\documentclass[a4paper,10pt]{article} +\documentclass[a4paper,10pt]{scrartcl} \usepackage{lmodern} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} @@ -42,3 +42,4 @@ %opening \title{Evaluation} +\date{} \ No newline at end of file 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-10-30 11:45:33 UTC (rev 3341) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-10-31 09:29:27 UTC (rev 3342) @@ -56,6 +56,7 @@ import com.hp.hpl.jena.sparql.vocabulary.FOAF; import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; +import com.ibm.icu.util.Calendar; public class Evaluation{ @@ -300,8 +301,8 @@ public void run(){ int topN2Print = 10; + int correctAnswers = 0; - int questionId = -1; String question = ""; String targetQuery; @@ -311,7 +312,7 @@ String errorCode = ""; LatexWriter latex = new LatexWriter(); int i = 0; - for(Entry<Integer, String> entry : id2Question.entrySet()){if(entry.getKey()==50)continue; + for(Entry<Integer, String> entry : id2Question.entrySet()){//if(entry.getKey()==50)continue; if(testID != -1 && entry.getKey() != testID)continue; try { questionId = entry.getKey(); @@ -454,6 +455,9 @@ latex.addText(escapeAnswerString(learnedAnswer, targetAnswer)); precision = computePrecision(targetAnswer, learnedAnswer); recall = computeRecall(targetAnswer, learnedAnswer); + if(precision == 1 && recall == 1){ + correctAnswers++; + } } latex.addSummaryTableEntry(questionId, extractSentence(question), precision, recall, errorCode); @@ -468,7 +472,8 @@ latex.addSummaryTableEntry(questionId, extractSentence(question), precision, recall, errorCode); } } - latex.write("log/evaluation.tex"); + + latex.write("log/evaluation_" + System.currentTimeMillis()+ ".tex", Calendar.getInstance().getTime().toString(), correctAnswers); } public static List<String> extractEntities(String query){ @@ -667,7 +672,7 @@ } } latex.endDocument(); - latex.write("log/evaluation" + new Date().getHours() + "_" + new Date().getMinutes() + ".tex"); + latex.write("log/evaluation_" + System.nanoTime() + ".tex", Calendar.getInstance().getTime().toString(), 0); } private String escapeAnswerString(Object learnedAnswer, Object targetAnswer){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-11-03 15:02:43
|
Revision: 3369 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3369&view=rev Author: lorenz_b Date: 2011-11-03 15:02:37 +0000 (Thu, 03 Nov 2011) Log Message: ----------- Changed eval output. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-11-03 14:29:32 UTC (rev 3368) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-11-03 15:02:37 UTC (rev 3369) @@ -61,8 +61,8 @@ sb.append("\\end{document}"); } - public void beginSection(String title){ - sb.append("\\section{").append(title).append("}").append("\\label{" + cnt++ + "}\n"); + public void beginSection(String title, int id){ + sb.append("\\section{").append(title).append("}").append("\\label{" + id + "}\n"); } public void beginSubsection(String title){ 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-03 14:29:32 UTC (rev 3368) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-11-03 15:02:37 UTC (rev 3369) @@ -317,7 +317,7 @@ String errorCode = ""; LatexWriter latex = new LatexWriter(); int i = 0; - for(Entry<Integer, String> entry : id2Question.entrySet()){if(entry.getKey()==50)continue; + for(Entry<Integer, String> entry : id2Question.entrySet()){//if(entry.getKey()==50)continue; if((testID != -1 && entry.getKey() != testID) || (yagoExclusions.contains(entry.getKey())))continue; try { questionId = entry.getKey(); @@ -333,7 +333,7 @@ //write new section for query - latex.beginSection(extractSentence(question)); + latex.beginSection(extractSentence(question), questionId); //write subsection for target latex.beginSubsection("Target"); //write subsubsection for target query @@ -616,7 +616,7 @@ //write new section for query - latex.beginSection(question); + latex.beginSection(question, questionId); //write subsection for target latex.beginSubsection("Target"); //write subsubsection for target query This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |