1

extjwnlライブラリを使用してWordnetに新しいシンセットを追加したかったのです。これを行うために、次のサンプルコードを作成しました。保存後、新しい同義語と単語が追加されていることを確認しましたが、作成されたセマンティックポインター(下位概念の関係を識別する)は保存されていません。ポインタを辞書に関連付けるにはどうすればよいですか?

        JWNL.initialize(new FileInputStream(propsFile));
        Dictionary dictionary = Dictionary.getInstance();
        Iterator<Synset> synsets = dictionary.getSynsetIterator(POS.NOUN);

        dictionary.edit();
        Synset newSynset = new Synset(dictionary, POS.NOUN);
        IndexWord newWord = new IndexWord(dictionary, "hublabooboo", POS.NOUN, newSynset);
        Synset topmostSynset = synsets.next();
        Pointer newPointer = new Pointer(PointerType.HYPONYM, topmostSynset, newSynset);
        dictionary.save();
4

1 に答える 1

2

シンセットのポインターのリストにポインターを追加することをお勧めします。

  topmostSynset.getPointers().add(newPointer);

ポインターが対称である場合(hypernymのように、ミラーが1つあるhyponym)、dictionary.getManageSymmetricPointers()の場合、逆ポインター(hyponymなど)が自動的に追加されます。

ちなみに、このコードではSynset topmostSynset = synsets.next(); シンセットイテレータから最初に返されたシンセットが「エンティティ」のものであると推測しているように見えます。しかし、これはどこでも保証されていません。これは辞書に依存します。ファイルベースでは機能する可能性がありますが、マップベースでは機能しない可能性が高く、データベースベースでは予測できません。

出典:SourceForge

于 2012-09-18T15:55:16.023 に答える