我一直在使用 Double Metaphone 和 Caverphone2 进行字符串比较,它们在姓名、地址等方面效果很好(Caverphone2 最适合我)。但是,当您获取数字值(例如电话号码、IP 地址、信用卡号码等)时,它们会产生太多误报。
因此,我查看了Luhn和Verhoeff算法,它们基本上描述了我想要的,但并不完全。它们似乎擅长验证,但似乎不是为模糊匹配而构建的。有没有像 Luhn 和 Verhoeff 一样的行为,可以检测到涉及两个相邻数字的单个数字错误和换位错误,用于类似于模糊字符串算法的编码和比较目的?
我想对一个数字进行编码,然后将其与 100,000 个其他数字进行比较,以找到非常相似的匹配项。因此,像 7041234 这样的东西会与 7041324 匹配,作为可能的转录错误,但像 4213704 这样的东西不会。