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());
}
}