Java中的Wordnet相似性:JAWS,JWNL还是Java WN ::相似性?

我需要在基于java的应用程序中使用Wordnet。 我要:

  • 搜索同义词

  • 找到synsets之间的相似性/相关性

我的应用程序使用RDF图表,我知道有Wordnet的SPARQL端点,但我想最好有一个数据集的本地副本,因为它不是太大。

我找到了以下jar子:

  • 一般图书馆 – JAWS http://lyle.smu.edu/~tspell/jaws/index.html
  • 一般图书馆 – JWNL http://sourceforge.net/projects/jwordnet
  • 相似性库(Perl) – Wordnet ::相似性 http://wn-similarity.sourceforge.net/
  • Java版的Wordnet ::相似性http://www.cogs.susx.ac.uk/users/drh21/(beta )

你会为我的应用推荐什么?

是否可以通过一些绑定从Java应用程序中使用Perl库?

谢谢! Mulone

我使用JAWS作为普通的wordnet东西,因为它易于使用。 但是,对于相似性指标,我使用此处的库。 您还需要下载此文件夹,其中包含预处理的WordNet和语料库数据,以使其正常工作。 假设您将该文件夹放在项目文件夹中名为“lib”的另一个文件夹中,可以像这样使用代码:

JWS ws = new JWS("./lib", "3.0"); Resnik res = ws.getResnik(); TreeMap scores1 = res.res(word1, word2, partOfSpeech); for(Entry 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文件

JAWS中有函数可以找到类似的wordForms以下是详细信息:

public AdjectiveSynset [] getSimilar()抛出WordNetException,这里是你可以查看的链接: http ://lyle.smu.edu/~tspell/jaws/doc/edu/smu/tspell/wordnet/AdjectiveSynset.html这个链接吧包含您可以使用的详细信息。

我不确定JAWS或JWNL是否提供了计算synset之间相似性的方法,但我已经尝试了两种搜索同义词,我发现JAWS更容易使用。 具体来说,简单:

  // Specifying the Database Directory System.setProperty("wordnet.database.dir", "C:/WordNet/2.1/dict/"); 

比JWNL的file_properties.xml要求更容易理解。