问题标签 [ws4j]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
577 浏览

java - 大型同义词集中的 WordNetSimalarity

我使用 wordnet 相似性 java api 来测量两个同义词集之间的相似性,如下所示:

主班

我的数据库包含 595 个同义词集,这意味着方法computeSimilarity将被调用 (595*594/2) 时间来计算两个单词之间的相似度,它花费的时间超过5000 ms!所以要完成我的任务,我至少需要一个星期!

我的问题是如何减少这段时间!

怎么提高成绩??

0 投票
1 回答
2396 浏览

java - java ws4j 库的文档

我正在用 Java 编写一个关于剽窃检测的项目,在这种情况下,第一步我需要执行以下任务:

输入文件(txt、.pdf、.doc)

将文件内容转换为文本

将停用词标记化为 n-gram

处理文本上的文本相似性算法

报告抄袭检测迹象

我通过自己编码完成了这些步骤,但现在我觉得它缺乏很多性能,所以我开始在我的工作中使用可用的 API es,有没有人使用过ws4j 库?有任何可用的文档或帮助吗?我不能重复使用它。这正是我想要的,看看演示

0 投票
4 回答
3570 浏览

java - 对于应该返回 1 的相似性度量,ws4j 返回无穷大

我有一个取自这个示例的非常简单的代码,其中我使用 Lin、Path 和 Wu-Palmer 相似度度量来计算两个单词之间的相似度。我的代码如下:

并且分数与预期相同,除非两个词相同。如果两个词相同(例如w1 = "walk"; w2 = "walk";),那么我拥有的三个度量值都应该返回 1.0。但相反,他们返回 1.7976931348623157E308。

我以前使用过 ws4j(实际上是相同的版本),但我从未见过这种行为。在网上搜索并没有找到任何线索。这里可能出了什么问题?

PS Lin、Wu-Palmer 和 Path 度量应该返回 1 的事实也可以通过 ws4j 提供的在线演示来验证

0 投票
1 回答
405 浏览

java - Senserelate 目标词:为最终用户提供“最佳”替代方案

我的问题介绍:用户可以搜索术语,RitaWordNet 提供了一个名为 getSenseIds() 的方法来获取相关的感官。到目前为止,我正在使用具有不同算法来定义距离的 WS4J(Java 的 WordNet 相似性, http://code.google.com/p/ws4j/ )。搜索“用户”有以下结果:

  • 用户
  • 剥削者
  • 吸毒者

http://wordnetweb.princeton.edu/perl/webwn?s=user&sub=Search+WordNet&o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&h=0

通过比较 WS4J 中的两个术语(我假设使用 targetWord?)来测量 Lin 距离:

  • 之间的相似性:用户和:用户= 1.7976931348623157E308
  • 相似度:用户和:explorer = 0.1976958835785797

我想向最终用户返回一个建议,即“用户”意义是最相关/正确的答案,但问题是这取决于句子的其余部分。

例如:“老人是公共交通工具的常客”,“年轻人在学习 NLP 时变成了吸毒者..”。

我假设 senserelate 项目包含我缺少的东西。在我的搜索过程中也找到了这个线程: word disambiguation algorithm (Lesk algorithm)

希望有人得到我的问题:)

0 投票
1 回答
2838 浏览

java - 我想使用 WordNet 查找单词相似度

我正在做关于“网络视频分类”的最后一年项目,其中一部分是找到特定单词的相似(同义词)单词,我想从中删除相似的术语。

我知道 Java 语言,所以我选择了“Java Word Similarity” ws4j

为此,我只使用了 WS4J1.0.1 jar 文件,即使我没有下载任何额外的文件,如WordNet词法数据库或sqlite数据库来存储它。因为在那个网站上,他们提到所有都包含在这个 jar 文件中。

当我执行演示程序SimilarityCalculationDemo.java时,出现以下错误:

我正在使用带有 JDK 6 的 Netbeans IDE 7.4。

