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

时间:2012-04-13 19:08:22

标签: java parsing street-address

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

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

有没有人知道一个可以应对挑战的免费Java地址解析器?通过“解析”,我的意思是能够区分街道,城市,州,邮政编码,以及可能的地点名称(上述地点名称是“第16街剧院,伯温文化中心”)。

3 个答案:

答案 0 :(得分:6)

更新this StackOverflow question更详尽地介绍了此主题。


我为我们解析和处理地址的SmartyStreets工作,我们有一个答案。这就是我们所说的“SLAP”或Single-Line Address Parsing (or Processing)。正式用语是Named Entity Recognition (NER)

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

  • Google / Yahoo! / Bing Maps Web服务不允许自动查询,也不验证已解析地址的准确性。

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

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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