0

私は JWNL を使用しており、wordnet に従って文字列間の類似度を計算するために、次のコードを実行します。

import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

import net.didion.jwnl.JWNL;
import shef.nlp.wordnet.similarity.SimilarityInfo;
import shef.nlp.wordnet.similarity.SimilarityMeasure;

public class wordnet
{

public static void main(String[] args) throws Exception 
{
    //Initialize WordNet - this must be done before you try
    //and create a similarity measure otherwise nasty things
    //might happen!
    JWNL.initialize(new FileInputStream("test/wordnet.xml"));

    //Create a map to hold the similarity config params
    Map<String,String> params = new HashMap<String,String>();

    //the simType parameter is the class name of the measure to use
    params.put("simType","shef.nlp.wordnet.similarity.JCn");

    //this param should be the URL to an infocontent file (if required
    //by the similarity measure being loaded)
    params.put("infocontent","file:test/ic-bnc-resnik-add1.dat");

    //this param should be the URL to a mapping file if the
    //user needs to make synset mappings
    params.put("mapping","file:test/domain_independent.txt");

    //create the similarity measure
    SimilarityMeasure sim = SimilarityMeasure.newInstance(params);


    //get a similarity that involves a mapping
    SimilarityInfo d=sim.getSimilarity("english", "english");
    System.out.println(d.getSynset1());
    System.out.println(d.getSynset2());
    System.out.println(d.getSimilarity());
    System.out.println(d);

}

}

しかし、なぜ結果がゼロなのかわかりません?!

結果は次のとおりです。

2013 年 1 月 27 日 7:03:00 PM net.didion.jwnl.util.MessageLog doLog
INFO: 辞書のインストール net.didion.jwnl.dictionary.FileBackedDictionary@48fbc0
[Synset: [オフセット: 6074471] [POS: 名詞] 単語:英語 -- (英語と文学を研究する分野)]
[構文: [オフセット: 6074471] [位置: 名詞] 単語: 英語 -- (英語と文学を研究する分野)]
0.0
english#n# 3 英語#n#3 0.0

手伝っていただけませんか?

4

1 に答える 1

1

対応する WordNet 辞書を必ず使用する必要があります。Wordnet 2.0 を試してください。それ以外の場合は、Wordnet 3.0 が埋め込まれた sysnsets 間の類似性測定を使用するために WS4J を試してください。

于 2014-06-17T17:05:48.057 に答える