Я никогда не строил алгоритм для сопоставления до и не знаю, с чего начать. Итак, вот моя основная настройка и почему я это делаю. Не стесняйтесь исправлять меня, если я не задаю правильные вопросы.
У меня есть база данных имен и уникальных идентификаторов для людей. Некоторые сгенерированные идентификаторы (внутренне созданные и некоторые сторонние), фамилия, имя и дата рождения являются первичными, которые я буду использовать.
Несколько раз в течение года я получаю список от третьей стороны, которая должна быть импортирована и привязана к существующим людям в моей базе данных, но данные никогда не такие чистые, как мои. Идентификаторы могут меняться, даты рождения могут иметь опечатки, имена могут иметь опечатки, фамилии могут меняться и т.д.
Каждый импорт может содержать 20 000 записей, даже если он на 99% точнее, чем еще 200 записей, которые мне нужно будет делать вручную и соответствовать. Я думаю, что я ищу больше, чем 99,9% точности, когда речь заходит о том, чтобы сопоставлять входящих людей с моими пользователями.
Итак, как мне сделать алгоритм, который может понять это?
PS Даже если у вас нет точного ответа, но знаете некоторые материалы для ссылки, также будет полезно.
PPS Некоторые примеры будут похожи на то, что написал m3rLinEz:
ID: 9876234 Fname: Jose LName: Guitierrez Birthdate:01/20/84 '- Original'
ID: 9876234 Fname: Jose LName: Guitierrez Birthdate:10/20/84 '- Typo in birth date'
ID: 0876234 Fname: Jose LName: Guitierrez Birthdate:01/20/84 '- Wrong ID'
ID: 9876234 Fname: Jose LName: Guitierrez-Brown Birthdate:01/20/84 '- Hyphenated last name'
ID: 9876234 Fname: Jose, A. LName: Guitierrez Birthdate:01/20/84 '- Added middle initial'
ID: 3453555 Fname: Joseph LName: Guitierrez Birthdate:01/20/84 '- Probably someone else with same birthdate and same last name'