2012-10-19 72 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详情请参阅。

相关问题