updated tests
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSEvaluatorTest.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSEvaluatorTest.java
index 220ad2c..c5e63cf 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSEvaluatorTest.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSEvaluatorTest.java
@@ -59,7 +59,7 @@
           WSDHelper.print("------------------" + word + "------------------");

           for (WSDSample instance : instances) {

             if (instance.getSenseIDs() != null

-                && !instance.getSenseIDs().get(0).equals("null")) {

+                && !instance.getSenseIDs()[0].equals("null")) {

               evaluator.evaluateSample(instance);

             }

           }

diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSMETester.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSMETester.java
index ce0f86e..881de6a 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSMETester.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/IMSMETester.java
@@ -43,8 +43,8 @@
  * 
  * The scope of this test is to make sure that the IMS disambiguator code can be
  * executed. This test can not detect mistakes which lead to incorrect feature
- * generation or other mistakes which decrease the disambiguation performance of the
- * disambiguator.
+ * generation or other mistakes which decrease the disambiguation performance of
+ * the disambiguator.
  * 
  * In this test the {@link IMSME} is trained with Semcor and then the computed
  * model is used to predict sentences from the training sentences.
@@ -154,9 +154,8 @@
    */
   @Test
   public void testOneWordDisambiguation() {
-    String[] senses = ims.disambiguate(sentence1, tags1, lemmas1, 8);
-
-    assertEquals("Check number of senses", 1, senses.length);
+    String sense = ims.disambiguate(sentence1, tags1, lemmas1, 8);
+    assertEquals("Check 'please' sense ID", "WORDNET please%2:37:00::", sense);
   }
 
   /*
@@ -167,13 +166,15 @@
   @Test
   public void testWordSpanDisambiguation() {
     Span span = new Span(3, 7);
-    List<String[]> senses = ims.disambiguate(sentence2, tags2, lemmas2, span);
+    List<String> senses = ims.disambiguate(sentence2, tags2, lemmas2, span);
 
     assertEquals("Check number of returned words", 5, senses.size());
-    assertEquals("Check number of senses", 1, senses.get(0).length);
-    assertEquals("Check monosemous word", 1, senses.get(1).length);
-    assertEquals("Check preposition", "WSDHELPER to", senses.get(2)[0]);
-    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3)[0]);
+    assertEquals("Check 'highly' sense ID", "WORDNET highly%4:02:01::",
+        senses.get(0));
+    assertEquals("Check 'radioactive' sense ID",
+        "WORDNET radioactive%3:00:00::", senses.get(1));
+    assertEquals("Check preposition", "WSDHELPER to", senses.get(2));
+    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3));
   }
 
   /*
@@ -181,11 +182,11 @@
    */
   @Test
   public void testAllWordsDisambiguation() {
-    List<String[]> senses = ims.disambiguate(sentence3, tags3, lemmas3);
+    List<String> senses = ims.disambiguate(sentence3, tags3, lemmas3);
 
     assertEquals("Check number of returned words", 15, senses.size());
     assertEquals("Check preposition", "WSDHELPER personal pronoun",
-        senses.get(6)[0]);
+        senses.get(6));
   }
 
 }
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskEvaluatorTest.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskEvaluatorTest.java
index fe5199c..737b8fa 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskEvaluatorTest.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskEvaluatorTest.java
@@ -22,8 +22,6 @@
 import java.util.ArrayList;
 
 import opennlp.tools.disambiguator.datareader.SensevalReader;
-import opennlp.tools.disambiguator.lesk.Lesk;
-import opennlp.tools.disambiguator.lesk.LeskParameters;
 
 import org.junit.Test;
 
@@ -59,7 +57,7 @@
           WSDHelper.print("------------------" + word + "------------------");
           for (WSDSample instance : instances) {
             if (instance.getSenseIDs() != null
-                && !instance.getSenseIDs().get(0).equals("null")) {
+                && !instance.getSenseIDs()[0].equals("null")) {
               evaluator.evaluateSample(instance);
             }
           }
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskTester.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskTester.java
index edb1346..2aa3334 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskTester.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/LeskTester.java
@@ -24,9 +24,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import opennlp.tools.disambiguator.lesk.Lesk;
-import opennlp.tools.disambiguator.lesk.LeskParameters;
-import opennlp.tools.disambiguator.lesk.LeskParameters.LESK_TYPE;
+import opennlp.tools.disambiguator.LeskParameters.LESK_TYPE;
 import opennlp.tools.util.Span;
 
 import org.junit.BeforeClass;
