Author: joern
Date: Thu Aug  6 09:49:29 2015
New Revision: 1694432

URL: http://svn.apache.org/r1694432
Log:
OPENNLP-802 

fix docs
cleaned the parameters
added static access to methods reused in other implementations

Thanks to Anthony Beylerian  for providing a patch.

Modified:
    
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/WSDParameters.java
    
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFS.java
    
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFSParameters.java

Modified: 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/WSDParameters.java
URL: 
http://svn.apache.org/viewvc/opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/WSDParameters.java?rev=1694432&r1=1694431&r2=1694432&view=diff
==============================================================================
--- 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/WSDParameters.java
 (original)
+++ 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/WSDParameters.java
 Thu Aug  6 09:49:29 2015
@@ -26,6 +26,10 @@ package opennlp.tools.disambiguator;
 public abstract class WSDParameters {
   
   protected boolean isCoarseSense;
+  
+  public static enum Source {
+    WORDNET
+  }
 
   /**
    * @return if the disambiguation type is coarse grained or fine grained

Modified: 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFS.java
URL: 
http://svn.apache.org/viewvc/opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFS.java?rev=1694432&r1=1694431&r2=1694432&view=diff
==============================================================================
--- 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFS.java
 (original)
+++ 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFS.java
 Thu Aug  6 09:49:29 2015
@@ -31,35 +31,61 @@ import opennlp.tools.disambiguator.WSDPa
 import opennlp.tools.disambiguator.WSDisambiguator;
 import opennlp.tools.disambiguator.WordPOS;
 import opennlp.tools.disambiguator.WordToDisambiguate;
+import opennlp.tools.disambiguator.lesk.LeskParameters;
+import opennlp.tools.disambiguator.lesk.WTDLesk;
 import opennlp.tools.util.Span;
 
 /**
  * Implementation of the <b>Most Frequent Sense</b> baseline approach. This
- * approach returns the first sense retreived in WordNet which is supposed to 
be
- * the most frequent sense:
- * <ul>
- * <li>PoS-tags of the surrounding words</li>
- * <li>Local collocations</li>
- * <li>Surrounding words</li>
- * </ul>
- * check {@link https://www.comp.nus.edu.sg/~nght/pubs/ims.pdf} for details
- * about this approach
+ * approach returns the senses in order of frequency in WordNet. The first 
sense
+ * is the most frequent.
  */
 public class MFS implements WSDisambiguator {
 
-  public MFS(WSDParameters parameters) {
-    super();
+  public MFSParameters parameters;
+
+  public MFS(MFSParameters parameters) {
     this.parameters = parameters;
   }
 
   public MFS() {
-    super();
     this.parameters = new MFSParameters();
   }
 
-  public WSDParameters parameters;
+  /*
+   * @return the most frequent senses from wordnet
+   */
+  public static String getMostFrequentSense(
+      WordToDisambiguate wordToDisambiguate) {
+
+    String word = wordToDisambiguate.getRawWord().toLowerCase();
+    POS pos = Constants.getPOS(wordToDisambiguate.getPosTag());
+    String senseKey = null;
 
-  private String[] getMostFrequentSense(WordToDisambiguate wordToDisambiguate) 
{
+    if (pos != null) {
+
+      WordPOS wordPOS = new WordPOS(word, pos);
+
+      ArrayList<Synset> synsets = wordPOS.getSynsets();
+
+      for (Word wd : synsets.get(0).getWords()) {
+        if (wd.getLemma().equals(
+            wordToDisambiguate.getRawWord().split("\\.")[0])) {
+          try {
+            senseKey = wd.getSenseKey();
+            break;
+          } catch (JWNLException e) {
+            e.printStackTrace();
+          }
+          break;
+        }
+      }
+    }
+    return senseKey;
+  }
+
+  public static String[] getMostFrequentSenses(
+      WordToDisambiguate wordToDisambiguate) {
 
     String word = wordToDisambiguate.getRawWord().toLowerCase();
     POS pos = Constants.getPOS(wordToDisambiguate.getPosTag());
@@ -84,7 +110,7 @@ public class MFS implements WSDisambigua
             } catch (JWNLException e) {
               e.printStackTrace();
             }
-            senses[i] = "WordNet " + senseKey;
+            senses[i] = "wordnet " + senseKey;
             break;
           }
         }
@@ -166,7 +192,15 @@ public class MFS implements WSDisambigua
 
   @Override
   public void setParams(WSDParameters params) throws InvalidParameterException 
{
-    this.parameters = params;
+    if (params == null) {
+      this.parameters = new MFSParameters();
+    } else {
+      if (params.isValid()) {
+        this.parameters = (MFSParameters) params;
+      } else {
+        throw new InvalidParameterException("wrong parameters");
+      }
+    }
 
   }
 
@@ -177,7 +211,7 @@ public class MFS implements WSDisambigua
     WordToDisambiguate wtd = new WordToDisambiguate(tokenizedContext,
         ambiguousTokenIndex);
     // System.out.println(wtd.getPosTags()[ambiguousTokenIndex]);
-    return getMostFrequentSense(wtd);
+    return getMostFrequentSenses(wtd);
   }
 
   @Override

Modified: 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFSParameters.java
URL: 
http://svn.apache.org/viewvc/opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFSParameters.java?rev=1694432&r1=1694431&r2=1694432&view=diff
==============================================================================
--- 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFSParameters.java
 (original)
+++ 
opennlp/sandbox/opennlp-wsd/src/main/java/opennlp/tools/disambiguator/mfs/MFSParameters.java
 Thu Aug  6 09:49:29 2015
@@ -19,26 +19,16 @@
 
 package opennlp.tools.disambiguator.mfs;
 
+import org.apache.commons.lang3.EnumUtils;
+
 import opennlp.tools.disambiguator.WSDParameters;
 
 public class MFSParameters extends WSDParameters {
 
-  public MFSParameters(){
+  public MFSParameters() {
     this.isCoarseSense = false;
     this.source = Source.WORDNET;
   }
-  
-  public static enum Source {
-    WORDNET(1, "wordnet");
-
-    public int code;
-    public String src;
-
-    private Source(int code, String src) {
-      this.code = code;
-      this.src = src;
-    }
-  }
 
   protected Source source;
 
@@ -52,10 +42,7 @@ public class MFSParameters extends WSDPa
 
   @Override
   public boolean isValid() {
-    if (this.source.code == 1) {
-      return true;
-    }
-    return false;
+    return EnumUtils.isValidEnum(Source.class, source.name());
   }
 
 }


Reply via email to