首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取word与JWI的同义词

获取word与JWI的同义词
EN

Stack Overflow用户
提问于 2014-08-16 19:47:46
回答 2查看 1.9K关注 0票数 2

为了找到一个单词的同义词,我有以下代码。有一个问题与以下源代码;因为文字来自用户,我不知道它的POS类型。因此,如果我不知道一个单词的词性类型,我如何找到它的IIndexWord?

代码语言:javascript
复制
IIndexWord idxWord = dict . getIndexWord ("dog", POS. NOUN );
IWordID wordID = idxWord . getWordIDs ().get (0) ; // 1st meaning
IWord word = dict . getWord ( wordID );
ISynset synset = word . getSynset ();

for( IWord w : synset . getWords ())
 System .out . println (w. getLemma ());

我的方法的签名如下所示;

代码语言:javascript
复制
 void synonym(Strng word)

我将在字符串类型中使用word代替"dog“word,但在运行时,我不知道它的POS类型。

我还有第二个问题,在得到一个单词的同义词之前,我想检查它是否是英语单词,但JWI没有像isEnglish()或isInDictionary()这样的方法。如何检查一个单词是否为英语,以避免查找非英语单词的同义词?(最终,提高性能)

EN

回答 2

Stack Overflow用户

发布于 2017-03-30 15:13:26

你可以对所有的POS值使用一个简单的循环:

代码语言:javascript
复制
Set<String> lexicon = new HashSet<>();

for (POS p : POS.values()) {
    IIndexWord idxWord = dict.getIndexWord("name", p);
    if (idxWord != null) {
        System.out.println("\t : " + idxWord.getWordIDs().size());
        IWordID wordID = idxWord.getWordIDs().get(0);
        IWord word = dict.getWord(wordID);
        ISynset synset = word.getSynset();
        System.out.print(synset.getWords().size());
        for (IWord w : synset.getWords()) {
            lexicon.add(w.getLemma());
        }

    }
}

for (String s : lexicon) {
    System.out.println("wordnet lexicon : " + s);
}
票数 2
EN

Stack Overflow用户

发布于 2014-08-18 21:28:25

让我们考虑一下这个问题。如果用户想知道像“bark”这样的词的同义词,那可以是名词也可以是动词,你实际上需要向他展示所有的结果。因此,使用所有POS-E搜索IIndexWord将是正确的。

如果你尝试了所有的词性后都找不到一个特定的词,那么你可以告诉用户这个词不存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25339856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档