@@ -35,10 +33,10 @@
 /**
  * This is the test class for {@link Lesk}.
  * 
- * The scope of this test is to make sure that the Lesk disambiguator code can be
- * executed. This test can not detect mistakes which lead to incorrect feature
- * generation or other mistakes which decrease the disambiguation performance of the
- * disambiguator.
+ * The scope of this test is to make sure that the Lesk disambiguator code can
+ * be executed. This test can not detect mistakes which lead to incorrect
+ * feature generation or other mistakes which decrease the disambiguation
+ * performance of the disambiguator.
  */
 public class LeskTester {
   // TODO write more tests
@@ -118,9 +116,8 @@
    */
   @Test
   public void testOneWordDisambiguation() {
-    String[] senses = lesk.disambiguate(sentence1, tags1, lemmas1, 8);
-
-    assertEquals("Check number of senses", 1, senses.length);
+    String sense = lesk.disambiguate(sentence1, tags1, lemmas1, 8);
+    assertEquals("Check 'please' sense ID", "WORDNET please%2:37:00:: -1", sense);
   }
 
   /*
@@ -131,13 +128,15 @@
   @Test
   public void testWordSpanDisambiguation() {
     Span span = new Span(3, 7);
-    List<String[]> senses = lesk.disambiguate(sentence2, tags2, lemmas2, span);
+    List<String> senses = lesk.disambiguate(sentence2, tags2, lemmas2, span);
 
     assertEquals("Check number of returned words", 5, senses.size());
-    assertEquals("Check number of senses", 3, senses.get(0).length);
-    assertEquals("Check monosemous word", 1, senses.get(1).length);
-    assertEquals("Check preposition", "WSDHELPER to", senses.get(2)[0]);
-    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3)[0]);
+    assertEquals("Check 'highly' sense ID", "WORDNET highly%4:02:01:: 4.8",
+        senses.get(0));
+    assertEquals("Check 'radioactive' sense ID",
+        "WORDNET radioactive%3:00:00:: 6.0", senses.get(1));
+    assertEquals("Check preposition", "WSDHELPER to", senses.get(2));
+    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3));
   }
 
   /*
@@ -145,11 +144,11 @@
    */
   @Test
   public void testAllWordsDisambiguation() {
-    List<String[]> senses = lesk.disambiguate(sentence3, tags3, lemmas3);
+    List<String> senses = lesk.disambiguate(sentence3, tags3, lemmas3);
 
     assertEquals("Check number of returned words", 15, senses.size());
     assertEquals("Check preposition", "WSDHELPER personal pronoun",
-        senses.get(6)[0]);
+        senses.get(6));
   }
 
 }
\ No newline at end of file
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSEvaluatorTest.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSEvaluatorTest.java
index b71ca6e..0195cae 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSEvaluatorTest.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSEvaluatorTest.java
@@ -22,9 +22,7 @@
 import java.util.ArrayList;

 

 import opennlp.tools.disambiguator.datareader.SensevalReader;

-import opennlp.tools.disambiguator.ims.WTDIMS;

-import opennlp.tools.disambiguator.mfs.MFS;

-import opennlp.tools.disambiguator.mfs.MFSParameters;

+import opennlp.tools.disambiguator.MFS;

 

 import org.junit.Test;

 

@@ -40,7 +38,6 @@
     WSDHelper.loadLemmatizer(modelsDir + "en-lemmatizer.dict");

     WSDHelper.loadTagger(modelsDir + "en-pos-maxent.bin");

     MFS mfs = new MFS();

-    WSDParameters.isStemCompare = true;

 

     ArrayList<String> words = seReader.getSensevalWords();

 

@@ -56,7 +53,7 @@
           WSDHelper.print("------------------" + word + "------------------");

           for (WSDSample instance : instances) {

             if (instance.getSenseIDs() != null

-                && !instance.getSenseIDs().get(0).equals("null")) {

+                && !instance.getSenseIDs()[0].equals("null")) {

               evaluator.evaluateSample(instance);

             }

           }

diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSTester.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSTester.java
index a675268..025261e 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSTester.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/MFSTester.java
@@ -26,7 +26,7 @@
 import org.junit.BeforeClass;

 import org.junit.Test;

 

-import opennlp.tools.disambiguator.mfs.MFS;

+import opennlp.tools.disambiguator.MFS;

 import opennlp.tools.util.Span;

 

 /**

@@ -34,8 +34,8 @@
  * 

  * The scope of this test is to make sure that the MFS disambiguator code can be

  * executed. This test can not detect mistakes which lead to incorrect feature

- * generation or other mistakes which decrease the disambiguation performance of the

- * disambiguator.

+ * generation or other mistakes which decrease the disambiguation performance of

+ * the disambiguator.

  */

 public class MFSTester {

   // TODO write more tests

@@ -110,9 +110,8 @@
    */

   @Test

   public void testOneWordDisambiguation() {

-    String[] senses = mfs.disambiguate(sentence1, tags1, lemmas1, 8);

-

-    assertEquals("Check number of senses", 1, senses.length);

+    String sense = mfs.disambiguate(sentence1, tags1, lemmas1, 8);

+    assertEquals("Check 'please' sense ID", "WORDNET please%2:37:00::", sense);

   }

 

   /*

@@ -123,13 +122,15 @@
   @Test

   public void testWordSpanDisambiguation() {

     Span span = new Span(3, 7);

-    List<String[]> senses = mfs.disambiguate(sentence2, tags2, lemmas2, span);

+    List<String> senses = mfs.disambiguate(sentence2, tags2, lemmas2, span);

 

     assertEquals("Check number of returned words", 5, senses.size());

-    assertEquals("Check number of senses", 1, senses.get(0).length);

-    assertEquals("Check monosemous word", 1, senses.get(1).length);

-    assertEquals("Check preposition", "WSDHELPER to", senses.get(2)[0]);

-    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3)[0]);

+    assertEquals("Check 'highly' sense ID", "WORDNET highly%4:02:01::",

+        senses.get(0));

+    assertEquals("Check 'radioactive' sense ID",

+        "WORDNET radioactive%3:00:00::", senses.get(1));

+    assertEquals("Check preposition", "WSDHELPER to", senses.get(2));

+    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3));

   }

 

   /*

@@ -137,10 +138,10 @@
    */

   @Test

   public void testAllWordsDisambiguation() {

-    List<String[]> senses = mfs.disambiguate(sentence3, tags3, lemmas3);

+    List<String> senses = mfs.disambiguate(sentence3, tags3, lemmas3);

 

     assertEquals("Check number of returned words", 15, senses.size());

     assertEquals("Check preposition", "WSDHELPER personal pronoun",

-        senses.get(6)[0]);

+        senses.get(6));

   }

 }
\ No newline at end of file
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCEvaluatorTest.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCEvaluatorTest.java
index c9723fa..f46a58b 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCEvaluatorTest.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCEvaluatorTest.java
@@ -19,11 +19,15 @@
 

 package opennlp.tools.disambiguator;

 

+import java.io.IOException;

 import java.util.ArrayList;

 

 import opennlp.tools.disambiguator.datareader.SensevalReader;

+import opennlp.tools.disambiguator.oscc.OSCCFactory;

 import opennlp.tools.disambiguator.oscc.OSCCME;

+import opennlp.tools.disambiguator.oscc.OSCCModel;

 import opennlp.tools.disambiguator.oscc.OSCCParameters;

+import opennlp.tools.util.TrainingParameters;

 

 import org.junit.Test;

 

@@ -39,28 +43,41 @@
     

     // TODO write unit test

     String modelsDir = "src\\test\\resources\\models\\";

+    String trainingDataDirectory = "src\\test\\resources\\supervised\\models\\";

     WSDHelper.loadTokenizer(modelsDir + "en-token.bin");

     WSDHelper.loadLemmatizer(modelsDir + "en-lemmatizer.dict");

     WSDHelper.loadTagger(modelsDir + "en-pos-maxent.bin");

 

     OSCCParameters OSCCParams = new OSCCParameters("");

+    OSCCParams.setTrainingDataDirectory(trainingDataDirectory);

     OSCCME oscc = new OSCCME(OSCCParams);

-

