如何从Wordnet获取按其出现概率排序的同义词

时间:2010-07-13 05:16:46

标签: java nlp wordnet

我在Wordnet中搜索大量单词的同义词。我这样做的方式,当某个单词有多个同义词时,结果按字母顺序返回。我需要的是按照发生概率对它们进行排序,我只选择前1个同义词。

我使用prolog wordnet数据库和Syns2Index将其转换为Lucene类型索引以查询同义词。有没有办法以这种方式按照概率对它们进行排序,或者我应该使用另一种方法?

速度并不重要,此同义词查找不会在线完成。

2 个答案:

答案 0 :(得分:5)

万一有人偶然发现这个帖子,这就是要走的路(至少我需要的):

http://lyle.smu.edu/~tspell/jaws/doc/edu/smu/tspell/wordnet/impl/file/ReferenceSynset.html#getTagCount%28java.lang.String%29

tagCount方法为每个单词提供最可能的synset组。问题再次是具有高概率的synset可以有几个单词。但我想这是没有机会避免这个

答案 1 :(得分:0)

我认为你应该再做一步(假设速度不重要)。

从Lucene索引中,您应该构建另一个字典,其中每个单词都映射到一个小对象,该对象包含唯一的同义词,其含义具有更高的出现概率,其含义和出现概率。即,给出此代码:

class Synonym {
public:
    String name;
    double probability;
    String meaning;
}

Map<String, Synonym> m = new HashMap<String, Synonym>();

...你只需要从Lucene索引中填写它。