0

我正在使用 wordnet 来计算两个单词之间的相似度。我正在使用edu.mit.jwi_2.1.4.jaredu.sussex.nlp.jws.beta.11.jar但是当我通过 resnik 测量计算“苹果”和“香蕉”这两个词时,它是 8,4。为什么大于1?



    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");
         }
}


4

1 回答 1

1

引用NLTK 文档

Resnik Similarity:返回一个分数,表示两个词义的相似程度,基于 Least Common Subsumer(最具体的祖先节点)的信息内容 (IC)。请注意,对于使用信息内容的任何相似性度量,结果取决于用于生成信息内容的语料库以及信息内容创建方式的细节。

我不知道如何在 JWS 中设置信息内容。在 NLTK 中,您可以使用来自 Brown Corpus 和 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

有关详细信息,另请参阅本文

于 2012-10-19T08:01:54.263 回答