getAllSynonyms方法如何在正确的单词网络包中运行?

时间:2013-12-30 12:13:21

标签: java wordnet

有人可以向我解释我在下面的代码中使用的'getAllSynonyms'方法是如何工作的吗?每次我运行它都会得到不同的结果。有时单词根本不是同义词!调用方法时中间参数的意义是什么?链接到解释word net方法的任何手册?抱歉,如果我违反了帖子礼仪:)。

import rita.wordnet.*;
import java.lang.reflect.Array;
import java.util.*;
public class Blah 
{


RiWordnet wordnet;

String word;

void setup() 
{

  wordnet = new RiWordnet();
  word = "car";
    String[] poss = wordnet.getPos(word);
    //System.out.println(poss)
    for (int j = 0; j < poss.length; j++) {
        System.out.println("\n\nSynonyms for " + word + " (pos: " + poss[j] + ")");
        String[] synonyms = wordnet.getAllSynonyms(word,poss[0],10);
        Arrays.sort(synonyms);
        for (int i = 0; i < 5; i++) {
            System.out.println(synonyms[i]);
        }
    }
}
public static void main(String args[])
{
    Blah b=new Blah();
    b.setup();

}


}

3 个答案:

答案 0 :(得分:1)

文档在这里(只需单击右栏中的方法名称):

http://www.rednoise.org/rita/wordnet/documentation/

但我不得不承认它不是很详细。

当我跑这个时,我反复得到   poss = [n]   同义词= [芯片,二极管,微芯片,热敏电阻]

如果不这样做,您可能需要检查类路径中是否有多个版本的WordNet JAR(单词列表位于名为rita/wordnet/wdict.dat的文件夹中的Jar内)

您可以使用Arrays.toString()轻松打印数组内容以进行调试,而无需每次都使用for循环。

在这种情况下,中间参数('n')是单词class(“a”=形容词,“n”=名词,“r”=副词,“v”=动词),因为有些单词(如“good”) “)可能存在于多个类中,每个类都有单独的同义词。

答案 1 :(得分:0)

也许this链接对于查看此问题且需要一些材料的其他人有用。

答案 2 :(得分:0)

在当前版本的RiTa中,您可以调用randomizeResults(false);来禁用此行为(尽管您现在需要单独下载WordNet本身):

import rita.*;
import java.util.*;

public static void main(String[] args)
{
  RiWordNet rw = new RiWordNet("/WordNet-3.1"); // point to local installation
  rw.randomizeResults(false);                   // don't randomize results
  String[] s = rw.getAllSynonyms("car", "n");
  System.out.println(Arrays.asList(s));
}