检测/解析文本中的邮件地址

时间:2011-02-24 02:23:47

标签: parsing nlp

是否有任何开源/商业库可以检测文本中的邮寄地址,就像Apple的Mail应用程序强调Mac / iPhone上的地址一样。

我一直在进行一些在线研究,这些想法似乎要么是使用谷歌,正则表达式,要么是完整的NLP软件包,比如斯坦福大学的NLP,这通常非常庞大。我怀疑iPhone里面有500MB的NLP包,或者每次你阅读电子邮件时连接谷歌。这让我相信应该有一个更简单的方法。太糟糕的UIDataDetectors不是开源的。

我知道之前已经问过这个问题,但没有确凿的答案,所以这是我的尝试。

4 个答案:

答案 0 :(得分:0)

解析地址不是一门科学。在我的办公室,我们多年来一直在处理地址解析,问题在于没有关于什么构成有效地址的规则。我们使用USPS地址数据库来清理地址,这实际上非常快,而且比我们自己能够获得的更准确。在我们获得大约90%的清理地址之前,它可以获得98%的准确率。

地址解析的更大问题往往是人们不以相同的方式输入地址。相同的地址可能采用以下所有形式。

128 P Beaumont St
东博蒙特街128号 128 E Bmt St
128 Beaumont Street
128 88号高速公路

第三个看起来完全错误,但人们有时会打字。有时街道也是高速公路。有很多可能性。只是尝试捕获90%并且你接受它与地址解析一样好。

答案 1 :(得分:0)

Extractiv提供由Language Computer Corporation支持的商业NLP,可以解析上传文档或网络爬网中的实体和关系。以前的服务使用REST API。我删除了这个URL,它提取了4/5的地址。注意,将它们串在一起会使它们特别困难。

在此JSON输出中搜索“address”: http://rest.extractiv.com/extractiv/?url=https://stackoverflow.com/questions/5099684/detect-parse-mailing-addresses-in-text&output_format=json

其中一个:

{
  "id": 11,
  "len": 17,
  "offset": 1557,
  "text": "128 E Beaumont St",
  "type": "ADDRESS"
},

(注意:如果您使用HTML输出,更多用于演示,它会过滤掉非句子内容,这就是我展示JSON的原因。)

免责声明:我在Extractiv工作。

<强> 更新 : Extractiv已不复存在。

答案 2 :(得分:0)

你可以通过提取地址然后将它们与USPS数据进行比较来实际获得极高的准确度。每年从USPS获取DVD肯定会有效,但不会考虑更改的地址。为此,您需要一个更新的版本。 USPS每月发布它的更新地址数据(以专有格式),这将是权威地址的良好来源。

最重要的是,使用地址验证服务(在您提取地址数据之后)将为您标准化地址,然后检查它们的可传递性和/或空缺状态。正如Drew所提到的,同一地址可以用许多不同的方式编写,但仍然有效。但是,USPS将始终使用标准化格式。

为了以编程方式执行您所需要的操作,您肯定需要API,尽管列表处理服务也可用。

SmartyStreets有一个名为LiveAddress的免费地址验证API,可以对任何美国邮政地址进行标准化,验证和验证。为了充分披露,我是SmartyStreets的创始人。

答案 3 :(得分:0)

对于Python,您可以尝试Pyap: https://pypi.python.org/pypi/pyap

目前支持美国和加拿大地址