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. |