【问题标题】:Strategies for UK Postal Address Matching英国邮政地址匹配策略
【发布时间】:2015-12-03 22:36:31
【问题描述】:

我有 2 个英国邮政地址表(每个大约 300000 行),需要将一组与另一组匹配,以便返回每个地址的第一组中包含的唯一 ID。 问题是地址的格式和拼写有很多变化。 我编写了很多 t-sql 脚本来挑选东部匹配项(确切的邮政编码 + 门牌号 + 街道名称等),但仍有许多无法匹配的记录难以处理。我最终可能会拥有与异常一样多的 sql 脚本! 我已经逐字查看了 Levenstein 函数和排名,但这些方法也不可靠且存在问题。

有没有人做过类似工作的经验,你的方法和成功率是多少?

谢谢!

【问题讨论】:

  • 您需要在问题中添加更多详细信息。首先,您拥有的代码可以匹配现有记录,然后是不匹配的记录样本。不过,可能仍有太多情况需要处理。
  • 感谢您的回复。对于剩下的不匹配的集合,我认为有太多的变化需要以编程方式处理,需要通过物理检查来手动匹配。我想我只是想知道其他人在这种情况下使用了什么一般方法。
  • 正如所写,这是一个商业问题,而不是编程问题。您甚至没有给出“难以处理”的数据的示例。添加示例数据、当前代码、当前结果和期望的结果,这将是一道编程题。

标签: sql-server


【解决方案1】:

我同意评论者的观点,即这主要是一个业务规则问题,而不是一个编程问题,但它的价值……

多年前,我在目录中遇到过类似的问题。条目并不总是像我们希望的那样一致,不同的版本出现得很奇怪,并且有各种各样的变化。一切都必须联系起来。

我最后做的是一个模糊匹配器。将项目分解为组件。在我可以的地方规范化数据——例如,从不总是有它们并且可以没有它们的字段中删除空格。计算出未遂事件之间的距离 - 例如,酒吧和汽车相距 1。我词干了 - 请参阅http://snowball.tartarus.org/algorithms/english/stemmer.html 了解更多信息。想想我什至玩过 SQL Server 的 SOUNDEX 匹配。

然后,我完成并编写了作业脚本以生成候选匹配列表。任何高于特定级别的内容都会呈现给管理员,管理员会看到程序认为最佳匹配以及其他可能匹配的内容。他们选择了一个看起来最好的,打勾,然后继续下一个。

在列表的开头,每个人都认为这项工作太大而无法管理。然后他们开始检查它,发现它比他们想象的要快得多,而且比他们担心的要容易得多,因为它可以在新数据进入时保持领先。

以编程方式完成所有操作的脚本永远不会完美,并且最终将几乎与源列表一样长,并且会产生尽可能多的反对意见。不要试图完美地自动化它;自动化简单的事情,让人类参与不确定的情况。更轻松、更安全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多