找出字符串是街道地址、套房号码、购物中心还是其他东西

Figure out if a string is a street address, suite number, shopping center, or something else

本文关键字:购物中心 其他 号码 字符串 街道 地址      更新时间:2023-09-26

我正在使用javascript来解析一些数据,并且遇到了一点麻烦。

我有一个字段,是1-3行数据。
通常只有一行,代表街道地址:

<>之前好莱坞街1234号之前

但有时是这样的:

<>之前比佛利山庄购物中心好莱坞街1234号之前

其他时候是:

<>之前好莱坞街1234号Ste 12之前

其他时候是这样的

<>之前好莱坞街1234号2号楼(介乎好莱坞街与汤姆克鲁斯大道)之前我很想知道哪条线是街道地址。目前,我正在试图确定哪一行是"地址线2",意思是套房号、楼层号等……我真的不需要地址,第2行,但是通过消去过程,这可以帮助我得到街道地址。

是否有一个很好的工具可用,像一个regex函数或一些东西,将告诉我一个字符串是否可能是一个街道地址?

或者有其他方法可以处理这个问题吗?

谢谢!

编辑:

这个算法不需要100%。我正在准备地址要发送到谷歌地图API进行验证。我可以尝试每一行的地址,看看哪一个是有效的,但这将增加呼叫谷歌的次数,并带来一个小的,但有限的假阳性的机会。

我希望能够在通过谷歌验证之前稍微清理数据,以减少错误和更多调用的必要性。

正如另一个答案所述,这是一个地址验证服务的作业。请注意,Google maps API不是一个地址验证服务——它最好被描述为一个非常有能力的地址近似服务(有一个显著的区别)。

地址验证意味着当前地址是真实的,这意味着它对应于实际位置。它通常意味着地址是可交付的(取决于业务需要)。

我是地址验证公司SmartyStreets的软件开发人员。我们提供了一个批处理工具,我认为它非常适合您的用例。由于我们的系统最多接受两条街道地址输入行,因此我建议为每个有2条以上街道地址行的地址生成一些排列。它也非常快(在不到一个小时内处理100万个地址),并且不需要我们的任何交互,因为它是在线服务。

另一个好消息是,您甚至可能不需要将地址发送到谷歌地图API,因为它们已经经过了交付点验证。但这取决于你的具体需求。

更新: SmartyStreets现在提供国际地址验证。

有可用的web服务,你可以传递一个地址,它将返回解析地址的格式良好的json/xml对象。也许这样的东西会对你有帮助?就像一些评论说的那样。仅使用javascript

无法做到这一点

这是我个人研究过的一项服务。您需要熟悉api

https://webgis.usc.edu/Services/AddressNormalization/WebService/DeterministicNormalizationWebService.aspx

首先看一下以下USPS官方缩写
街道后缀缩写
二级单位标识符

然后你会有一个想法,你将期望什么作为输入,但你也必须采取所有可能的非官方变化/标点符号等....有很多事情要做……

一般来说,街道地址行应该以数字开头,后跟一个空格(将其与2nd floor等隔开),一个或多个单词,最后是街道后缀缩写。对于city, state, zip元组,您必须将完整的州名及其缩写(包括N York或N.York或N.York之类的短变体)混合在一起,并记住zip5和zip5+4的大小写