2010-03-17 28 views
1

我们正在清理和分析大量人工输入的客户数据。我们需要以编程方式决定2个地址(例如)是否相同,即使输入的数据略有差异。数据清理:我们可以使用常见排列库吗?还是有更好的方法?

现在我们通过相当简单的字符串替换来运行每个地址(例如,用ave代替avenue),连接字段并比较结果。我们正在做一些类似的名字。

至少,我们的搜索替换值列表应该已经存在。

或者你可以建议一个完全不同的和优越的方式来检测匹配?

回答

1

Soundex及其变体可能是一个很好的开始,维基百科页面提出的其他方法也可能是一个好的开始。

3

对于地址,你应该通过谷歌的地图API来运行它们,并获得每个地理编码。然后,如果地理编码相同,则地点相同。我相信他们允许免费10k点击/天/ IP。

你不可能自己想出更好的东西。

http://code.google.com/apis/maps/

+0

谢谢,我认为这将会非常有用! – anyaelena 2010-03-17 05:16:34

+0

小心 - Google不会总是返回正确的结果,它只会做出最好的猜测。 – Matt 2012-01-23 22:23:45

0

基本上你试图找到两个字符串的相似程度,有很多不同的方式来衡量它。骰子系数对你所做的事情可以很好地工作,尽管它的操作成本很高。

http://en.wikipedia.org/wiki/Dice_coefficient

如果你想要的字符串相似性措施更全面的列表试一下: http://www.dcs.shef.ac.uk/~sam/stringmetrics.html

+2

也许我错过了一些东西,但不是“234 5th Avenue,2nd floor,New York NY 10002”和“234 7th avenue,2nd floor,NY York NY 10002”非常类似的字符串,但地址不同? – anyaelena 2010-03-17 05:15:10

0

在工作中我帮一个验证地址(SmartyStreets)编写软件。

地址验证是一项非常棘手的操作 - 实际上USPS已指定某些经过认证的公司提供此项服务。我不会推荐(即使我在你的鞋子里),你自己尝试这个。如前所述,Google会进行一些地址解析,但只有约为的地址。谷歌和雅虎以及类似的服务将而不是验证地址数据的准确性。

所以你需要一个CASS认证的方法来解决这个问题。我会建议像LiveAddress API (for point-of-entry validation)Certified Scrubbing (for existing lists or databases of addresses)。两者都通过美国邮政的CASS认证,并将按照您的要求进行。

相关问题