开发者

Getting the base form of a word using the Java Wordnet Library

开发者 https://www.devze.com 2023-02-11 19:31 出处:网络
I\'m using the Java WordNet Library (JWNL) for my project, and I need to find base form of a word before processing.

I'm using the Java WordNet Library (JWNL) for my project, and I need to find base form of a word before processing.

For example, the base form of the开发者_如何学Go word "sent" should be "send". Likewise, the base form of the word "dispatched" should be "dispatch". I have read the JWNL documentation but it confuses me. Could someone please provide me a piece of code that finds the base word?


I used JAWS as I found it better then JWNL check this code out to find base for and gloss about it

import java.io.*;
import edu.smu.tspell.wordnet.*;

/**
 * Displays word forms and definitions for synsets containing the word form
 * specified on the command line. To use this application, specify the word
 * form that you wish to view synsets for, as in the following example which
 * displays all synsets containing the word form "airplane":
 * <br>
 * java TestJAWS airplane
 */
public class start
{
    /**
     * Main entry point. The command-line arguments are concatenated together
     * (separated by spaces) and used as the word form to look up.
     */
    public static void main(String[] args)
    {
        while(true)
        {
            if (args.length == 0)
            {
                StringBuffer buffer = new StringBuffer();
                String wordForm = null;//"fast";//buffer.toString();
                System.out.print("\n");
                System.out.print("Enter your query: ");
                   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                   try {
                     wordForm = br.readLine();
                   } catch (IOException e) {
                     System.out.println("Error!");
                     System.exit(1);
                   }
                   System.out.println("Your looking for: " + wordForm);
                System.setProperty("wordnet.database.dir", "/home/dell/workspace/wordnet/WordNet-3.0/dict");
                WordNetDatabase database = WordNetDatabase.getFileInstance();
                Synset[] synsets = database.getSynsets(wordForm);
                //  Display the word forms and definitions for synsets retrieved
                if (synsets.length > 0)
                {
                    System.out.println("The following synsets contain '" +
                            wordForm + "' or a possible base form " +
                            "of that text:");
                    for (int i = 0; i < synsets.length; i++)
                    {
                        System.out.println("");
                        String[] wordForms = synsets[i].getWordForms();
                        for (int j = 0; j < wordForms.length; j++)
                        {
                            System.out.print((j > 0 ? ", " : "") +
                                    wordForms[j]);
                        }
                        System.out.println(": " + synsets[i].getDefinition());
                    }
                }
                else
                {
                    System.err.println("No synsets exist that contain " +
                            "the word form '" + wordForm + "'");
                }
            }
            else
            {
                System.err.println("You must specify " +
                        "a word form for which to retrieve synsets.");
            }
        }
    }

}


I would suggest trying using a Porter stemmer algorithm instead of wordnet, you can find implementations in most languages - including java here

This should get you what you want

0

精彩评论

暂无评论...
验证码 换一张
取 消