2012-10-19 74 views
0

我使用wordnet來計算兩個單詞之間的相似性度量。我使用edu.mit.jwi_2.1.4.jaredu.sussex.nlp.jws.beta.11.jar,但是當我通過resnik測量計算單詞「apple」和「banana」時,它是8,4。爲什麼它超過1?使用wordnet進行相似性度量?



    public class test { 
    String dir = "C:/Program Files (x86)/WordNet"; 
    JWS ws = new JWS(dir,"2.1"); 
    /** 
    * @param args 
    */ 
    public void testResnikSimilarity() {  
     Resnik jcn = ws.getResnik(); 
     System.out.println("Resnik"); 
     // all senses 
     TreeMap scores1 = jcn.res("apple", "banana", "n"); // all senses 
     //TreeMap scores1 = jcn.jcn("apple", 1, "banana", "n"); 
     // fixed;all 
     //TreeMap scores1 = jcn.jcn("apple", "banana", 2, "n"); 
     // all;fixed 
     for(String s : scores1.keySet()) 
     System.out.println(s + "\t" + scores1.get(s)); 
     // specific senses 
     System.out.println("\nspecific pair\t=\t" + jcn.res("apple", 1, "banana", 
     1, "n") + "\n"); 
     // max. 
     System.out.println("\nhighest score\t=\t" + jcn.max("apple", "banana", 
     "n") + "\n\n\n"); 
     } 
} 


回答

1

要舉NLTK Documentation

雷斯尼克相似度:返回一個分值表示兩個字的相似感 是,基於信息內容最常見 Subsumer的(IC)(最具體的祖先節點)。請注意,對於使用信息內容的任何相似性度量,結果取決於用於生成信息內容的語料庫以及如何創建信息內容的細節 。

我不知道如何設置JWS中的信息內容。在NLTK你可以做如下,使用來自布朗語料庫和BNC數據:

ic = wordnet_ic.ic('ic-brown.dat') 
banana.res_similarity(apple, ic=ic) 
>>> 8.1703339116227411 
ic = wordnet_ic.ic('ic-bnc.dat') 
banana.res_similarity(apple, ic=ic) 
>>> 7.9753635531935334 

也是這個paper詳情請參閱。

相關問題