package semanticMarkup.ling.learn.knowledge; import static org.junit.Assert.*; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.junit.Test; import semanticMarkup.know.lib.WordNetPOSKnowledgeBase; import semanticMarkup.ling.learn.Configuration; import semanticMarkup.ling.learn.Learner; import semanticMarkup.ling.learn.dataholder.DataHolder; import semanticMarkup.ling.learn.utility.LearnerUtility; import semanticMarkup.ling.learn.utility.WordFormUtility; import semanticMarkup.ling.transform.ITokenizer; import semanticMarkup.ling.transform.lib.OpenNLPSentencesTokenizer; import semanticMarkup.ling.transform.lib.OpenNLPTokenizer; public class POSBasedAnnotatorTest { @Test public void testCaseHandler() { // List<String> words = new ArrayList<String>(); // words.addAll(Arrays // .asList("large interlocking <N>plates</N> <B>with</B> pronounced crescentic <N>margins</N>" // .split(" "))); // String ptn = "qqnbqqn"; // // MarkupByPOS myTester = this.markupByPOSFactory(); // DataHolder myDataHolder = this.dataHolderFactory(); // // myTester.CaseHandler(myDataHolder, null, words, ptn); } @Test public void testGetModifierAndTagForCase2() { POSBasedAnnotator myTester = this.markupByPOSFactory(); String modifier = "large interlocking"; int start = 2; int end = 3; List<String> words = new ArrayList<String>(); words.addAll(Arrays.asList("large interlocking <N>plates</N> <B>with</B> pronounced crescentic <N>margins</N>" .split(" "))); List<String> target = new LinkedList<String>(); target.add("large interlocking"); target.add("<N>plates</N>"); assertEquals("getModifierAndTagForCase1", target, myTester.getModifierAndTagForCase2(modifier, start, end, words)); } @Test public void testGetModifierAndTagForCase3() { POSBasedAnnotator myTester = this.markupByPOSFactory(); String ptn = "ntqqq,qbbn"; List<String> words = new ArrayList<String>(); words.addAll(Arrays .asList("<N>orbit</N> <M>dorsal</M> or dorsolaterally facing , surrounded <B>laterally</B> <B>by</B> <N>endocranium</N>" .split(" "))); List<String> target = new LinkedList<String>(); target.add(""); target.add("orbit"); assertEquals("getModifierAndTagForCase3", target, myTester.getModifierAndTagForCase3(ptn, words)); ptn = "qbbnbtn"; assertEquals("getModifierAndTagForCase3 - null", null, myTester.getModifierAndTagForCase3(ptn, words)); } @Test public void testGetModifiersForUntag() { String modifier = "enlarged postorbital <N>tessera</N>"; List<String> target = new LinkedList<String>(); target.add("enlarged"); target.add("postorbital"); POSBasedAnnotator myTester = this.markupByPOSFactory(); assertEquals("getModifiersForUntag", target, myTester.getModifiersForUntag(modifier)); assertEquals("getModifiersForUntag", "enlarged postorbital <N>tessera</N>", modifier); } private POSBasedAnnotator markupByPOSFactory() { Configuration myConfiguration = new Configuration(); ITokenizer sentenceDetector = new OpenNLPSentencesTokenizer( myConfiguration.getOpenNLPSentenceDetectorDir()); ITokenizer tokenizer = new OpenNLPTokenizer(myConfiguration.getOpenNLPTokenizerDir()); WordNetPOSKnowledgeBase wordNetPOSKnowledgeBase = null; try { wordNetPOSKnowledgeBase = new WordNetPOSKnowledgeBase(myConfiguration.getWordNetDictDir(), false); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } LearnerUtility myLearnerUtility = new LearnerUtility(sentenceDetector, tokenizer, wordNetPOSKnowledgeBase); POSBasedAnnotator myMarkupByPOS = new POSBasedAnnotator(myLearnerUtility); return myMarkupByPOS; } private DataHolder dataHolderFactory() { DataHolder tester; Configuration myConfiguration = new Configuration(); WordNetPOSKnowledgeBase wordNetPOSKnowledgeBase = null; try { wordNetPOSKnowledgeBase = new WordNetPOSKnowledgeBase(myConfiguration.getWordNetDictDir(), false); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } WordFormUtility wordFormUtility = new WordFormUtility(wordNetPOSKnowledgeBase); Constant myConstant = new Constant(); tester = new DataHolder(myConfiguration, myConstant, wordFormUtility); return tester; } }