27

我正在编写一个桌面 UI(.Net WinForms)来帮助摄影师清理他的图像元数据。有一个 66k+ 短语的列表。任何人都可以推荐一个好的开源/免费 .NET 组件,我可以使用它使用某种算法来识别潜在的合并候选者吗?例如,可能有两个或多个条目实际上是相同的单词或短语,只是空格或标点符号或什至是轻微的拼写错误。该应用程序最终将依靠用户来整合短语,但拥有一种自动找到潜在候选人的有效方法将被证明是无价的。

4

2 回答 2

35

让我向您介绍 Levenshtein 距离公式。太棒了:

http://en.wikipedia.org/wiki/Levenshtein_distance

在信息论和计算机科学中,Levenshtein 距离是一种字符串度量,用于测量两个序列之间的差异量。术语编辑距离通常用于特指 Levenshtein 距离。

就我个人而言,我在医疗保健环境中使用了它,在该环境中检查了提供者名称是否重复。使用 Levenshtein 流程,我们给了他们一个置信度等级,并允许他们确定它是真正的复制品还是独特的东西。

于 2011-11-21T21:10:00.390 回答
3

我知道这是一个老问题,但我觉得这个答案可以帮助当前处理同样问题的人。

请查看https://github.com/JakeBayer/FuzzySharp

它是 ac# NuGet 包,它具有多种方法来实现某种模糊搜索方式。不确定,但也许其中一个也使用了 Fosco 的答案。

编辑:我刚刚注意到关于这个包的评论,但我认为它应该在这个问题中有一个更好的位置

于 2021-12-02T14:37:08.597 回答