String 如何计算;m";在Jaro Winkler距离内?

String 如何计算;m";在Jaro Winkler距离内?,string,algorithm,String,Algorithm,为了计算两个字符串的Jaro距离,我们使用以下等式: dj=1/3(m/| s1 |+m/| s2 |+(m-t)/m) 我应该如何计算这个等式中两个字符串的“m” 如果“m”是两个字符串之间的差异,那么为什么在两个字符串“MARTHA”和“MARHTA”的示例中,m是6。我认为应该是1,因为字符串之间的差值是1而不是6!我说得对吗?m是两个字符串之间共享的字符数,而不管它们的位置如何,并且它们之间的距离不超过d=floor(max(len(String1),len(String2))/2)-1

为了计算两个字符串的Jaro距离,我们使用以下等式:

dj=1/3(m/| s1 |+m/| s2 |+(m-t)/m)

我应该如何计算这个等式中两个字符串的“m”


如果“m”是两个字符串之间的差异,那么为什么在两个字符串“MARTHA”和“MARHTA”的示例中,m是6。我认为应该是1,因为字符串之间的差值是1而不是6!我说得对吗?

m
是两个字符串之间共享的字符数,而不管它们的位置如何,并且它们之间的距离不超过
d=floor(max(len(String1),len(String2))/2)-1
(感谢Michael Foukarakis)。这是玛莎和玛尔塔的6分


t
是共享但位于不同位置的字符数除以2。在本例中,两个字符(
H
T
)是共享的,但位置不同,因此
T=2/2=1

m是两个字符串之间的匹配字符数,在您的案例中为6。Wikipedia的示例()非常适合解决您的具体问题,那么真正的问题是什么呢?@AndyG:我不明白如何计算m和t!在Wikipedia的例子中,对于“MARTHA”和“MARHTA”,m=6表示所有相同的字符,但是对于“CRATE”和“TRACE”,m=3表示所有相同的字符顺序相同,因此对于“MARTHA”和“MARHTA”,m应该是4,因为T和H在两个字符串中的顺序不相同!不完全正确-只有当两个字符相同且不超过
d=floor(max(len(String1),len(String2))/2)-1
时,两个字符才是匹配的。好的,但这里有另一个例子,以不同的方式计算m和t,如您所说,对于“板条箱”和“跟踪”,m应该是5,因为所有字符都在两个字符串之间共享,但是m=3!我不知道为什么?!t应该是1(C和t),但t=0!“你能给我解释一下吗?”苏德普看到迈克尔的更正。存在距离限制,在板条箱/痕迹的情况下,距离限制为
d=地板(5/2)-1=1
。因此,C和T太远,因此不考虑它们。
T
是否也共享距离约束?