当前位置: 首页 > 面试题库 >

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

罗昱
2023-03-14
问题内容

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

  • 搜索同义词集

  • 找到同义词集之间的相似性/相关性

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

我发现以下罐子:

  • 通用库 -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/(测试版)

您对我的应用有什么建议?

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

谢谢!木兰


问题答案:

我将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,因此您需要手动检查它。可以在这里下载源html" target="_blank">代码。

可用的算法有:

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();

另外,它要求您拥有MIT的JWI的jar文件



 类似资料:
  • 问题内容: 正如问题所暗示的,我想知道线程上的sleep和join方法之间的相似性。我经历了许多描述睡眠和加入方法之间差异的问题。但是我想知道不同的场景,在这些场景中,睡眠和加入方法可以互换使用。根据我的想法,以下代码应该以相同的方式工作。我有一个主线程,在其中启动了一个新线程(仅1个),并且我希望主线程等待新线程完成一段时间。代码如下: 要么, 但是,当我运行这段代码时,没有得到预期的结果。为什

  • 问题内容: Elasticsearch 文档说我可以通过将以下内容添加到来更改所有字段的相似性: ..我已经做过,但是我也想微调场长归一化,它说我可以在这里做:http : //www.elasticsearch.org/guide/en/elasticsearch/guide/current/pluggable -similarites.html#bm25-tunability 但这并没有告诉我

  • 问题内容: 如何查询相似度排序的记录? 例如。搜索“库存溢出”将返回 堆栈溢出 SharePoint溢出 数学溢出 政治溢出 视觉特效溢出 例如。搜索“ LO”将返回: 巴勃罗毕加索 米开朗基罗 杰克逊·波洛克 我需要什么帮助: 使用搜索引擎索引和搜索MySQL表,以获得更好的结果 使用Sphinx搜索引擎和PHP 在PHP中使用Lucene引擎 使用全文索引,查找相似/包含的字符串 什么不好 L

  • 本文向大家介绍TF-IDF与余弦相似性的应用(二) 找出相似文章,包括了TF-IDF与余弦相似性的应用(二) 找出相似文章的使用技巧和注意事项,需要的朋友参考一下 上一次,我用TF-IDF算法自动提取关键词。 今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。 为了找出相似的文章,需要用

  • 问题内容: 如何在运行时在实现已定义接口的类路径中发现类? ServiceLoader非常适合(我认为,我还没有使用过),但是我需要在Java 1.5中做到。 问题答案: Java 1.5没有为此内置任何功能。我自己实现了它;不太复杂。但是,当我们升级到Java 6时,必须将对实现的调用替换为对的调用。我本可以在应用程序和加载器之间定义一个小桥梁,但是我只在少数几个地方使用它,而包装器本身将是Se

  • 问题内容: 在哪里可以找到比levenshtein()和php same_text()方法更准确地估计错位字符的拼写的算法? 例: /乔纳斯 问题答案: 这是我提出的解决方案。它基于蒂姆的建议,即比较后续角色的顺序。一些结果: jonas / jonax : 0.8 jonas / sjona : 0.68 jonas / sjonas : 0.66 jonas / asjon : 0.52 jo