【问题标题】:Extract relevant address from string?从字符串中提取相关地址?
【发布时间】:2013-06-13 16:36:47
【问题描述】:

我正在使用 Google 地理编码 API 开发地址匹配应用程序。 问题是我试图验证的数据库中的一些地址类似于:

收件人:THOMAS WONG 先生 2457 Yonge St., Toronto, ON, N2S 2V5, Canada

而不是

2457 Yonge St., Toronto, ON, N2S 2V5, Canada

第一个字符串返回空结果(因为它以人名开头),第二个字符串将验证并返回完整正确的地址。

我的问题是:解决这个问题的正确方法是什么? 我正在考虑一种仅从地址字符串中提取相关部分(具有某些功能)的方法,但也许有更好的想法?

谢谢你, 先生。

【问题讨论】:

  • 所有地址都在加拿大吗?其中一些在美国吗?

标签: validation street-address text-extraction


【解决方案1】:

我在 SmartyStreets 工作,并使用 LiveAddress API 编写了the address extractor which we now offer。这个很难(硬。您需要强迫自己不要做出很多假设,包括“如果地址以数字开头”。 (抱歉 DwB - 有很多事情要考虑。)

如果您有美国地址,您可能仍然会发现我们的工具很有用(在某种程度上,它可以免费注册和使用)。这是另一个关于提取实用程序的 Stack Overflow 帖子:https://stackoverflow.com/a/16448034/1048862

最好的方法是使用地址验证服务——一种可以验证送货点而不仅仅是地址范围的服务(这是最常见的,所以要警惕声称“地址验证”实际上只是在一定范围内猜测)。

另外请注意,Google 不会验证地址。它可能会将它们标准化,并会在地址 存在的地方返回结果,如果它是真实的,如果它实际上是有效的,那么这就是你的幸运日。

【讨论】:

  • 非常有趣的马特,似乎正是我要找的东西!我将尝试看看它是否也适用于加拿大地址(我们的数据库主要包含加拿大客户)。
  • 我希望我能告诉你它适用于加拿大。如果您需要一个系统来提取加拿大地址,请查看 CanadaPost 提供的 API……您必须遵循 DwB 建议的一些逻辑,但请务必考虑加拿大地址的几乎所有常见变体。跨度>
  • @user441637 SmartyStreets 刚刚开始提供国际地址验证
【解决方案2】:

如果地址的所需部分总是以数字开头,试试这个:

  1. 找到字符串中的第一个数字。
  2. 获取从第一个数字到字符串末尾的子字符串。
  3. 您现在有了地址。

为了解析地址,您需要知道所有可能的格式。

是否需要包括:

  • 圣诞老人,北极。
  • 英国女王
  • Captian Hootberry
  • Bob Goldenberry,乡村 7 号公路,明尼苏达
  • Jackie Blam, P.O.俄亥俄州胡特维尔 78 号信箱

对于全面的地址解析解决方案,您需要为不同的地址格式提供多种算法,然后根据输入确定使用哪种算法。

【讨论】:

  • 这适用于某些地址,但不适用于所有地址,例如我可能有:LISA ANDREW P.O. BOX 55, Kingston, ON, H5F 3C9, ON, Canada 等。我在想可能有一些地址验证应用程序可以解决问题...
  • 这种方法可行,但对输入做出了一些强有力的假设。您能否扩展它以包含更多场景并处理常见的边缘情况?
  • 这种方法不做任何假设。阅读第一行“如果地址的所需部分始终以数字开头”。 PO Box 55 不在此解决方案范围内。如果您需要更多地址解析,请显示所有可能的输入格式。在编写此答案时,它涵盖了所有列出的输入格式。
  • 感谢大家的帮助。不幸的是,我不能满足所有场景,我检查了数据库,大约有。即使字符串中包含有效地址,也有 50,000 个地址无法验证。我现在正在研究 Matt 解决方案,它可能会有所帮助。
猜你喜欢
  • 2012-12-14
  • 2014-03-25
  • 1970-01-01
  • 2016-10-23
  • 2017-09-15
  • 1970-01-01
  • 2011-02-22
  • 2014-01-31
相关资源
最近更新 更多