2010-03-17 3 views
1

Мы работаем над очисткой и анализом множества данных о человеческих данных. Мы должны решить программно, являются ли 2 адреса (например) одинаковыми, хотя данные были введены с небольшими изменениями.Очистка данных: существуют ли библиотеки общих подстановок, которые мы можем использовать? Или есть лучший подход?

Прямо сейчас мы запускаем каждый адрес через довольно упрощенную замену строк (например, заменяя проспект пр.), Объединяем поля и сравниваем результаты. Мы делаем что-то подобное с именами.

По крайней мере, кажется, что наш список значений для замещения поиска уже должен существовать где-то.

Возможно, вы можете предложить совершенно другой и лучший способ определить соответствия?

ответ

1

Soundex и его варианты могут быть хорошим началом, как и другие подходы, предложенные на этой странице в Википедии.

3

Для адресов вы должны запустить их через карту api google и получить геокод для каждого из них. Тогда, если геокоды одинаковы, то место будет одинаковым. Я считаю, что они разрешают 10k хитов/день/ip бесплатно.

Вряд ли вы придумаете что-нибудь лучшее по своему усмотрению.

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

+0

спасибо, я думаю, это будет действительно полезно! – anyaelena

+0

Осторожно - Google не всегда будет возвращать ПРАВИЛЬНЫЕ результаты, это только делает наилучшую возможность. – Matt

0

По сути вы пытаетесь найти, как аналогичные две строки и есть много различных способов его измерения. Коэффициенты Dice могут работать достаточно хорошо для того, что вы делаете, хотя это немного дорогостоящая операция.

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

Если вы хотите получить более полный список мер подобия строк попробовать здесь: http://www.dcs.shef.ac.uk/~sam/stringmetrics.html

+2

Возможно, я что-то пропустил, но не «234 5th avenue, 2-й этаж, New York NY 10002» и «234 7-й проспект, 2-й этаж, Нью-Йорк NY 10002» очень похожие строки, но разные адреса? – anyaelena

0

На работе я помогаю программное обеспечение для записи, которая проверяет адреса (SmartyStreets).

Проверка адреса - действительно сложная операция - на самом деле USPS назначил определенные компании, которые сертифицированы для предоставления этой услуги. Я бы не рекомендовал (даже если бы я был на твоем месте), что ты попытаешься это сделать самостоятельно. Как уже упоминалось, Google выполняет разбор парсера, но только составляет. Google и Yahoo и аналогичные услуги будут не проверить точность адресных данных.

Для решения этой проблемы вам понадобится CASS-Certified. Я бы предложил что-то вроде LiveAddress API (for point-of-entry validation) или Certified Scrubbing (for existing lists or databases of addresses). Оба сертифицированы CASS USPS и будут выполнять то, что вам нужно.