我正在尝试比较两个名称和地址列表,以查看查找唯一数据。我可以很容易地提取出所有那些在两个列表中完全相同的字符串,然后我留下的名称和地址不同但可能是同一个人。 即:
列表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#翻译
答案 0 :(得分:10)
这种问题通常通过计算字符串之间的edit distance来解决。例如,从Levenshtein距离开始。
这将为您提供分数(将一个字符串转换为另一个字符串所需的“编辑操作”数)。要将其转换为百分比标识,您需要将其标准化为较大字符串的长度(类似于percent = (largerString.Length - editDistance) / largerString.Length
的行)。