2010-03-17 31 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認證,並將按照您的要求進行。

相關問題