Мне удалось получить и очистить клиентов, но теперь я застрял в вопросе как мне следует находить и группировать дубликаты. Дубликаты определяются как объекты клиентов, которые имеют:
- один и тот же мобильный телефон, ИЛИ
- один и тот же адрес электронной почты
Объект 1
FName: Taylor
LName: Doe
Электронная почта: (пусто)
Мобильный телефон: 0400111222
Объект 2
FName: (пусто)
LName: Доу
Электронная почта: t.doe@gmail.com
Мобильный телефон: (пусто)
Объект 3
FName: Джон
LName: Смит
Электронная почта: john.smith@gmail.com
Мобильный телефон: 0400999888
Объект 4
FИмя: Тейлор
LИмя: Доу
Электронная почта: t.doe@gmail.com
Мобильный телефон: 0411222333
Объект 5
FИмя: Джо
LИмя: Смит
Электронная почта: john.smith@gmail.com
Мобильный телефон: 0400999887
Объект 6
FName: (пусто)
LName: (пусто)
Электронная почта: taylor.d@gmail.com
Мобильный телефон: 0400111222
Объект 7
FName: Тейлор
LName: Доу
Электронная почта: taylor.d@gmail.com
Мобильный телефон: 0411222333
Объект 8
FИмя: Джейн
LИмя: Джонсон
Электронная почта: jj@gmail.com
Мобильный телефон: 0400789789
Алгоритм должен группировать объекты 1, 2, 4, 6 и 7 вместе, поскольку существует общий адрес электронной почты ИЛИ общий мобильный телефон, который связывает их вместе. Объекты 3 и 5 должны быть сгруппированы вместе, так как у них есть общий адрес электронной почты, а у объекта 8 не обнаружено дубликатов.
Все остальные параметры, такие как имя и фамилия, игнорируются, поскольку при просмотре данных клиенты довольно часто пишут свои данные с ошибками. Первоначально система, в которой хранятся эти данные, не заставляла клиентов вводить информацию, поэтому у некоторых контактов отсутствуют имена, адреса электронной почты или мобильные телефоны (именно поэтому мы рассматриваем мобильную электронную почту ИЛИ, а не мобильную И электронную почту). В какой-то момент это было обновлено, чтобы гарантировать, что оба поля заполнены, но в старых контактах с клиентами данные по-прежнему отсутствуют.
Как лучше всего это сделать? Важно отметить, что при первоначальном извлечении данных из источника будет создано около более 46 000 клиентов, которых необходимо отсортировать.
Конечный формат группировки в настоящее время не определен - будь то список объектов, хэш-набор, словарь и т. д., это не имеет особого значения. Какой бы алгоритм ни работал, мы можем настроить другие процессы для считывания результата.
Основываясь на некоторых быстрых исследованиях, я думаю, что иерархическая кластеризация может быть вариантом... Может ли кто-нибудь потенциально дать некоторое представление о том, с чего лучше всего начать? Просто немного теряюсь, в каком направлении смотреть.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... email-or-m
Мобильная версия