【问题标题】:How to identify address location from text string php?如何从文本字符串 php 中识别地址位置?
【发布时间】:2017-01-16 15:44:52
【问题描述】:

我正在尝试在我的 xampp 上使用 php 从一长串文本中识别和提取任何输入地址位置(不限于美国 - SmartyStreet)。

我已经阅读了几个关于如何执行此操作的主题/库,它们围绕使用 NLP、Google 的地理编码 API 和正则表达式来执行上述任务。这 3 个链接是一些似是而非的链接,可能对 Link 1Link 2Link 3/GitHub Library(Seems Promising) 有所帮助。

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

【问题讨论】:

    标签: php regex nlp google-geocoding-api street-address


    【解决方案1】:

    这当然是地址解析的圣杯。攻击这个项目时需要考虑的几件事。首先,每个国家都可以有自己特定的寻址格式。尽管它会很好,但没有标准的寻址格式。

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

    Address formats by Informatica

    Address formats by Universal Postal Union

    Address formats by a guy who has spent a lot of time thinking about this kind of stuff

    第 1 步 - 一旦您熟悉了每个国家/地区所有可能的地址格式,您就可以将相似的格式分组并为每个组创建一个正则表达式。

    第 2 步 - 这很关键。尽你所能确定地址可能所属的国家。这将使您知道要使用哪个正则表达式。如果您无法做到这一点,您最终可能会得到许多不同的候选地址。

    第 3 步 - 使用您的正则表达式,扫描源文本以确定地址的潜在范围、起点和终点。在美国,地址通常以门牌号开头,以邮政编码(5 位或 9 位或 11 位数字)结尾。在德国,地址通常以街道名称开头,以城市/州或邮政编码结尾。

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

    • 主号码
    • 街道预定向(有助于获得所有可能值的索引)
    • 街道名称(有助于获得所有可能值的索引)
    • 街道后缀(有助于获得所有可能值的索引)
    • 街道后向(有助于对所有可能的值进行索引)
    • 辅助数字指示符(有助于对所有可能值进行索引)
    • 二级号码
    • 城市(有助于获得所有可能值的索引)
    • 状态(有助于获得所有可能值的索引)
    • 邮政编码

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

    第 5 步 - 如果您只想确定一个看起来像地址的字符串,那么您就完成了。将此字符串输入地理编码工具并获取与其对应的纬度/经度。 Google MapsOpenStreetMap 应该能够为您解决问题。

    如果您想知道地址是否实际有效(例如与权威数据集中的已知条目匹配,例如当地邮局),那么您需要使用地址验证工具,例如您将用简单的谷歌搜索找到:

    Google Search: "address validation"

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

    【讨论】:

      猜你喜欢
      • 2018-03-03
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2016-01-16
      • 2012-06-15
      • 2015-10-05
      相关资源
      最近更新 更多