我正在编写桌面UI(.Net WinForms)来帮助摄影师清理他的图像元数据.有一个66k +短语列表.任何人都可以建议一个好的开源/免费.NET组件,我可以使用它采用某种算法来识别合并的潜在候选人?例如,可能存在两个或更多个条目,这些条目实际上是相同的单词或短语,仅通过空格或标点符号或甚至轻微的错误拼写而不同.该应用程序最终将依赖用户来执行短语的合并,但是有效地自动查找潜在候选人将被证明是非常宝贵的.
Fos*_*sco 25
让我向您介绍Levenshtein距离公式.太棒了:
http://en.wikipedia.org/wiki/Levenshtein_distance
在信息理论和计算机科学中,Levenshtein距离是用于测量两个序列之间差异量的字符串度量.术语编辑距离通常用于特指Levenshtein距离.
我个人在医疗保健环境中使用它,其中检查提供者名称是否重复.使用Levenshtein过程,我们给了他们一个置信度,并允许他们确定它是真正的重复还是独特的东西.
请查看https://github.com/JakeBayer/FuzzySharp
它是 c# NuGet 包,有多种方法实现某种模糊搜索方式。不确定,但也许福斯科的答案也被用在其中之一中。
编辑:我刚刚注意到关于这个包的评论,但我认为它应该在这个问题中占据更好的位置