0

wordnet を使用して、2 つの単語間の類似度の測定値を計算しています。andを使っ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: 最小共通サブシューマー (最も具体的な祖先ノード) の情報コンテンツ (IC) に基づいて、2 つの単語の意味がどの程度類似しているかを示すスコアを返します。情報コンテンツを使用する類似性測定の結果は、情報コンテンツの生成に使用されたコーパスと、情報コンテンツの作成方法の詳細に依存することに注意してください。

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

詳細については、この論文も参照してください。

于 2012-10-19T08:01:54.263 に答える