SQL - 希望使用 soundex 来纠正拼写错误 [关闭]

Posted

技术标签:

【中文标题】SQL - 希望使用 soundex 来纠正拼写错误 [关闭]【英文标题】:SQL - looking to use soundex to correct mispellings [closed] 【发布时间】:2015-04-30 18:14:19 【问题描述】:

我希望以某种方式使用 soundex 来标准化我的数据,因为有时某个列中会出现拼写错误。

例如,我有一列“City”,数据将以“Denver”、“Denver CO”或 Denvr 的形式出现。

有没有办法让“Denver”的所有变体自动更正为“Denver”?

【问题讨论】:

Soundex 是一个非常适合大多数文本的匹配工具。 您希望标准化您的数据。考虑好莱坞。好莱坞是一座城市,但它是一座虚荣的城市。首选城市是洛杉矶,但邮局将运送到好莱坞。没有什么可以标准化。 @billinkc 我真的不需要它很聪明,它只需要在几个字符消失时找到正确的匹配项。 原生 SSIS 方法是使用模糊查找。在幕后,它可能会使用高级匹配算法,如 Levenstein 距离、ngram 分析等。假设您有一组已知值,Fuzzy Lookup 将尝试根据您对精度的容忍度进行匹配。它企业版功能,但在尝试实施之前请注意这一点。在 VS 中可以正常工作,因为它已获得许可,但在标准版和我 认为 BI 版 中会失败 【参考方案1】:

如果您希望 ALL 变体匹配特定短语,我宁愿使用 string-distance 函数,而不是 soundex

最简单的是Levenstein distanceand here's an example implementation in T-SQL。

Levenstain distance 衡量需要对一个字符串执行多少次编辑才能获得第二个字符串。此功能经常用于所谓的模糊搜索,您希望获得相似的结果,而不是完全匹配您的搜索条件。

另外,由于您使用的是 MS SQL Server,我会考虑使用Data Quality Services 来清理数据库的内容。

【讨论】:

抱歉,我不太确定这是如何工作的。我想我需要某种视图来处理这些数据,输出是更正后的“城市”。我要创建一个包含此代码的视图吗? 对于表中的每个值,您都需要查询其他行的相似性。然后你需要决定用哪种方法来清理它。 Levenstein 算法只是一个工具,如何使用它取决于您。如果要清理整个数据库,请认真考虑改用 DQS。 这个功能真的帮我改正了吗?如果有意义的话,我需要一些东西来实际进行更正。 函数返回两个字符串之间的编辑距离。它不会更改数据。由您决定字符串的不同程度是否仍将它们视为“匹配”。您需要自己运行 UPDATE。我想如果手动完成,您想要做的事情将需要大量编码。尝试了解更多有关数据质量工具的信息。您的问题有解决方案 - 开源和商业。 DQS 已经是 SQL Server 的一部分。【参考方案2】:

您可能会研究 MAster Data Management。我认为 2008 年有一些东西可以用于该领域。否则你需要升级才能使用它。

【讨论】:

【参考方案3】:

如果这专门用于地址信息 - 有一些第三方插件会进行地址查找 - 这可能是清理数据的更好方法。我成功使用了CozyRoc Address lookup

【讨论】:

只要是城市列即可。字面上只需要:当 City = 'Denvr' 时,设置为 'Denver' 但对于许多拼写错误的情况。

以上是关于SQL - 希望使用 soundex 来纠正拼写错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint Search之Query spelling correction— 查询拼写纠正

使用拼写检查提高Tesseract OCR准确性

Noisy Channel模型纠正单词拼写错误

SQL之常用函数

002-贝叶斯拼写纠正实例

倒排表数据结构通配符查询拼写纠正详解