Так есть ли какой-то алгоритм
что может дать процент за то, как
похожа ли запись на другую?
Алгоритмы Soundex и Edit расстояния (как предложено в предыдущем посте) могут решить некоторые ваши проблемы. Однако, если вы серьезно относитесь к очистке ваших данных, этого будет недостаточно. Как утверждают другие, «Билл» не звучит как «Уильям».
Лучшее решение, которое я нашел, - это использовать алгоритм сокращения и таблицу для сокращения имен до их корневых имен.
В свою обычную таблицу адресов добавьте Root-версии имен, например,
Персона (Имя, Имя RootFirstName, Фамилия, Имя Rootsurn ....)
Теперь создайте таблицу сопоставления.
FirstNameMappings (первичное имя ключа, корневое имя)
Заполните таблицу сопоставления:
Вставьте IGNORE (выберите Имя, «НЕ УКАЗАНО» из Персона) в FirstNameMappings
Это добавит все имена, которые у вас есть в вашей личной таблице вместе с RootName "UNDEFINED"
Теперь, к сожалению, вам придется пройти через все уникальные имена и сопоставить их с RootName. Например, «Билл», «Билл» и «Воля» должны быть переведены как «Уильям»
Это очень много времени, но если качество данных действительно важно для вас, я думаю, что это один из лучших способов.
Теперь используйте вновь созданную таблицу сопоставлений, чтобы обновить поле «Rootfirstname» в вашей таблице Person. Повторите для фамилии и адреса. Как только это будет сделано, вы сможете обнаружить дубликаты, не страдая от орфографических ошибок.