DaData.ru — сервис автоматической проверки, исправления и дедупликации контактных данных (ФИО, адресов, телефонов, email, паспортов).
У меня в телефоне 453 контакта. Среди них встречаются дубли: один и тот же человек записан то как «Леха», то как «Алексей Мегафон», а то и как «Зиновьев, Алексей Иванович». У Лехи указан скайп и день рождения, у «Алексея Николаевича» — емейл и основной мобильный номер, а у «Мегафона» — запасной номер от понятнокакого оператора.
В телефонных контактах дубли неприятны, но не особо напрягают. Хуже, когда такая чехарда начинается с клиентской базой компании.
Проблема
Когда контактные данные клиентов «размазаны» по нескольким Excel-файлам или базам данных, они усложняют жизнь:
- Непонятно, во сколько обходится клиент. В 2003 году Виктор Петрович обратился в «МойТвойСтрах» и застраховал жизнь, в 2007 году — автомобиль, а в 2012 — дом. В результате его три раза завели в учетные системы. Автоматически посчитать прибыли и убытки по Виктору Петровичу невозможно, сколько для него должна стоить страховка — непонятно.
- Рассылка превращается в кошмар. Маркетолог Вика вручную копирует и объединяет телефоны и емейлы из десятка эксель-файлов. Торопится, ругается, ошибается. Впопыхах теряет две тысячи контактов. Когда это выясняется, директор очень недоволен Викой.
- Взбешенные клиенты. У провайдера «Связьинтерком» клиенты дублируются в трех разных базах (компания работает 20 лет, накопила знатный ИТ-зоопарк). В результате клиент Федор раз за разом получает повторные рекламные письма, звонки и смс. Когда терпение Федора заканчивается, он уходит в «Гуттелеком».
Решение
Найти и
Кому пригодится:
- Маркетологу. Построить единый список клиентов из десятка excel-файлов — для рассылки или загрузки в CRM.
- Отделу продаж. Составить реестр ФИО и телефонов из нескольких баз — для телемаркетинга.
- Торговой компании. Найти одинаковые торговые точки от разных дилеров, сравнив по адресу — для правильного подсчета прибыли торговой точки.
- И, в конечном счете, — разработчику. Решить задачи бизнеса, не заработав седых волос и не убив на это лучшие годы жизни.
Проще, чем писать свой велосипед
Пффф, найти дубли, подумаешь. Вот, не благодарите:
address1 == address2
Ах да, могут же еще быть опечатки. Тогда так:
similarity (address1, address2) > 0.95
Ну-ка:
> similarity (
"мск сухонска 11/-89",
"сухонская, москва, 11 дом, кв89") > 0.95
False
Получается, данные сначала нужно нормализовать, привести к «каноническому» виду («мск сухонска 11/-89» > «127642, г Москва, ул Сухонская, д 11, кв 89»). И сравнивать с осторожностью, а то получится так:
> similarity (
"Москва, Тверская-Ямская 1-я, д 20",
"Москва, Тверская-Ямская 3-я, д 20") > 0.95
True # упс
А еще не забыть при поиске дублей:
- проверять по нескольким сценариям: ФИО + дата рождения + телефон, ФИО + адрес, адрес + телефон + email — чтобы не пропустить дубли, у которых часть полей не заполнена;
- придумать эффективный алгоритм, иначе сложность O(n2) на 100 тыс. клиентов даст ~?1010 сравнений клиентов между собой;
- различать «гарантированные» (можно автоматически объединять) и не гарантированные (сначала проверить вручную) дубликаты — иначе наобъединяете лишнего.
Не самое простое дело. А в Дадате все уже готово.
Точнее, чем проверять вручную
Люди часто ошибаются в адресах и телефонах, или пишут одно и то же по-разному:
г. Новосибирск, ул. Жемчужная, д. 2
жмчужная нск 2, подъезд 4
Советский район, Новосибирская область,
улица Жемчужная, дом 2, квартира 98
Поэтому вручную сравнивать клиентов тяжело: человек не воспринимает эти данные как одинаковые. Конечно, можно нанять 200 операторов, чтобы они прошерстили всю базу. Работать будут долго, обойдется дорого, а в результате все равно много дублей пропустят.
Дадата обработает 100 тысяч записей за полчаса и разобьет данные на три группы:
- уникальные: клиенты, которые есть только в одном экземпляре;
- похожие: люди со сходством по атрибутике, не недостаточно сильным, чтобы автоматически объединить;
- одинаковые: точно одни и те же люди.
Одинаковых Дадата объединит сама. А похожих лучше посмотреть вручную:
«Овчинников Федор, 12.10.1990, Самара Кирова 12» и «Fedor ovchinnikov, Samara, fedor@thefedor.ru» — один и тот же человек? Можно поднять историю его заказов и разобраться, Дадата здесь не поможет.
Как работает и сколько стоит
Дадата использует готовые алгоритмы сравнения ФИО, адресов и телефонов с учетом ошибок и опечаток. За восемь лет мы отладили их на проектах с крупными корпоративными заказчиками и теперь даем доступ всем.
Когда Дадата объединяет похожих клиентов, от каждого берет лучшее: ФИО, адрес, телефон. Если адресов или телефонов несколько, берет все. Одинаковые — объединяет в один.
Если клиенты недостаточно похожи, чтобы объединить, сообщает об этом:
Таких клиентов объединим Елена Баева, родилась 10.11.1990 г Москва, ул Норильская, д 17, кв 25 Елена Баева Нарильская мск, дом 17 кв25, этаж 4 |
А этих — нет (отец и сын) Алексей Ефремов, 18.06.1951 г Новошахтинск, ул Красных Зорь, д 7 Алексей Ефремов, 12.03.1976 г Новошахтинск, ул Красных Зорь, д 7 |
Работает с файлами, API пока нет. Напишите в комментариях, если нужно (и как стали бы использовать).
Стоит 25 копеек за запись в файле (10?000 записей = 2?500 рублей). Статистика по файлу и просмотр 100 записей — бесплатно. Попробуйте сами.
Комментарии (40)
Xazzzi
16.12.2015 13:57+22Продайте свои услуги спамерам, пожалуйста, а то ведь бывает по 4-5 одинаковых спам-писем за день, даже читать неинтересно.
dummy2002
16.12.2015 15:42А как Вы собираетесь получать согласие человека на обработку его персональных данных (согласно федерального закона «О персональных данных»)? Ведь если Ваш клиент и получил от своего абонента согласие на обработку его данных, но этот клиент никак не мог получить согласие на делегирование процесса обработки третьими лицами?
grossws
17.12.2015 02:41Часто такое разрешение даётся. Во многих бланках согласия на обработку есть стандартная формулировка, касающаяся передачи ПДн третьим лицам.
mtt
16.12.2015 17:11+3Если два брата-близнеца, Иванов Алексей Иванович и Иванов Александр Иванович проживают по одному адресу и имеют один домашний телефон, их система посчитает одинаковыми и сольет в один контакт?
algenon
16.12.2015 17:23+4Нет. Имя ведь отличается.
roboter
17.12.2015 16:49у моего сына имя и фамилия такая же :)
miwa
17.12.2015 20:56Даты рождения у вас разные — есть такое в статье.
ALIron
18.12.2015 11:31А такие случаи обрабатываете?
Научной базы маловато под статьёй. Крупнейшие компании есть в проектах, а всё исповедуется подход «Третий сорт не брак».
На выборках в 1000 записей сработает ключ уникальности «ФИО+Дата Рождения», а на стране — даже «ФИО+Дата рождения + Место рождения» не срабатывает иногда.
past
16.12.2015 17:33+2Было бы неплохо увидеть реализацию в виде приложения для андроид для дедупликации адресной киниги.
Geckelberryfinn
16.12.2015 17:39+1Ну да, классическая задача MDM =)
Свое решение под капотом используется, или от известного вендора, типа Quality Stage или MDM Server?
Если свое, то на основе какого подхода ищете дублоны? частотный анализ? нейросети?
Что с локализацией? есть ли правила для нормализации иностранных адресов?algenon
16.12.2015 18:00Свое (HFLabs), специализируемся на российских данных. Разбиваем все множество записей на сегменты, дальше внутри сегмента сравниваем кандидатов по куче сценариев. С учетом нюансов вроде разночтений в ФИО и частичной похожести адресов на уровне дроби-корпуса-строения-квартиры.
roman_kashitsyn
17.12.2015 11:20
amarao
17.12.2015 00:20+15Мне ваш сервис по профессии не нужен, но статья — идеальный образец того, как надо представлять свои продукты публике. Описание проблемной области, критика наивных решений, предложение собственного решения, цены/условия.
Супер.
PavelMSTU
17.12.2015 09:53Вот что будет в false-positive?
Клиент просто удалится из базы?..algenon
17.12.2015 11:48+1Сервис ничего из данных не удаляет. Возвращает два состояния входного набора данных: «до слияния» и «поcле слияния». В первом похожие и одинаковые записи сгруппированы, но не объединены. Во втором — одинаковые объединены.
До слияния:
После слияния:
xenohunter
17.12.2015 13:08+1Классный сервис! Не предусматриваете ли продажу или предоставление по подписке оффлайн-решения?
algenon
17.12.2015 14:19+1Спасибо! Да, есть оффлайн-версия (Фактор). Стоит сильно дороже, чем облачный вариант. Если интересно, пишите в личку, обсудим.
Envek
18.12.2015 19:46Ух ты! А на какой порядок цен ориентироваться, хоть примерно? Просто бывают бешеные заказчики, что живут в закрытых сетях, где интернетов отродясь не было. И вдруг им потребуется мало того, что распарсить адреса, что были напечатаны лапой макаки в безумстве, а ещё и загеокодировать… Блин, уже страшно :-) Коли такой случай возникнет, будем вас рассматривать.
datacompboy
Где гарантии, что эти данные вы не продадите кому?
reff
Вспоминая, например, утечку смс из Мегафона: «Где гарантии, что эти данные не утекут после взлома?».
algenon
Зарабатывать деньги на том, что приносишь клиентам пользу — намного круче, чем быть мерзкими упырями и обманывать людей (к тому же это противозаконно). На сайте реквизиты компании и оферта с условиями использования, там прописано, как мы обращаемся с данными.
evnuh
Если представить себя на месте таких ребят, то логика следующая «Мои клиенты чаще всего нарушают закон, отдавая нам на обработку персональные данные физ. лиц, т.к. почти всегда их согласие не спрашивается, ведь необходимо обработать форму ещё до того, как клиент сделал заказ. Плюс в оферте у меня написано:
4.1 Исполнитель не передает третьим лицам, и не использует иным способом, не
предусмотренным условиями договора, обрабатываемую информацию
Пользователя.
где „по условиям договора“ я могу делать всё, что хочу:
3.2 «Стандартизация»: сервис нормализации контактных данных —
автоматизированная обработка данных из файлов или посредством API без
участия Оператора.
Термин „обработка“ максимально широк, хоть саму передачу третьим лицам обещают не делать
Artima
Тот случай когда тебе предлагают отличный сервис, а он оказывается запрещен странным законом.
VolCh
Каким законом он запрещен?
Artima
Закон «О персональных данных», очевидно.