Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取单词与JWI的同义词_Java_Wordnet_Jwi - Fatal编程技术网

Java 获取单词与JWI的同义词

Java 获取单词与JWI的同义词,java,wordnet,jwi,Java,Wordnet,Jwi,要查找单词的同义词,我有以下代码。下面的源代码有一个问题;因为这个词来自用户,所以我不知道它的POS类型。因此,如果我不知道一个单词的词性类型,我如何才能找到它的IIndexWord IIndexWord idxWord = dict . getIndexWord ("dog", POS. NOUN ); IWordID wordID = idxWord . getWordIDs ().get (0) ; // 1st meaning IWord word = dict . getWord (

要查找单词的同义词,我有以下代码。下面的源代码有一个问题;因为这个词来自用户,所以我不知道它的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)
我打算用字符串类型中的单词代替“dog”单词,但在运行时,我不知道它的词性类型


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

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


如果在尝试所有POS后找不到特定单词,则可以告诉用户该单词不存在。

您可以对所有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);
}
Set lexicon=new HashSet();
对于(位置p:位置值()){
IIndexWord idxWord=dict.getIndexWord(“名称”,p);
if(idxWord!=null){
System.out.println(“\t:+idxWord.getWordIDs().size());
IWordID wordID=idxWord.getwordid().get(0);
IWord=dict.getWord(wordID);
ISynset synset=word.getSynset();
System.out.print(synset.getWords().size());
for(IWord w:synset.getWords()){
add(w.getLemma());
}
}
}
for(字符串s:词典){
System.out.println(“wordnet词典:+s”);
}

这只返回一个同义词