2012-09-16 56 views
1

我想使用extjwnl library將新的同義詞添加到Wordnet。爲了做到這一點,我寫了下面的示例代碼。保存後,我觀察到新的同義詞和單詞確實被添加,但創建的語義指針(標識了地名關係)未被保存。我如何將指針與字典關聯?使用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(); 

回答

2

我建議你添加指向指針的同義詞集的列表:

topmostSynset.getPointers().add(newPointer); 

如果指針是對稱的(如上位詞,其中有一個鏡子一個:下義詞),並dictionary.getManageSymmetricPointers (),則反向指針(例如hyponym)會自動添加。

順便說一句,通過此代碼Synset topmostSynset = synsets.next();它看起來像你推斷從synset迭代器中返回的第一個synset是「實體」之一。但是這不能保證在任何地方。這與字典有關:可能適用於基於文件的操作,但很可能不適用於基於數據庫的基於映射和不可預測的操作。

來源:SourceForge