如何识别拼写不同的相似词我想从数据库中过滤掉重复的客户名称。单个客户可能有多个名称相同的系统条目,但拼写略有不同。下面是一个示例:一个名为Brook的客户可能在系统中有三个条目:BrookBertaBirukBerta假设我们将此名称放入数据库列中。我想知道识别此类重复项的不同机制,比如100,000条记录。我们可以在C#中使用正则表达式来迭代所有记录或一些其他模式匹配技术,或者我们可以将这些记录导出到最适合此类查询的任何内容(具有正则表达式功能的SQL)。这就是我认为的解决方案,所以请转发任何想法。DoubleMetaphone算法于2000年发布,是Soundex算法的新改进版本,于1918年获得专利。本文链接到多种语言的DoubleMetaphone实现。查看Soundex在Transact-SQL中有一个Soundex函数(参见http://msdn.microsoft.com/en-us/library/ms187384.aspx):SELECTSOUNDEX('brookberta'),SOUNDEX('BruckBerta'),SOUNDEX('BirukBerta')为每个示例值返回相同的值B620检查器。http://norvig.com/spell-correct.html这将取一个词并根据丢失的字母、添加字母、交换字母等找到所有可能的替代方案。你可能想谷歌语音相似性算法,你会发现很多关于这个的信息。包括这篇关于在C#中实现解决方案的Codeproject文章。查看soundex。它是大多数语言中的一个相当标准的库,可以满足您的需求,即通过算法识别语音相似性。http://en.wikipedia.org/wiki/SoundexRecordLinkage有一个非常好的R包(只需在Google中搜索“R”)。标准示例正是针对您的问题:RRecordLinkageSoundex等的C代码直接来自PostgreSQL!对于此解决方案,我推荐Soundex和基于Lev距离的派生算法。Levenstein距离更适合拼写检查解决方案恕我直言。以上就是《C#学习教程:如何识别拼写不同的相似词》分享的所有内容,如果对您有用,需要进一步了解《C#学习教程》,希望大家多加关注——本篇文章收集自网络,不代表立场。侵权请点击右侧联系管理员删除。如需转载请注明出处:
