9

我正在使用 Java 6。我正在寻找一种自动解析地址的方法。我不关心地址是否存在。我发现的最好的东西是 JGeocoder (v 0.4.1),但是 JGeocoder 无法解析这样的地址

16th Street Theater, Berwyn Cultural Center,  6420 16th St.

有谁知道可以应对挑战的免费 Java 地址解析器?“解析”是指区分街道、城市、州、邮政编码和可能的场地名称的能力(上面的场地名称是“16th Street Theatre, Berwyn Cultural Center”)。

4

3 回答 3

7

更新:这个 StackOverflow 问题更详尽地涵盖了这个主题。


我在SmartyStreets工作,在那里我们解析和处理地址,我们有一个答案。这就是我们所说的“ SLAP ”或单行地址解析(或处理)。正式术语是命名实体识别 (NER)

我不是 Java 库方面的专家,但我知道任何内部实现都不会达到预期。以下是我帮助过的人以前遇到困难的一些常见原因:

  • 谷歌/雅虎!/Bing 地图网络服务不允许自动查询,也不验证解析地址的准确性。

  • 内部代码也只能做出最佳猜测,而无需了解现有地址(数据库)或其他类型的官方来源。我知道您想要一个可以在内部执行此操作的库,但您最多只能猜测...

  • 顺便说一句,正则表达式不是答案。我见过的解析地址的最佳正则表达式是通过数百行代码和几个类动态生成的。这是一团糟,并且仅对您期望的地址类型是正确的,而不是实际上存在的所有有效(美国)格式。

这是一项极其复杂的任务……除非您拥有正确的工具。我们的一项服务称为LiveAddress API,它与 Google Maps 类似,它解析地址并对其进行地理编码,但更进一步,它通过了 CASS 认证并仅返回有效地址,几乎不管输入格式如何。

我鼓励你自己做一些研究,但这可能是最有效和最可靠的方法。

于 2012-04-13T19:38:46.370 回答
3

https://code.google.com/p/usaddressparser/解析美国地址字符串并将其拆分为字段(号码、街道、套房、城市、zip 等)。Java jar 和源

于 2013-08-06T02:08:07.557 回答
0

如果允许使用网络服务,您可以尝试使用谷歌地图。

于 2012-04-13T19:11:34.513 回答