是否有可以解析这样的地址的Java解析器

Dav*_*ave 7 java parsing street-address

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

16th Street Theater, Berwyn Cultural Center,  6420 16th St.
Run Code Online (Sandbox Code Playgroud)

有谁知道一个可以应对挑战的免费Java地址解析器?"解析"是指能够区分街道,城市,州,邮政编码以及可能的地点名称(上述地点名称为"第16街剧院,伯温文化中心").

Mat*_*att 6

更新:StackOverflow问题更详尽地介绍了此主题.


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

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

  • 谷歌/雅虎!/ Bing Maps Web服务不允许自动查询,也不验证已解析地址的准确性.

  • 内部代码也可以在不知道现有地址(数据库)或其他种类官方来源的情况下进行最佳猜测.我知道你想要一个可以在内部完成这项工作的图书馆,但你最多可以猜到......

  • 顺便说一句,正则表达式不是答案.我见过的解析地址的最好的正则表达式是在数百行代码和几个类中动态生成的.这是一个烂摊子,只对你期望的地址类型是正确的,而不是所有有效的(美国)格式.

这是一项非常复杂的任务......除非你有合适的工具.我们的一项服务称为LiveAddress API,它类似于谷歌地图,因为它解析地址并对它们进行地理编码,但更进一步是通过CASS认证并返回有效地址,几乎无论输入格式如何.

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


Joh*_*anB 0

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

  • TOS 不允许自动查询。 (2认同)