邮政地址模糊匹配怎么办?


14

我想知道当邮政地址的格式不同或其中一个拼写错误时如何匹配邮政地址。

到目前为止,我已经找到了不同的解决方案,但是我认为它们已经过时并且效率不高。我确信存在一些更好的方法,因此,如果您有供我阅读的参考文献,那么我相信这是一个可能使多个人感兴趣的主题。

我找到的解决方案(示例在R中):

  • Levenshtein距离,它等于将一个单词转换为另一个单词时必须插入,删除或更改的字符数。

    agrep("acusait", c("accusait", "abusait"), max = 2, value = TRUE) ## [1] "accusait" "abusait"

  • 音素的比较

    library(RecordLinkage) soundex(x<-c('accusait','acusait','abusait')) ## [1] "A223" "A223" "A123"

  • 使用拼写校正器(最终是像Peter Norvig那样的贝叶斯校正器,但我猜它在地址上不是很有效。

  • 我考虑过使用Google的建议,但同样,在个人邮政地址上效率也不高。

  • 您可以想象使用机器学习监督方法,但是您需要存储用户拼写错误的请求,这对我来说不是一个选择。


我建议使用支持模糊字符串匹配的真实数据库:posgres。会很有效的。
Emre

仅美国,加拿大,英国,法国,日本,多国...?大概对于每个人,您首先要确定/猜测它是什么语言和哪个国家/地区,然后应用特定国家/地区的分类器?您有培训集吗?如果有的话,其国家分布是什么?
smci

你到哪里去了?我们设计的解决方案是清理和丰富地址和地名,并点击google地理编码并放置网络API,然后进行一些粗略的计算以确定与原始数据相比正确的结果。它有点笨拙,但可以工作,但是必须有一种更优雅的方法来规范地址和位置/位置。
克里斯·史密斯

Answers:


9

使用R时,您可能需要研究stringdist包和可在计算中使用的Jaro-Winkler距离度量。这是由美国人口普查局开发的,用于链接。

有关此杂志的Jaro和Jaro-Winkler距离的更多信息,请参见。

为了比较不同的匹配技术,请阅读本文


4

有很多巧妙的方法可以延长Levenshtein的距离,从而获得更完整的图像。SeatGeek的团队在这里简要介绍了一个非常有用的模块(对于python),称为“ Fuzzy Wuzzy ” 。

您可以做的几件事是部分字符串相似度(如果您使用不同长度的字符串,例如m&n且m <n),则仅匹配m个字符。您还可以将字符串分成多个标记(单个词),并查看标记集如何匹配或按字母顺序排列并排序。


4

用于检测部分字符串匹配(尽管通常在文档级别)的另一种流行的技术是混叠。从本质上讲,这是一种移动窗口方法,该方法提取出目标单词/文档的一组n元语法,然后通过Jaccard系数将它们与其他单词/文档的一组n元语法进行比较。Manning及其同事(2008年)在信息检索的背景下讨论了几乎重复的问题


4

我已经用Python编写了一个通用的概率模糊匹配器,它将对匹配任何类型的数据做一个合理的工作:

https://github.com/robinl/fuzzymatcher

它在内存中,因此您可能不想使用它来匹配大约10万行以上的数据集。

我还写了一个针对英国地址的类似项目,但是前提是您有权使用Addressbase Premium。该地址不在内存中,因此已用于100m左右的英国地址。看这里:

https://github.com/RobinL/AddressMatcher

如果您想快速进行此操作,建议使用libpostal来规范化您的地址,然后将其输入到我的通用Fuzzymatcher(pip install fuzzymatcher)中。

您可以在此处找到用法示例。


罗宾,您好,我对您的AddressMatcher库感兴趣。您是否碰巧有任何使用说明文件?我有这个确切的问题-需要将一组地址(混乱)与另一个(官方邮政地址)进行匹配。谢谢
SCool

1
可悲的是,对于地址匹配器而言,这并不是一件小事,我没有很好的文档。您需要做的主要事情是将addressbase premium(一种商业产品)加载到postgresql中。
RobinL

好的,谢谢您回复我。我正在与我一起工作,我想爱尔兰版本的Addressbase Premium称为Eircode是不兼容的。您认为模糊匹配器可以胜任生产环境中地址匹配的任务吗?我只想将邮政编码附加到我没有数据的地址中,例如,搜索Eircode数据库'1 Main Street, Some Town, County',如果找到匹配项,请找回邮政编码。

1
模糊匹配器-是的,我绝对认为值得一试。对于功能强大的机器上的大量授权地址(即eircode)而言,它应该可以很好地工作,以使地址较小的列表得以找到。另一种选择是R
RobinL中的fastlink pacakge,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.