我們正在清理和分析大量人工輸入的客戶數據。我們需要以編程方式決定2個地址(例如)是否相同,即使輸入的數據略有差異。數據清理:我們可以使用常見排列庫嗎?還是有更好的方法?
現在我們通過相當簡單的字符串替換來運行每個地址(例如,用ave代替avenue),連接字段並比較結果。我們正在做一些類似的名字。
至少,我們的搜索替換值列表應該已經存在。
或者你可以建議一個完全不同的和優越的方式來檢測匹配?
我們正在清理和分析大量人工輸入的客戶數據。我們需要以編程方式決定2個地址(例如)是否相同,即使輸入的數據略有差異。數據清理:我們可以使用常見排列庫嗎?還是有更好的方法?
現在我們通過相當簡單的字符串替換來運行每個地址(例如,用ave代替avenue),連接字段並比較結果。我們正在做一些類似的名字。
至少,我們的搜索替換值列表應該已經存在。
或者你可以建議一個完全不同的和優越的方式來檢測匹配?
Soundex及其變體可能是一個很好的開始,維基百科頁面提出的其他方法也可能是一個好的開始。
對於地址,你應該通過谷歌的地圖API來運行它們,並獲得每個地理編碼。然後,如果地理編碼相同,則地點相同。我相信他們允許免費10k點擊/天/ IP。
你不可能自己想出更好的東西。
基本上你試圖找到兩個字符串的相似程度,有很多不同的方式來衡量它。骰子係數對你所做的事情可以很好地工作,儘管它的操作成本很高。
http://en.wikipedia.org/wiki/Dice_coefficient
如果你想要的字符串相似性措施更全面的列表試一下: http://www.dcs.shef.ac.uk/~sam/stringmetrics.html
也許我錯過了一些東西,但不是「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
在工作中我幫一個驗證地址(SmartyStreets)編寫軟件。
地址驗證是一項非常棘手的操作 - 實際上USPS已指定某些經過認證的公司提供此項服務。我不會推薦(即使我在你的鞋子裏),你自己嘗試這個。如前所述,Google會進行一些地址解析,但只有約爲的地址。谷歌和雅虎以及類似的服務將而不是驗證地址數據的準確性。
所以你需要一個CASS認證的方法來解決這個問題。我會建議像LiveAddress API (for point-of-entry validation)或Certified Scrubbing (for existing lists or databases of addresses)。兩者都通過美國郵政的CASS認證,並將按照您的要求進行。
謝謝,我認爲這將會非常有用! – anyaelena 2010-03-17 05:16:34
小心 - Google不會總是返回正確的結果,它只會做出最好的猜測。 – Matt 2012-01-23 22:23:45