有没有Java解析器,可以解析这样的地址

有没有Java解析器,可以解析这样的地址

问题描述:

我正在使用Java 6.我正在寻找一种自动化的方式来解析地址。我不关心地址是否存在。我发现最好的办法是JGeocoder(V 0.4.1),但JGeocoder无法解析这样的地址有没有Java解析器,可以解析这样的地址

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

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

+6

祝你好运。这是一个众所周知的极其困难的问题,主要是因为地址格式的种类繁多。在80年代完成了很多这种类型的工作后,我可以保证没有完美的(甚至99%完美)解决方案。对于不同的国家,甚至是一个国家内的地区,您需要不同的解析规则,还需要一个大型的例外字典。如果您仅限于美国地址,美国邮政服务网站可能会提供帮助。 – 2012-04-13 19:35:19

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

+2

TOS不允许自动查询。 – Matt 2012-04-13 19:23:13

更新:此主题在this * question中有更详尽的介绍。


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

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

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

  • 内部代码也可以做出最好的猜测,但不知道现有地址(数据库)或其他类型的官方来源。我知道你想要一个图书馆,可以做到这一点在内部,但你最多可以猜测...

  • 顺便说一下,正则表达式是不是的答案。我已经看到解析地址的最好的正则表达式是通过数百行代码和几个类动态生成的。这是一团糟,并且只适用于期望的地址类型,并非实际存在的所有有效(美国)格式。

这是一项令人难以置信的复杂任务......除非您拥有合适的工具。我们的其中一项服务名为LiveAddress API,与谷歌地图类似,它解析地址并对其进行地理编码,但通过CASS认证并仅返回有效的地址,这几乎与输入格式无关。

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

+0

正如我担心的那样,这项服务并不是免费的。我没有把这个标记为正确的,只是我指定了我正在寻找一些免费的东西。不过,也许你会得到一些很好的促销,因为人们通过谷歌找到这个答案。 – Dave 2012-04-14 18:04:59

+0

其实它是免费的;如果您选择比默认值250 /月更高的查询限制,则只会花钱。但是,当然,你应该找到一些东西来满足你的需求。让我们知道你决定如果你找到别的东西! – Matt 2012-04-14 19:11:44

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

+1

看来这个项目页面已经创建,并且一行代码从未写过 – jordanpg 2015-01-09 15:14:23

+0

实际上,有代码,它只是埋在一个zip文件中 – slf 2015-03-31 18:55:28