2011-05-12 52 views
7

我需要在基於Java的應用程序中使用Wordnet。 我想:Java中的Wordnet相似度:JAWS,JWNL或Java WN ::相似度?

  • 搜索同義詞集

    同義詞集之間
  • 查找相似/關聯

我的應用程序使用RDF圖,我知道有SPARQL端點與WORDNET,但我猜最好有一個本地數據集副本,因爲它不太大。

我發現下面的罐子:

你會推薦什麼我的應用程序?

是否可以通過一些綁定使用java應用程序中的Perl庫?

謝謝! Mulone

回答

12

我使用JAWS進行普通的wordnet工作,因爲它很容易使用。不過,對於相似性指標,我使用位於here的庫。您還需要下載this文件夾,其中包含預處理的WordNet和語料庫數據,以便其正常工作。該代碼可以使用這樣的,假設你放入該文件夾中的另一個名爲「LIB」在項目文件夾:

JWS ws = new JWS("./lib", "3.0"); 
Resnik res = ws.getResnik(); 
TreeMap<String, Double> scores1 = res.res(word1, word2, partOfSpeech); 
for(Entry<String, Double> e: scores1.entrySet()) 
    System.out.println(e.getKey() + "\t" + e.getValue()); 
System.out.println("\nhighest score\t=\t" + res.max(word1, word2, partOfSpeech) + "\n\n\n"); 

這將打印類似於以下,顯示出代表的同義集的每一個可能的組合之間的相似性得分由詞進行比較:

hobby#n#1,gardening#n#1 2.6043996588901104 
hobby#n#2,gardening#n#1 -0.0 
hobby#n#3,gardening#n#1 -0.0 
highest score = 2.6043996588901104 

也有允許您指定的其中任何一個感方法/兩個詞:res(String word1, int senseNum1, String word2, partOfSpeech)等不幸的是,在原始文件是沒有JavaDoc的,所以你需要手動檢查它。來源可以下載here

可用的算法是:

JWSRandom(ws.getDictionary(), true, 16.0);//random number for baseline 
Resnik res = ws.getResnik(); 
LeacockAndChodorowlch = ws.getLeacockAndChodorow(); 
AdaptedLesk adLesk = ws.getAdaptedLesk(); 
AdaptedLeskTanimoto alt = ws.getAdaptedLeskTanimoto(); 
AdaptedLeskTanimotoNoHyponyms altnh = ws.getAdaptedLeskTanimotoNoHyponyms(); 
HirstAndStOnge hso = ws.getHirstAndStOnge(); 
JiangAndConrath jcn = ws.getJiangAndConrath(); 
Lin lin = ws.getLin(); 
WuAndPalmer wup = ws.getWuAndPalmer(); 

此外,它需要你有JAR文件MIT的JWI

+0

有一點需要注意。如果你從http://www.cogs.susx.ac.uk/users/drh21/獲得軟件包,我會得到beta 11.01而不是11.02。 – 2011-08-06 01:17:57

+0

@mj_:爲什麼11.01而不是11.02? – damned 2013-02-12 12:55:44

+0

上面的代碼是否給出了不同synsets之間的相似性? – Noor 2013-03-07 20:07:22

0

我不確定JAWS或JWNL是否提供了計算synsets之間相似性的方法,但我已經嘗試過用於搜索synsets,並且我發現JAWS更易於使用。具體來說,簡單:

// Specifying the Database Directory 
    System.setProperty("wordnet.database.dir", "C:/WordNet/2.1/dict/"); 

比JWNL的file_properties.xml要求更容易理解。

1

有功能JAWS找到類似的詞形等 下面是詳細介紹:

public AdjectiveSynset [] getSimilar()拋出WordNetException,這裏是你可以檢出的鏈接: 這個鏈接它包含細節th在你可以使用。