当前位置: 首页 > 知识库问答 >
问题:

如何使用Simmetrics java计算重叠Coeffecient和Jaro Winkler

万俟英锐
2023-03-14

我一直试图使用Sim-metrics库,从:

    <dependency>
        <groupId>com.github.mpkorstanje</groupId>
        <artifactId>simmetrics-core</artifactId>
        <version>4.1.0</version>
    </dependency>
StringMetric sm = StringMetrics.jaroWinkler();
res = sm.compare("Harry Potter", "Potter Harry");
System.out.println(res);
sm  = StringMetrics.overlapCoefficient();
res = sm.compare("The quick brown fox", "The slow brawn fur");
System.out.println(res); 

但是根据https://asecuritysite.com/forensics/simstring

jaro-winkler应该为0,重叠系数应该为100。这甚至是使用这个库的正确方式吗?什么是适当的调用,比如说,如果我想运行这两个指标来匹配我从IMDB获得的一个列表到另一个列表的电影,我打算比较两组的标题,得到两组得分的平均值,并对两组电影的演员阵容做同样的事情。谢谢

共有1个答案

左博学
2023-03-14

您正确地使用了库。但是,您可能希望自定义正在使用的度量。这听起来像是过滤像'the'、'a''和‘等简短的、常见的单词,使用q-gram标记器可能比使用StringMetrics中的默认度量更有效。StringMetrics中的大多数标记在空格上,没有应用过滤器或简化符。

除此之外,我真的不能告诉您哪些组合度量、标记器、过滤器和简化器可能适用于您的用例。最有效的方法是特定于领域的。你必须尝试几种组合,看看什么效果最好。

当我使用您提供的网站计算快速棕色狐狸慢布朗皮毛的余弦相似度和重叠系数时,我得到:

String 1: The quick brown fox
String 2: The slow brawn fur

The results are then:
Cosine Similarity   25
Overlap Coefficient 25
System.out.println(
  StringMetrics.overlapCoefficient().compare(
    "The quick brown fox", "The slow brawn fur")); // 0.25
System.out.println(
  StringMetrics.cosineSimilarity().compare(
     "The quick brown fox", "The slow brawn fur")); // 0.25

关于Jaro Winkler,它看起来像是使用Simmetrics的旧版本的网站。度量和名称的具体组合,特别是Chapman长度偏差,最初是由Simmetrics的原作者Sam Chapman编写的。

旧版本有一些特性,虽然我不能指出导致这种差异的具体原因,但必须再次并排调试它们。

 类似资料:
  • 我有一个rdd(String,Int),它是按键排序的 现在,我想用零开始第一个键的值,并将后续键作为前一个键的和。 例如:c1=0,c2=c1的值,c3=(c1值c2值),c4=(c1..c3值)预期输出: 有可能做到这一点吗?我用地图试过了,但总和没有保存在地图里。

  • 我需要计算两个函数重叠的区域。我在这个特殊的简化示例中使用正态分布,但我需要一个更通用的过程来适应其他函数。 请看下图,了解我的意思,红色区域是我想要的: 这是我到目前为止拥有的MWE: 这就是我如何应用珍雅的答案

  • 我想计算两个集合中不同元素的数量。这就是集合1和集合2的并集。 如何将以下伪SQL格式化为有效的SQL 编辑set1和set2是表1的两列 下面是一个简短的例子: 在一个班里安排1名学生: 在一个班里安排两名学生: 我想要两个班的学生人数不同: 所以,一个工会就行了,我可以数一数。

  • 问题内容: 我正在使用Python和Numpy计算任意次数的最佳拟合多项式。我传递了x值,y值以及要拟合的多项式的阶数(线性,二次等)的列表。 这很有效,但是我还想计算r(相关系数)和r- 平方(确定系数)。我正在将我的结果与Excel的最佳拟合趋势线功能及其计算的r平方值进行比较。使用这个,我知道我正在为线性最佳拟合(度等于1)正确计算r平方。但是,我的函数不适用于度数大于1的多项式。 Exce

  • 我想知道如何计算的累计总和在AnyLogic中。具体地说,我有一个循环事件,每周改变一个参数的值。从这个参数我想计算它收到的值的累计总和,我怎么做呢? 该事件是循环模式的超时。操作是: "name_parameter"=圆形(max(正常(10,200),0));

  • 我有一个小游戏,当用户按下暂停按钮时,我需要暂停计时器,然后恢复计时器,并在用户按下恢复按钮时继续增加秒数。我研究了很多,我尝试了不同的解决方案,但没有一个对我有效。你能帮我实现这个功能吗?下面是我的代码: 谢谢你读这篇文章。