从字符串中提取相关地址?

时间:2013-06-13 16:36:48

标签: validation street-address text-extraction

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

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

而不是

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

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

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

谢谢你, M.R。

2 个答案:

答案 0 :(得分:1)

如果地址的所需部分始终以数字开头,请尝试以下操作:

  1. 找到字符串中的第一个数字。
  2. 从第一个数字到字符串末尾获取一个子字符串。
  3. 你现在有了地址。
  4. 为了解析地址,您需要了解所有可能的格式。

    您需要包括:

    • Santa,North Pole。
    • 女王,伟大的英国人
    • Captian Hootberry
    • Bob Goldenberry,农村路线7,MN
    • Jackie Blam,P.O。 Box 78,Hootville,OH

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

答案 1 :(得分:1)

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

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

执行此操作的最佳方法是使用地址验证服务 - 可以验证交付点而不仅仅是地址范围(这是最常见的,因此要谨慎对待“地址验证”,当它真的只是在某些范围内猜测。)

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