Package gannuWSD.algorithms

Source Code of gannuWSD.algorithms.SimplifiedLesk

package gannuWSD.algorithms;

import gannuNLP.data.AmbiguousWord;
import gannuNLP.data.Input;
import gannuNLP.data.Sense;
import gannuNLP.overlapmeasures.OverlapMeasure;
import gannuNLP.overlapmeasures.Word;
import gannuWSD.testing.Decision;

import java.util.ArrayList;



/**
* Simplified lesk algorithm as proposed by Kilgarriff and Rosenzweig
* in "Framework and Results for English SENSEVAL".
* You can specify the OverlapMeasure by setting the parameter "scoring:gannu.overlapmeasures.yourSelectedClassName;".
@author Francisco Viveros-Jiménez
*
*/
public class SimplifiedLesk extends WSDAlgorithm {

  /**
   * OverlapMeasure for calculating the overlaps.
   */
  OverlapMeasure scoring;
  public SimplifiedLesk()
  {
    super();
    this.name="SimplifiedLesk";
  }
   @Override
  public Decision disambiguate(AmbiguousWord target, ArrayList<AmbiguousWord> window) throws Exception
  {
      System.out.print(".");
    ArrayList<Sense> senses=target.getSenses();
    Decision decision=new Decision(target,window);
    int i;
    for(i=0;i<senses.size();i++)
    {
      ArrayList<String> dwords=new ArrayList<String>();
      double w=0.0;
      for(AmbiguousWord winWord:window)
      {
        if(winWord.getSenses().size()>0)
        {
          for(Sense s:winWord.getSenses())
          {
            w+=this.scoring.calculateOverlap(senses.get(i).getBagOfWords(), s.getSynonyms(), dwords);
          }
        }
        else
        {
          if(senses.get(i).getBagOfWords().contains(winWord.getLemma()))
          {
            w+=1.0;
            dwords.add(winWord.getLemma());
          }
        }
 
      }
      dwords.trimToSize();
        decision.setSense(i, w, dwords);     
    }
    decision.calculateAnswer();   
     return decision;
  }
   @Override
  public boolean IsUseful(AmbiguousWord target, AmbiguousWord windowWord)
      throws Exception {
       for(Sense s:target.getSenses())
         for(String word:s.getBagOfWords())
           if(word.equals(windowWord.getLemma()))
             return true;
    return false;
  }
@Override
public void init(Input document)throws Exception {
  System.out.println();
  if(this.getValue("scoring")==null)
  {
    this.scoring=(OverlapMeasure)new Word();
  }
  else
  {
    this.scoring=(OverlapMeasure)Class.forName(this.getValue("scoring")).newInstance();
  }

 
}


 

}
TOP

Related Classes of gannuWSD.algorithms.SimplifiedLesk

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.