我有一个问题,我们可以通过将e.d值除以两个字符串的长度来规范levenshtein编辑距离吗? 我问这个是因为,如果我们比较两个长度不等的字符串,那么两个长度之间的差异也将被计算在内。 例如: ed('有一个','有一个球')= 4和ed('有一个','有一个球是圆的' ;)= 15。 如果我们增加字符串的长度,编辑距离将增加,即使它们是相似的。 因此,我无法设置一个值,应该是一个好的编辑距离值。
答案 0 :(得分:7)
是的,规范化编辑距离是将字符串之间的差异放在单个等级上的一种方法,而不是#34;相同的"没有任何共同之处"。
需要考虑的一些事项:
[0, 1]
范围内,则需要将距离除以两个给定长度的字符串之间的最大可能距离。也就是说,LCS distance为length(str1)+length(str2)
,Levenshtein distance为max(length(str1), length(str2))
。答案 1 :(得分:1)
我成功使用了以下内容:
len = std::max(s1.length(), s2.length());
// normalize by length, high score wins
fDist = float(len - levenshteinDistance(s1, s2)) / float(len);
然后选择最高分。 1.0表示完全匹配。