有人知道如何使用按估计频率排序的JWNL(Java Wordnet Library)来获取单词的同义词吗?我知道这可以通过某种方式完成,因为Wordnet的应用程序可以做到这一点。 (我不知道它是否重要,但我使用的是Wordnet 2.1)
以下是我如何获取同义词的代码,任何人都可以告诉我应该添加的内容...... (完全不同的做法也受到欢迎!)
ArrayList<String> synonyms=new ArrayList<String>();
System.setProperty("wordnet.database.dir", filepath);
String wordForm = "make";
Synset[] synsets = database.getSynsets(wordForm,SynsetType.VERB);
if (synsets.length > 0) {
for (int i = 0; i < synsets.length; i++) {
String[] wordForms = synsets[i].getWordForms();
for (int j = 0; j < wordForms.length; j++) {
if(!synonyms.contains(wordForms[j])){
synonyms.add(wordForms[j]); }
}
}
}
答案 0 :(得分:10)
由于没有人回答,我想一定有更多的人想知道同样的想法而不知道答案。
好吧,我发现有一个函数Synset.getTagCount(String),它返回与单词(String)相关的每个synset的估计频率值。因此,我所要做的就是根据这一点对ArrayList进行排序。
但是事实证明,默认情况下,synsets被返回排序,所以我使用我在问题中编写的代码得到的结果已经按估计频率排序了!
我希望这将有助于未来的某人:)