数据清理:我们可以使用常见排列库吗?还是有更好的方法?

时间:2010-03-17 04:54:44

标签: nlp match

我们正致力于清理和分析大量人为输入的客户数据。我们需要以编程方式决定2个地址(例如)是否相同,即使输入的数据略有不同。

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

至少,似乎我们的搜索替换值列表应该已存在于某个地方。

或许您可以建议一种完全不同且更优越的方法来检测匹配?

4 个答案:

答案 0 :(得分:3)

对于地址,您应该通过google的map api运行它们,并为每个地址获取一个地理编码。然后,如果地理编码是相同的,那么地方是相同的。我相信他们可以免费获得10k次点击/天/ ip。

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

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

答案 1 :(得分:1)

Soundex及其变体可能是一个良好的开端,与维基百科页面建议的其他方法一样。

答案 2 :(得分:0)

基本上你正试图找出两个字符串有多相似,并且有很多不同的方法来衡量它。骰子系数可以很好地适用于您正在做的事情,尽管它的操作成本有点高。

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

如果您想要更全面的字符串相似性度量列表,请尝试此处: http://www.dcs.shef.ac.uk/~sam/stringmetrics.html

答案 3 :(得分:0)

在工作中,我帮助编写验证地址的软件(适用于SmartyStreets)。

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

因此,您需要通过CASS认证的方法解决此问题。我会建议像LiveAddress API (for point-of-entry validation)Certified Scrubbing (for existing lists or databases of addresses)这样的内容。两者都经过USS的CASS认证,可以满足您的需求。