在应用 Jaro 字符串相似度算法时,我正在努力定义两个字符串之间的公共字符串。
说我们有
s1 = 'profjohndoe'
s2 = 'drjohndoe'
BY Jaro 相似度,半长为floor(11/2) - 1 = 4
,由算法定义,s1[i] = s2[j]
算作共同的,如果abs(i-j)<=4
那么映射矩阵是
p r o f j o h n d o e
d 0 0 0 0 0 0 0 0 0 0 0
r 0 1 0 0 0 0 0 0 0 0 0
j 0 0 0 0 1 0 0 0 0 0 0
o 0 0 1 0 0 1 0 0 0 0 0
h 0 0 0 0 0 0 1 0 0 0 0
n 0 0 0 0 0 0 0 1 0 0 0
d 0 0 0 0 0 0 0 0 1 0 0
o 0 0 0 0 0 1 0 0 0 1 0
e 0 0 0 0 0 0 0 0 0 0 1
所以:
char_ins1_canfound_ins2 would be 'rojohndoe' (in their presented order in s1);
char_ins2_canfound_ins1 would be 'rjohndoe' (in their presented order in s2).
现在我遇到一个常见的字符字符串长度不相等的情况,如何处理?
如果在 R 'stringdist' 包中应用 'stringdist' 函数,将获得以下结果:
> 1 - stringdist('profjohndoe','drjohndoe',method='jw')
[1] 0.7887205
这似乎是:
1/3*(8/9+8/11+(8-2)/8) [1] 0.7887205
上面的结果表明 stringdist 计数的公共字符串长度为 8。根据这个事实,如果我按摩char_ins1_canfound_ins2
为 'rojohnde',应该有 6 个转置,这应该产生 1/3*(8/9+8/11+(8- 3)/8) 如果我按摩char_ins1_canfound_ins2
为 'rojhndoe',应该有 2 个换位,这应该产生 1/3*(8/9+8/11+(8-1)/8)
Rstringdist
函数如何处理上述情况?
百万感谢!