You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2013/03/18 12:55:21 UTC

svn commit: r1457721 - in /stanbol/trunk/commons/opennlp: pom.xml src/test/java/org/apache/commons/opennlp/OpenNLPTest.java src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java

Author: rwesten
Date: Mon Mar 18 11:55:20 2013
New Revision: 1457721

URL: http://svn.apache.org/r1457721
Log:
STANBOL-984: added unit test for OpenNLP service

Added:
    stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java   (with props)
Modified:
    stanbol/trunk/commons/opennlp/pom.xml
    stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java

Modified: stanbol/trunk/commons/opennlp/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/trunk/commons/opennlp/pom.xml?rev=1457721&r1=1457720&r2=1457721&view=diff
==============================================================================
--- stanbol/trunk/commons/opennlp/pom.xml (original)
+++ stanbol/trunk/commons/opennlp/pom.xml Mon Mar 18 11:55:20 2013
@@ -127,6 +127,13 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.stanbol</groupId>
+      <artifactId>org.apache.stanbol.data.opennlp.ner.en</artifactId>
+      <version>1.2.0-SNAPSHOT</version>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Added: stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java?rev=1457721&view=auto
==============================================================================
--- stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java (added)
+++ stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java Mon Mar 18 11:55:20 2013
@@ -0,0 +1,149 @@
+package org.apache.commons.opennlp;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+
+import opennlp.tools.chunker.Chunker;
+import opennlp.tools.chunker.ChunkerModel;
+import opennlp.tools.namefind.TokenNameFinder;
+import opennlp.tools.namefind.TokenNameFinderModel;
+import opennlp.tools.postag.POSModel;
+import opennlp.tools.postag.POSTagger;
+import opennlp.tools.sentdetect.SentenceDetector;
+import opennlp.tools.sentdetect.SentenceModel;
+import opennlp.tools.tokenize.SimpleTokenizer;
+import opennlp.tools.tokenize.Tokenizer;
+import opennlp.tools.tokenize.TokenizerModel;
+
+import org.apache.stanbol.commons.opennlp.OpenNLP;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Test loading of OpenNLP models. This was previously implicitly tested by the
+ * in the meantime removed TextAnalyzer test.
+ * @author Rupert Westenthaler
+ *
+ */
+public class OpenNLPTest {
+    
+    
+    private static OpenNLP openNLP;    
+    @BeforeClass
+    public static void init(){
+        openNLP = new OpenNLP(new ClasspathDataFileProvider("DUMMY"));
+    }
+
+    @Test
+    public void testLoadEnTokenizer() throws IOException{
+        TokenizerModel model = openNLP.getTokenizerModel("en");
+        Assert.assertNotNull(model);
+        Tokenizer tokenizer = openNLP.getTokenizer("en");
+        Assert.assertNotNull(tokenizer);
+    }
+    
+    @Test
+    public void testLoadMissingTokenizerModel() throws IOException{
+        TokenizerModel model = openNLP.getTokenizerModel("ru");
+        //there is not Russian model ...
+        //so it is expected that the model is NULL
+        Assert.assertNull(model);
+    }
+    @Test
+    public void testFallbackToSimpleTokenizer() throws IOException{
+        //however for the tokenizer it is expected that a fallback to the
+        //SimpleTokenizer is made
+        Tokenizer tokenizer = openNLP.getTokenizer("ru");
+        Assert.assertNotNull(tokenizer);
+        Assert.assertEquals(SimpleTokenizer.INSTANCE, tokenizer);
+    }
+    
+    @Test
+    public void testLoadEnSentence() throws IOException{
+        SentenceModel model = openNLP.getSentenceModel("en");
+        Assert.assertNotNull(model);
+        SentenceDetector sentDetector = openNLP.getSentenceDetector("en");
+        Assert.assertNotNull(sentDetector);
+    }
+    @Test
+    public void testLoadMissingSentence() throws IOException{
+        SentenceModel model = openNLP.getSentenceModel("ru");
+        Assert.assertNull(model);
+        SentenceDetector sentDetector = openNLP.getSentenceDetector("ru");
+        Assert.assertNull(sentDetector);
+    }
+    @Test
+    public void testLoadEnPOS() throws IOException{
+        POSModel model = openNLP.getPartOfSpeachModel("en");
+        Assert.assertNotNull(model);
+        POSTagger posTagger = openNLP.getPartOfSpeechTagger("en");
+        Assert.assertNotNull(posTagger);
+    }
+    @Test
+    public void testLoadMissingPOS() throws IOException{
+        POSModel model = openNLP.getPartOfSpeachModel("ru");
+        Assert.assertNull(model);
+        POSTagger posTagger = openNLP.getPartOfSpeechTagger("ru");
+        Assert.assertNull(posTagger);
+    }
+    @Test
+    public void testLoadEnChunker() throws IOException{
+        ChunkerModel model = openNLP.getChunkerModel("en");
+        Assert.assertNotNull(model);
+        Chunker chunker = openNLP.getChunker("en");
+        Assert.assertNotNull(chunker);
+    }
+    @Test
+    public void testLoadMissingChunker() throws IOException{
+        ChunkerModel model = openNLP.getChunkerModel("ru");
+        Assert.assertNull(model);
+        Chunker chunker = openNLP.getChunker("ru");
+        Assert.assertNull(chunker);
+    }    
+    @Test
+    public void testLoadEnNER() throws IOException{
+        for(String type : Arrays.asList("person","organization","location")){
+            TokenNameFinderModel model = openNLP.getNameModel(type, "en");
+            Assert.assertNotNull(model);
+            TokenNameFinder ner = openNLP.getNameFinder(type, "en");
+            Assert.assertNotNull(ner);
+        }
+    }
+    @Test
+    public void testLoadMissingNER() throws IOException{
+        //first unknown type
+        TokenNameFinderModel model = openNLP.getNameModel("person2", "en");
+        Assert.assertNull(model);
+        TokenNameFinder ner = openNLP.getNameFinder("person2", "en");
+        Assert.assertNull(ner);
+        //unknown language
+        model = openNLP.getNameModel("person", "ru");
+        Assert.assertNull(model);
+        ner = openNLP.getNameFinder("person", "ru");
+        Assert.assertNull(ner);
+    }
+    @Test
+    public void testLoadModelByName() throws IOException{
+        TokenizerModel tokenModel = openNLP.getModel(TokenizerModel.class, "en-token.bin", null);
+        Assert.assertNotNull(tokenModel);
+        SentenceModel sentModel = openNLP.getModel(SentenceModel.class, "en-sent.bin", null);
+        Assert.assertNotNull(sentModel);
+        POSModel posModel = openNLP.getModel(POSModel.class, "en-pos-maxent.bin", null);
+        Assert.assertNotNull(posModel);
+        ChunkerModel chunkModel = openNLP.getModel(ChunkerModel.class, "en-chunker.bin", null);
+        Assert.assertNotNull(chunkModel);
+        TokenNameFinderModel nerModel = openNLP.getModel(TokenNameFinderModel.class, "en-ner-person.bin", null);
+        Assert.assertNotNull(nerModel);
+        //unavailable model
+        tokenModel = openNLP.getModel(TokenizerModel.class, "ru-token.bin", null);
+        Assert.assertNull(tokenModel);
+    }
+    @Test(expected=IllegalStateException.class)
+    public void testLoadIncompatibleModelByName() throws IOException{
+        SentenceModel sentModel = openNLP.getModel(SentenceModel.class, "en-token.bin", null);
+        Assert.assertNotNull(sentModel);
+    }
+    
+}

Propchange: stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/OpenNLPTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java?rev=1457721&r1=1457720&r2=1457721&view=diff
==============================================================================
--- stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java (original)
+++ stanbol/trunk/commons/opennlp/src/test/java/org/apache/commons/opennlp/TextAnalyzerTest.java Mon Mar 18 11:55:20 2013
@@ -16,7 +16,7 @@
 */
 package org.apache.commons.opennlp;
 
-import static junit.framework.Assert.*;
+import static org.junit.Assert.*;
 
 import java.util.Iterator;
 import java.util.List;
@@ -30,6 +30,7 @@ import org.apache.stanbol.commons.opennl
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+@SuppressWarnings("deprecation") //test for a deprecated component
 public class TextAnalyzerTest {
 
     public static final String SINGLE_SENTENCE = "Dr Patrick Marshall (1869 - November 1950) was a"