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

Parsing 检测/解析文本中的邮件地址,parsing,nlp,Parsing,Nlp,是否有任何开源/商业库可以检测文本中的邮件地址,就像苹果的邮件应用程序在Mac/iPhone上的地址下划线一样 我一直在做一些在线研究,他们的想法似乎是要么使用Google、Regex,要么使用一个完整的NLP软件包,比如斯坦福大学的NLP,这通常是相当大的规模。我怀疑iPhone有一个500MB的NLP软件包,或者每次你读邮件时都会连接到谷歌。这让我相信应该有一个更简单的方法。可惜UIDataDetector不是开源的 我知道以前有人问过这个问题,但没有结论性的答案,所以我来试试。解析地址不是

是否有任何开源/商业库可以检测文本中的邮件地址,就像苹果的邮件应用程序在Mac/iPhone上的地址下划线一样

我一直在做一些在线研究,他们的想法似乎是要么使用Google、Regex,要么使用一个完整的NLP软件包,比如斯坦福大学的NLP,这通常是相当大的规模。我怀疑iPhone有一个500MB的NLP软件包,或者每次你读邮件时都会连接到谷歌。这让我相信应该有一个更简单的方法。可惜UIDataDetector不是开源的


我知道以前有人问过这个问题,但没有结论性的答案,所以我来试试。

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

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

博蒙特东街128号
博蒙特东街128号
128 E Bmt St
博蒙特街128号
128 88号公路

第三个看起来完全错了,但人们有时会打出来。有时街道也是公路。有很多可能性。只要试着抓住90%,你就会接受这是地址解析的最佳结果。

提供了商业NLP,它可以解析上传文档或网络爬网中的实体和关系。前一个服务使用RESTAPI。我加入了这个URL,它提取了4/5的地址。请注意,将它们像那样串在一起会使它们特别困难

在此JSON输出中搜索“地址”:

其中一项:

{
  "id": 11,
  "len": 17,
  "offset": 1557,
  "text": "128 E Beaumont St",
  "type": "ADDRESS"
},
(注意:如果您使用HTML输出,这更适合演示,它会过滤掉非句子内容,这就是我显示JSON的原因)

免责声明:我在Extractiv工作

更新
Extractiv已不复存在。

通过提取地址,然后将其与USPS数据进行比较,您实际上可以获得Drew提到的极高精度。每年从美国邮政局获得一张DVD肯定会奏效,但不会考虑地址的变化。为此,您需要一个更为最新的版本。USPS每月发布更新的地址数据(以专有格式),这将是权威地址的良好来源

除此之外,使用地址验证服务(在您提取地址数据后)将为您标准化地址,然后检查其可交付性和/或空缺状态。正如Drew提到的,同一个地址可以用许多不同的方式书写,但仍然有效。但是,USPS将始终使用标准格式

为了以编程方式完成所需的工作,您肯定需要一个API,尽管列表处理服务也可用


SmartyStreets有一个名为的免费地址验证API,它将标准化、验证并验证任何美国邮政地址。为了充分披露,我是SmartyStreets的创始人。

至于Python,您可以尝试Pyap:


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

你们使用任何工具/lib还是自己编写的?你能给我一些提示吗?在这一点上,90%对我们来说已经足够了。顺便说一句,我在Apple Mail中输入了你的样本,只检测到了1、2和5个。我不订购,但我们每年都会从邮局收到一张新的DVD,上面有美国的所有地址。看看这一页,因为我认为我们得到的是AIS数据。嘿,约翰,我看过《采掘》杂志,它看起来真的很酷。尽管我们正在寻找更多的库来与之集成,但我也希望探索抽取式。你能给我发电子邮件到“drew{at}venarc{dot}com”吗?这样我们就可以讨论这个问题了?我还想说,你每天可以用Extractiv免费处理多达1000个文档。从链接的网站上:“Extractiv不再可用。”嘿@JohnLehmann,这听起来像是我正在寻找的服务。。。代码在什么地方还可用吗?不,服务不存在了。