【发布时间】:2011-12-28 15:31:45
【问题描述】:
我一直在使用 Double Metaphone 和 Caverphone2 进行字符串比较,它们在姓名、地址等方面效果很好(Caverphone2 最适合我)。但是,当您获取数字值(例如电话号码、IP 地址、信用卡号码等)时,它们会产生太多误报。
所以我查看了Luhn 和Verhoeff 算法,它们基本上描述了我想要的,但并不完全。它们似乎擅长验证,但似乎不是为模糊匹配而构建的。有没有像 Luhn 和 Verhoeff 那样的行为,可以检测到涉及两个相邻数字的个位错误和换位错误,用于类似于模糊字符串算法的编码和比较目的?
我想对一个数字进行编码,然后将其与 100,000 个其他数字进行比较,以找到非常相似的匹配项。因此,类似 7041234 的内容会与 7041324 匹配,因为可能存在转录错误,但类似 4213704 的内容不会。
【问题讨论】:
-
天真的问题:Levenshtein distance 不会这样做吗?
-
是的,这可能效果很好。特别是 Damerau-Levenshtein 距离可能正是我正在寻找的!
标签: algorithm fuzzy-comparison