我使用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
有一點需要注意。如果你從http://www.cogs.susx.ac.uk/users/drh21/獲得軟件包,我會得到beta 11.01而不是11.02。 – 2011-08-06 01:17:57
@mj_:爲什麼11.01而不是11.02? – damned 2013-02-12 12:55:44
上面的代碼是否給出了不同synsets之間的相似性? – Noor 2013-03-07 20:07:22