任何人都可以帮助我,如何克服这个问题,因为互联网上关于ws4j的文档较少。

0 投票
3 回答
1012 浏览

java - 为什么 ws4j 在线演示值和源代码演示值不同,尤其是 lesk 值?

我正在尝试使用 lesk 查找两个单词(例如“home”和“house”)之间的相似性。

我执行了用于查找此处给出的 lesk 值的演示代码,我还使用此处的在线 ws4j 演示找到了该值

他们都给出不同的值,即

Values by executing demo code given in ws4j :
WuPalmer = 0.4
JiangConrath = 0.08467941109843881
LeacockChodorow = 1.1349799328389845
Lin = 0.16528546101187536
Resnik = 1.1692001183611416
Path = 0.1111111111111111
Lesk = 0.0
HirstStOnge = 0.0


在线演示的值:
wup( home#n#8 , house#n#10 ) = 1.0000
jcn( home#n#8 , house#n#10 ) = 12876699.5 lch
( home#n#8 , house#n#10 ) = 3.6889
lin( home#n#8 , house#n#10 ) = 1.0000
res( home#v#1 , house#v#2 ) = 9.0735
路径( home#n#8 , house#n#10 ) = 1.0000
列斯克(家#n#8,房子#n#10)= 1571
hso(家#n#8,房子#n#10)= 16

当他们都使用相同的ws4j时,为什么这两者之间的差异如此之大?演示代码有什么问题吗?

0 投票
1 回答
395 浏览

java - Wordnet ws4j 混淆 lesk 值,遍历所有同义词集

这可能是完全正常的,但我有用于 Java 的 ws4j,我似乎得到像“1.7345 ...”这样的数字,用于两个单词之间的 lesk 度量(当我使用演示代码时),但在演示网站http:/ /ws4jdemo.appspot.com/?mode=w&s1=&w1=solve&s2=&w2=determine

lesk 度量是一个整数,例如“57”。我似乎找不到这样做的原因,但总的来说我也是编程新手。

我想写一些东西,它接受一个 word1 并迭代其余的词,只返回 Lesk 测量值(与 word1 相比)高于某个值的词。这让我想到了一个相关的问题,在 Python 中,我可以使用

但我不知道如何对 ws4j 做同样的事情?

0 投票
0 回答
763 浏览

nlp - 如何使用 ws4j 库获得给定单词的所有含义的 lesk 相似度分数?

我正在尝试使用ws4j在其在线ws4j 演示中提供的两个单词的所有含义之间的 LESK 相似度得分,格式为word#pos#sense number 用于两个单词的所有含义,但我无法找到如何使用 ws4j 库获得相同格式的结果??由于没有适用于 ws4j 的适当文档,并且该库的演示/示例代码仅给出最大值,也没有说明哪些感官获得了该分数。

有人可以帮忙吗?

0 投票
1 回答
1948 浏览

java - 用于两个“单词”之间语义相似性/相关性的 Java API

我需要找出两个输入词之间的语义相似性/相关性。以下单词在现实世界中相似或相关:-

以下是我从这里截取的代码

我在 Eclipse 3.4 中使用 WS4J Api (ws4j1.0.1.jar) 和 java 1.7。我得到以下没有意义的结果,或者我的看法可能是错误的。

在此处输入图像描述

如果我的方法是错误的,请让我知道如果我想计算单词之间的相似性,那么我应该使用什么其他 api。

0 投票
1 回答
2714 浏览

java - 使用 WS4J 的句子相似度

我想使用 ws4j 来计算两个句子之间的相似度。我正在使用 WS4J 的在线演示@ WS4J 在线演示

我使用的是 WS4J 给出的默认例句。输入句子并点击计算相似度按钮后,我得到以下输出:在此处输入图像描述

在这里,我得到了句子的各个标记之间的相似性。
我如何从这里进一步前进。我想得到一个值(比如 0.5 或 0.8),它表示这两个句子的相似性。
有没有从这里开始的标准方法,还是我必须编写自己的算法?