У меня большой файл административных данных, около 1 миллиона записей. В этом наборе данных отдельные люди могут быть представлены несколько раз. Около половины записей имеют идентификационный код, который связывает записи с отдельными лицами; для той половины, которая этого не делает, мне нужно нечеткое совпадение имен, чтобы отмечать записи, которые потенциально принадлежат одному и тому же человеку.
Изучив записи с идентификационным кодом, я составил список различий, которые произошли при записи имен одного и того же человека:
- Включение отчества, например Джон Сноу vs Джон Таргариен Сноу
- Включение второй фамилии, например Джон Сноу vs Джон Таргариен-Сноу
- Псевдоним / сокращение имени, например Джонатон Сноу vs Джон Сноу
- Изменение имен напр. Джон Сноу против Сноу Джон
- Ошибки / опечатки / варианты: например, Самуал / Самуэль, Моника / Моника, Рафаэль / Рафаэль
Учитывая типы совпадений, которые мне нужны, есть ли лучший подход, чем использование расстояния согласования () / levenshtein, который легко реализуется в R?
Изменить: согласование () в R не очень хорошо справляется с этой проблемой - из-за большого количества вставок и замен, которые мне нужно разрешить для учета способов записи имен по-разному, возникает много ложных совпадений .