Итак, существует ли какой-то алгоритм, который может дать процентное отношение к тому, насколько одна запись похожа на другую?
Алгоритмы, такие как Soundex и Edit Distance (как было предложено в предыдущем посте), могут решить некоторые из ваших проблем. Однако, если вы серьезно относитесь к очистке данных, этого будет недостаточно. Как утверждали другие, «Билл» совсем не похож на «Уильяма».
Лучшее решение, которое я нашел, - это использовать алгоритм сокращения и таблицу, чтобы сократить имена до корневого имени.
В свою обычную таблицу адресов добавьте корневые версии имен, например, Person (Firstname, RootFirstName, Surname, Rootsurname ....)
Теперь создайте таблицу сопоставления. FirstNameMappings (имя основного ключа, корневое имя)
Заполните таблицу сопоставления следующим образом: Вставьте ИГНОРИРОВАНИЕ (выберите «Имя», «НЕОПРЕДЕЛЕННО» в поле «Человек») в FirstNameMappings.
Это добавит все имена, которые у вас есть в вашей таблице людей, вместе с RootName "UNDEFINED"
К сожалению, теперь вам придется просмотреть все уникальные имена и сопоставить их с RootName. Например, «Билл», «Билл» и «Уилл» все должны быть переведены на «Уильям». Это очень трудоемко, но если для вас действительно важно качество данных, я думаю, что это один из лучших способов.
Теперь используйте только что созданную таблицу сопоставления для обновления поля «Rootfirstname» в вашей таблице Person. Повторите для фамилии и адреса. Как только это будет сделано, вы сможете обнаруживать дубликаты, не страдая от орфографических ошибок.
person
Tnilsson
schedule
02.09.2008