有人可以向我解释我在下面的代码中使用的'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();
}
}
答案 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));
}