5

我正在尝试比较两个姓名和地址列表以查看唯一数据。我可以轻松地提取出两个列表中完全相同的字符串,然后我得到的名称和地址不同,但可能是同一个人。IE:

列表中的条目 1 Smith J Ph234567 34 Smith st

列表中的条目 2 Smith John Ph234567 34 Smith st

或者

列表中的条目 1 Smith J Ph234567 34 Smith Rd

列表中的条目 2 Smith J Ph234567 34 Smith Road

我想为看起来相似的条目添加一个标签,比如 80% 匹配。

嵌套的 Foreach 循环不起作用,因为它们匹配每个单词或字母(取决于您如何在字符串中与其他单词或字母一起编写它。

For 循环不起作用,因为一次更改 J vrs John 会在更改后为每个条目创建错误。

我在 vb.net 中编写它,但也可以从 C# 翻译

4

1 回答 1

13

这类问题一般通过计算字符串之间的编辑距离来解决。例如,从 Levenshtein 距离开始。

这会给你一个分数(将一个字符串转换为另一个字符串所需的“编辑操作”的数量)。要将其转换为百分比标识,您需要通过较大字符串的长度(类似于 的行percent = (largerString.Length - editDistance) / largerString.Length)对其进行规范化。

于 2013-03-13T23:55:53.240 回答