14

我正在尝试使用 Jaro-Winkler 相似距离来查看两个字符串是否相似。我尝试使用这两个库来比较单词carolelephant. 结果不相似:

import jellyfish

jellyfish.jaro_winkler('Carol','elephant') 

返回0.4416666,而

from pyjarowinkler import distance

distance.get_jaro_distance('Carol','elephant')

返回0.0这对我来说更有意义。

两个库之间是否存在错误?

4

2 回答 2

6

Jellyfish 的实现是正确的。

卡罗尔和大象没有匹配的前缀。因此,在这种情况下,Jaro-Winkler 距离等于 Jaro 距离。我手动计算了Jaro距离,发现Jellyfish的实现是正确的。有一个在线计算器,但在线计算器也是错误的。我还发现了一些其他的实现,比如在 python-Levenstein 包中,它也实现了 Jaro-Winkler 距离,这验证了我的计算。在 npm 上也有一个实现。如果你喜欢自己计算分数 - 你可以在这里找到论文

于 2018-04-16T09:43:46.477 回答
2

或许值得注意的是,R 中的两种不同实现似乎与 pyjarowinkler 版本相匹配:

library(stringdist)
> 1 - stringdist("Elephant", "Carol", method = 'jw')
[1] 0.4416667

library(RecordLinkage)
> jarowinkler('Carol','elephant')
[1] 0.4416667
于 2018-08-31T22:17:27.270 回答