如何确定两个相似的波段名称是否代表相同的波段?

Luk*_*rey 14 c# string spell-checking

我目前正在开展一个项目,要求我将我们的乐队和场地数据库与一些外部服务相匹配.

基本上我正在寻找确定两个名称是否相同的最佳方法的方向.例如:

  • 我们的数据库地址名称 - "The Pig and Whistle"
  • 服务1 - "猪和口哨"
  • 服务2 - "猪与口哨"
  • 等等

我认为主要区别在于缺少"the"或使用"&"而不是"and"之类的东西,但也可能存在不同命令中拼写和单词略有不同的内容.

在这种情况下通常使用哪些算法/技术,我是否需要过滤干扰词或进行某种拼写检查类型匹配?

你有没有在c#中看过任何类似的东西的例子?

更新:如果有人对ac#example感兴趣,你可以通过google代码搜索Levenshtein距离访问一个堆

Joh*_*lla 14

规范(也可能是最简单)的方法是测量两个弦之间的Levenshtein距离.如果距离相对于字符串的大小较小,则可能是相同的字符串.请注意,如果你必须比较很多非常小的字符串,那么就更难判断它们是否相同.使用较长的字符串可以更好地工

一种更智能的方法可能是比较两个弦之间的Levenshtein距离,但是将距离为零指定为更明显的变换,如"和"/"&","Snoop Doggy Dogg"/"Snoop"等.

  • 我发现了这个博客文章实现了这个算法和c#中的一些其他源代码:http://www.atalasoft.com/cs/blogs/stevehawley/archive/2009/01/26/string-similarity-and-扩展-methods.aspx (2认同)