为了找到一个单词的同义词,我有以下代码。有一个问题与以下源代码;因为文字来自用户,我不知道它的POS类型。因此,如果我不知道一个单词的词性类型,我如何找到它的IIndexWord?
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 ());我的方法的签名如下所示;
void synonym(Strng word)我将在字符串类型中使用word代替"dog“word,但在运行时,我不知道它的POS类型。
我还有第二个问题,在得到一个单词的同义词之前,我想检查它是否是英语单词,但JWI没有像isEnglish()或isInDictionary()这样的方法。如何检查一个单词是否为英语,以避免查找非英语单词的同义词?(最终,提高性能)
发布于 2017-03-30 15:13:26
你可以对所有的POS值使用一个简单的循环:
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);
}发布于 2014-08-18 21:28:25
让我们考虑一下这个问题。如果用户想知道像“bark”这样的词的同义词,那可以是名词也可以是动词,你实际上需要向他展示所有的结果。因此,使用所有POS-E搜索IIndexWord将是正确的。
如果你尝试了所有的词性后都找不到一个特定的词,那么你可以告诉用户这个词不存在。
https://stackoverflow.com/questions/25339856
复制相似问题