如何使用SmartyStreets US Extract API从文本字符串中识别地址位置?

问题描述 投票:3回答:1

我想从输入的地址中识别并提取任何地址(不限于美国--)。SmartyStreets在我的xampp上使用php从一长串文本中提取一个字符串。

我读了几个关于如何做到这一点的主题库,其中围绕着使用NLP,Google的地理编码API和regex来执行上述任务。这3个链接是一些可信的链接,可能会有帮助。链接1, 链接2, 链接3GitHub库(似乎很有前途).

但是,我不知道这些链接对实施是否有帮助?有谁能帮助我吗?

php regex nlp google-geocoding-api street-address
1个回答
5
投票

这是地址解析的圣杯,肯定的。 在攻克这个项目的时候,有几点需要考虑。 首先,每个国家可以有自己特定的地址格式。 尽管这很好,但没有标准的地址格式。

这里有一些很好的地址格式汇编,但即使这些也不总是一致的。

Informatica的地址格式

万国邮政联盟的地址格式

地址格式由一个花了 好多 思考这种东西的时间

第1步 - 一旦你熟悉了每个国家的所有可能的地址格式,你就可以将相似的格式进行分组,并为每个组创建一个regex。

第2步 - 这是至关重要的。 尽一切可能确定地址可能涉及的国家。 这将让你知道该使用哪种regex。 如果你不能做到这一点,你可能最终会有许多不同的地址候选。

第3步 - 使用您的regex,扫描源文本,以确定地址的潜在范围,开始和结束点。 在美国,地址通常以房屋号码开始,以邮政编码结束(5、9或11位)。 在德国,地址通常以街道名称开始,以城市州或邮政编码结束。

第4步--现在扫描该地址候选者,根据你对该国家格式模式的理解,确定该地址的各个组成部分。 找到以下组成部分。

  • 主号码
  • 街道预定向 (有助于对所有可能的值有一个索引)
  • 街道名称 (有助于对所有可能的值有一个索引)
  • 街号 (有助于对所有可能的值有一个索引)
  • 街头哨所 (有助于对所有可能的值有一个索引)
  • 副号 (有助于对所有可能的值有一个索引)
  • 副号
  • 城市 (有助于对所有可能的值有一个索引)
  • 状况 (有助于对所有可能的值有一个索引)
  • 邮政编码

(还有很多,但这是一个好的开始)

第五步--如果你只想确定一个看起来像地址的字符串,你就可以了。 将这个字符串输入地理编码工具,并得到与之对应的纬度。 谷歌地图OpenStreetMap 应该可以帮你完成这个任务。

如果你想知道一个地址是否真的有效(如在一个权威的数据集中匹配一个已知的条目,如当地邮局),那么你将需要使用一个地址验证工具,像一个简单的谷歌搜索,你会发现。

谷歌搜索: "地址验证"

完全公开:我花了很多时间来思考这个非常的话题,试图找到不同的方法来解决它,并向很多人解释它。 我在SmartyStreets整天从事国际地址工作。

© www.soinside.com 2019 - 2024. All rights reserved.