5

ワードネットを検索して単語の同義語を取得するためにJava jwi APIを使用しています。問題は、同義語自体を見つけるための単語が 1 つしか返されないことです。私を案内してください。与えられた単語のすべての同義語のリストを取得することは可能ですか? 私のコードは次のとおりです。

  public void searcher() {
    try {

        url = new URL("file", null, path);


        dict = new Dictionary(url);
        try {
            dict.open();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "Dictionary directory does not exist\n" + ex + "\nClass:Meaning Thread", "Dictionary Not Found Error", JOptionPane.ERROR_MESSAGE);

        }

        IIndexWord idxWord = dict.getIndexWord("capacity", POS.NOUN);
        IWordID wordID = idxWord.getWordIDs().get(0);
        IWord word = dict.getWord(wordID);


        //Adding Related Words to List of Realted Words
        ISynset synset = word.getSynset();
        for (IWord w : synset.getWords()) {
            System.out.println(w.getLemma());
        }


    } catch (Exception e) {
    }

}

出力は次のとおりです。

capacity

自体!実際の同義語は次のとおりです。

  capability
  capacitance 
  content
  electrical capacitance
  mental ability...(so on)

コードで見逃したものはありますか、それとも本当の問題は何かアイデアを教えてもらえますか?

前もって感謝します

4

3 に答える 3

2

あなたが得ているのは「capacity#1」です。これは「実行または生産する能力」という意味を持ち、実際には同義語が 1 つしかありません。(PWN 検索ページをいじって、WordNet がどのように単語を synset に編成するかの感触を掴んでください。)

あなたが求めているのは、すべての synset 内のすべての同義語の結合であるように聞こえますか? を使用するかgetSenseEntryIterator()、単にループを配置して をループ カウンターidxWord.getWordIDs().get(0);に置き換えていると思います0。そのため、配列内の最初のアイテムを取得するだけではありません。

于 2014-03-23T23:33:50.490 に答える