比较两个地址字符串时,如何获得百分比准确度匹配?

时间:2013-03-13 23:53:11

标签: c# vb.net string match

我正在尝试比较两个名称和地址列表,以查看查找唯一数据。我可以很容易地提取出所有那些在两个列表中完全相同的字符串,然后我留下的名称和地址不同但可能是同一个人。 即:

列表1史密斯J Ph234567 34 Smith st

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

列表1 Smith J Ph234567 34 Smith Rd

列入清单2史密斯J Ph234567 34 Smith Road

我想为看起来彼此相似的条目添加标签,例如80%匹配。

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

for循环不能作为一个更改工作J vrs John在更改后为每个条目创建错误。

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

1 个答案:

答案 0 :(得分:10)

这种问题通常通过计算字符串之间的edit distance来解决。例如,从Levenshtein距离开始。

这将为您提供分数(将一个字符串转换为另一个字符串所需的“编辑操作”数)。要将其转换为百分比标识,您需要将其标准化为较大字符串的长度(类似于percent = (largerString.Length - editDistance) / largerString.Length的行)。