用于获得两个字符串之间的百分比相似性的最佳算法是什么.到目前为止,我一直在使用Levenshtein,但这还不够. Levenshtein给出了差异的数量,然后我必须通过这样做来尝试将其计算为相似性:
100 - (no.differences/no.characters_in_scnd_string * 100)
例如,如果我测试“ab”与“abc”的相似程度,我得到66%的相似度,这是有道理的,因为“ab”是2/3,类似于“abc”.
我遇到的问题是,当我测试“abcabc”到“abc”时,我得到100%的相似性,因为“abc”完全出现在“abcabc”中.但是,我希望答案是50%,因为50%的“abcabc”与“abc”相同……
我希望这有点意义……第二个字符串是常量,我想测试不同字符串的类似字符串.类似地,我的意思是“猫狗”和“狗猫”具有极高的相似性,尽管词序不同.
有任何想法吗?
解决方法
这是damerau-Levenshtein距离和Levenshtein距离算法的实现
你可以检查这个StringMetric算法你有什么需要