/**
* Java WordNet Library (JWNL)
* See the documentation for copyright information.
*
* @version 1.1
*/
package net.didion.jwnl.utilities;
import net.didion.jwnl.JWNL;
import net.didion.jwnl.JWNLException;
import net.didion.jwnl.data.IndexWord;
import net.didion.jwnl.data.POS;
import net.didion.jwnl.data.PointerType;
import net.didion.jwnl.data.PointerUtils;
import net.didion.jwnl.data.list.PointerTargetNodeList;
import net.didion.jwnl.data.list.PointerTargetTree;
import net.didion.jwnl.data.relationship.AsymmetricRelationship;
import net.didion.jwnl.data.relationship.Relationship;
import net.didion.jwnl.data.relationship.RelationshipFinder;
import net.didion.jwnl.data.relationship.RelationshipList;
import net.didion.jwnl.dictionary.Dictionary;
import java.io.FileInputStream;
import java.util.Iterator;
/** A class to demonstrate the functionality of the JWNL package. */
public class Examples {
private static final String USAGE = "java Examples <properties file>";
public static void main(String[] args) {
if (args.length != 1) {
System.out.println(USAGE);
System.exit(-1);
}
String propsFile = args[0];
try {
// initialize JWNL (this must be done before JWNL can be used)
JWNL.initialize(new FileInputStream(propsFile));
new Examples().go();
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
}
}
private IndexWord ACCOMPLISH;
private IndexWord DOG;
private IndexWord CAT;
private IndexWord FUNNY;
private IndexWord DROLL;
private String MORPH_PHRASE = "running-away";
public Examples() throws JWNLException {
ACCOMPLISH = Dictionary.getInstance().getIndexWord(POS.VERB, "accomplish");
DOG = Dictionary.getInstance().getIndexWord(POS.NOUN, "dog");
CAT = Dictionary.getInstance().lookupIndexWord(POS.NOUN, "cat");
FUNNY = Dictionary.getInstance().lookupIndexWord(POS.ADJECTIVE, "funny");
DROLL = Dictionary.getInstance().lookupIndexWord(POS.ADJECTIVE, "droll");
}
public void go() throws JWNLException {
demonstrateMorphologicalAnalysis(MORPH_PHRASE);
demonstrateListOperation(ACCOMPLISH);
demonstrateTreeOperation(DOG);
demonstrateAsymmetricRelationshipOperation(DOG, CAT);
demonstrateSymmetricRelationshipOperation(FUNNY, DROLL);
}
private void demonstrateMorphologicalAnalysis(String phrase) throws JWNLException {
// "running-away" is kind of a hard case because it involves
// two words that are joined by a hyphen, and one of the words
// is not stemmed. So we have to both remove the hyphen and stem
// "running" before we get to an entry that is in WordNet
System.out.println("Base form for \"" + phrase + "\": " +
Dictionary.getInstance().lookupIndexWord(POS.VERB, phrase));
}
private void demonstrateListOperation(IndexWord word) throws JWNLException {
// Get all of the hypernyms (parents) of the first sense of <var>word</var>
PointerTargetNodeList hypernyms = PointerUtils.getInstance().getDirectHypernyms(word.getSense(1));
System.out.println("Direct hypernyms of \"" + word.getLemma() + "\":");
hypernyms.print();
}
private void demonstrateTreeOperation(IndexWord word) throws JWNLException {
// Get all the hyponyms (children) of the first sense of <var>word</var>
PointerTargetTree hyponyms = PointerUtils.getInstance().getHyponymTree(word.getSense(1));
System.out.println("Hyponyms of \"" + word.getLemma() + "\":");
hyponyms.print();
}
private void demonstrateAsymmetricRelationshipOperation(IndexWord start, IndexWord end) throws JWNLException {
// Try to find a relationship between the first sense of <var>start</var> and the first sense of <var>end</var>
RelationshipList list = RelationshipFinder.getInstance().findRelationships(start.getSense(1), end.getSense(1), PointerType.HYPERNYM);
System.out.println("Hypernym relationship between \"" + start.getLemma() + "\" and \"" + end.getLemma() + "\":");
for (Iterator itr = list.iterator(); itr.hasNext();) {
((Relationship) itr.next()).getNodeList().print();
}
System.out.println("Common Parent Index: " + ((AsymmetricRelationship) list.get(0)).getCommonParentIndex());
System.out.println("Depth: " + ((Relationship) list.get(0)).getDepth());
}
private void demonstrateSymmetricRelationshipOperation(IndexWord start, IndexWord end) throws JWNLException {
// find all synonyms that <var>start</var> and <var>end</var> have in common
RelationshipList list = RelationshipFinder.getInstance().findRelationships(start.getSense(1), end.getSense(1), PointerType.SIMILAR_TO);
System.out.println("Synonym relationship between \"" + start.getLemma() + "\" and \"" + end.getLemma() + "\":");
for (Iterator itr = list.iterator(); itr.hasNext();) {
((Relationship) itr.next()).getNodeList().print();
}
System.out.println("Depth: " + ((Relationship) list.get(0)).getDepth());
}
}