我将 JAWS 用于普通的 wordnet 内容,因为它易于使用。不过,对于相似度指标,我使用位于此处的库。您还需要下载此文件夹,其中包含预处理的 WordNet 和语料库数据,才能正常工作。代码可以这样使用,假设您将该文件夹放在项目文件夹中另一个名为“lib”的文件夹中:
JWS ws = new JWS("./lib", "3.0");
Resnik res = ws.getResnik();
TreeMap<String, Double> scores1 = res.res(word1, word2, partOfSpeech);
for(Entry<String, Double> e: scores1.entrySet())
System.out.println(e.getKey() + "\t" + e.getValue());
System.out.println("\nhighest score\t=\t" + res.max(word1, word2, partOfSpeech) + "\n\n\n");
这将打印如下内容,显示由要比较的单词表示的每个可能的同义词组合之间的相似度得分:
hobby#n#1,gardening#n#1 2.6043996588901104
hobby#n#2,gardening#n#1 -0.0
hobby#n#3,gardening#n#1 -0.0
highest score = 2.6043996588901104
还有一些方法可以让您指定一个/两个词的含义:res(String word1, int senseNum1, String word2, partOfSpeech)
等。不幸的是,源文档不是 JavaDoc,因此您需要手动检查它。源代码可以在这里下载。
可用的算法有:
JWSRandom(ws.getDictionary(), true, 16.0);//random number for baseline
Resnik res = ws.getResnik();
LeacockAndChodorowlch = ws.getLeacockAndChodorow();
AdaptedLesk adLesk = ws.getAdaptedLesk();
AdaptedLeskTanimoto alt = ws.getAdaptedLeskTanimoto();
AdaptedLeskTanimotoNoHyponyms altnh = ws.getAdaptedLeskTanimotoNoHyponyms();
HirstAndStOnge hso = ws.getHirstAndStOnge();
JiangAndConrath jcn = ws.getJiangAndConrath();
Lin lin = ws.getLin();
WuAndPalmer wup = ws.getWuAndPalmer();
此外,它要求您拥有麻省理工学院JWI的 jar 文件