+    OSCCModel model = null;

     ArrayList<String> words = seReader.getSensevalWords();

 

     for (String word : words) {

-      WSDEvaluator evaluator = new WSDEvaluator(oscc);

-

       // don't take verbs because they are not from WordNet

       if (!word.split("\\.")[1].equals("v")) {

-

+      try {

+        model = OSCCME.train("en", seReader.getSensevalDataStream(word), new TrainingParameters(), OSCCParams,

+            new OSCCFactory());

+        model.writeModel(OSCCParams.getTrainingDataDirectory() + word);

+        oscc = new OSCCME(model, OSCCParams);

+        

+      } catch (IOException e) {

+        e.printStackTrace();

+        WSDHelper.print("skipped sample");

+      }

+      

+      WSDEvaluator evaluator = new WSDEvaluator(oscc);

         ArrayList<WSDSample> instances = seReader.getSensevalData(word);

         if (instances != null) {

           WSDHelper.print("------------------" + word + "------------------");

           for (WSDSample instance : instances) {

             if (instance.getSenseIDs() != null

-                && !instance.getSenseIDs().get(0).equals("null")) {

+                && !instance.getSenseIDs()[0].equals("null")) {

               evaluator.evaluateSample(instance);

+            }else{

+              WSDHelper.print("skipped sample");

             }

           }

           WSDHelper.print(evaluator.toString());

diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCMETester.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCMETester.java
index d6f55a6..63fb07d 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCMETester.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/OSCCMETester.java
@@ -156,9 +156,8 @@
    */

   @Test

   public void testOneWordDisambiguation() {

-    String[] senses = oscc.disambiguate(sentence1, tags1, lemmas1, 8);

-

-    assertEquals("Check number of senses", 1, senses.length);

+    String sense = oscc.disambiguate(sentence1, tags1, lemmas1, 8);

+    assertEquals("Check 'please' sense ID", "WORDNET please%2:37:00::", sense);

   }

 

   /*

@@ -169,13 +168,16 @@
   @Test

   public void testWordSpanDisambiguation() {

     Span span = new Span(3, 7);

-    List<String[]> senses = oscc.disambiguate(sentence2, tags2, lemmas2, span);

+    List<String> senses = oscc.disambiguate(sentence2, tags2, lemmas2, span);

+

 

     assertEquals("Check number of returned words", 5, senses.size());

-    assertEquals("Check number of senses", 1, senses.get(0).length);

-    assertEquals("Check monosemous word", 1, senses.get(1).length);

-    assertEquals("Check preposition", "WSDHELPER to", senses.get(2)[0]);

-    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3)[0]);

+    assertEquals("Check 'highly' sense ID", "WORDNET highly%4:02:01::",

+        senses.get(0));

+    assertEquals("Check 'radioactive' sense ID",

+        "WORDNET radioactive%3:00:00::", senses.get(1));

+    assertEquals("Check preposition", "WSDHELPER to", senses.get(2));

+    assertEquals("Check determiner", "WSDHELPER determiner", senses.get(3));

   }

 

   /*

@@ -183,11 +185,11 @@
    */

   @Test

   public void testAllWordsDisambiguation() {

-    List<String[]> senses = oscc.disambiguate(sentence3, tags3, lemmas3);

+    List<String> senses = oscc.disambiguate(sentence3, tags3, lemmas3);

 

     assertEquals("Check number of returned words", 15, senses.size());

     assertEquals("Check preposition", "WSDHELPER personal pronoun",

-        senses.get(6)[0]);

+        senses.get(6));

   }

 

 }
\ No newline at end of file
diff --git a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/Tester.java b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/Tester.java
index d657f56..16172f8 100644
--- a/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/Tester.java
+++ b/opennlp-wsd/src/test/java/opennlp/tools/disambiguator/Tester.java
@@ -29,7 +29,7 @@
     String[] lemmas3 = tempLemmas3.toArray(new String[tempLemmas3.size()]);
 
     // output
-    List<String[]> senses3 = ims.disambiguate(sentence3, tags3, lemmas3);
+    List<String> senses3 = ims.disambiguate(sentence3, tags3, lemmas3);
     for (int i = 0; i < sentence3.length; i++) {
       System.out.print(sentence3[i] + " : ");
       WSDHelper.printResults(ims, senses3.get(i));