package edu.isistan.uima.unified.algorithms.similarity;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;
import net.didion.jwnl.JWNL;
import net.didion.jwnl.data.IndexWord;
import net.didion.jwnl.data.POS;
import net.didion.jwnl.dictionary.Dictionary;
/**
* A simple test of this WordNet similarity library.
* @author Mark A. Greenwood
*/
public class Test
{
@SuppressWarnings("unused")
public static void main(String[] args) throws Exception
{
JWNL.initialize(new FileInputStream("D:\\Libraries\\jwnl\\jwnl-properties.xml"));
Map<String,String> params1 = new HashMap<String,String>();
params1.put("simType","org.isistan.uima.wsd.similarity.JCn");
params1.put("infocontent","file:D:/Libraries/similarity/ic-bnc-resnik-add1.dat");
params1.put("mapping","file:D:/Libraries/similarity/domain_independent.txt");
SimilarityMeasure sim1 = SimilarityMeasure.newInstance(params1);
Map<String,String> params2 = new HashMap<String,String>();
params2.put("simType","org.isistan.uima.wsd.similarity.Lin");
params2.put("infocontent","file:D:/Libraries/similarity/ic-bnc-resnik-add1.dat");
params2.put("mapping","file:D:/Libraries/similarity/domain_independent.txt");
SimilarityMeasure sim2 = SimilarityMeasure.newInstance(params2);
Map<String,String> params3 = new HashMap<String,String>();
params3.put("simType","org.isistan.uima.wsd.similarity.Lesk");
SimilarityMeasure sim3 = SimilarityMeasure.newInstance(params3);
Map<String,String> params4 = new HashMap<String,String>();
params4.put("simType","org.isistan.uima.wsd.similarity.ELesk");
SimilarityMeasure sim4 = SimilarityMeasure.newInstance(params4);
Map<String,String> params5 = new HashMap<String,String>();
params5.put("simType","org.isistan.uima.wsd.similarity.Rago");
SimilarityMeasure sim5 = SimilarityMeasure.newInstance(params5);
//Get two words from WordNet
Dictionary dict = Dictionary.getInstance();
//IndexWord word1 = dict.getIndexWord(POS.NOUN, "dog");
//IndexWord word2 = dict.getIndexWord(POS.NOUN,"cat");
IndexWord word1 = dict.getIndexWord(POS.VERB, "modify");
IndexWord word2 = dict.getIndexWord(POS.VERB,"kill");
calculate(word1, word2, sim1);
//calculate(word1, word2, sim2);
calculate(word1, word2, sim3);
//calculate(word1, word2, sim4);
calculate(word1, word2, sim5);
}
private static void calculate(IndexWord word1, IndexWord word2, SimilarityMeasure sim) throws Exception {
double similarity = 0, distance = 0;
//get the similarity between the first senses of each word
similarity = sim.getSimilarity(word1.getSense(1), word2.getSense(1));
distance = 1 / similarity;
System.out.println(sim.getClass().getName());
System.out.println(word1.getLemma()+"#"+word1.getPOS().getKey()+"#1 " + word2.getLemma()+"#"+word2.getPOS().getKey()+"#1 " + similarity + " - " + distance);
}
}