Алгоритм поиска входящих контактов в справочнике

5 1

В ходе бизнес-процессов важна правильная идентификация организаций и персоналий (контактных лиц). Важно всю переписку и входящие документы связывать с соответствующей записью организации, а историю общения – с нужным контактным лицом. И не создавать дублей и «мусора» в справочниках. При занесении данных в систему важно правильно идентифицировать контактное лицо, чтобы история общения была целостной.

В каких ситуациях бывает нужно найти контактное лицо в бизнес-процессах:

  • получено входящее электронное письмо и необходимо сохранить переписку в системе DIRECTUM;
  • получено обращение на электронный адрес службы поддержки;
  • в результате распознавания документа получены данные, для которых нужно найти соответствие в справочнике Организаций/Контактных лиц;
  • сверить список email c ФИО, например, полученные по результатам анкетирования, с данными CRM-модуля.

Если мы автоматизируем процесс нахождения соответствия, то задача усложняется тем, что данные справочников, которые когда-то были получены, могут отличаться от данных последующего общения.

Например, вначале контакт указал только фамилию, имя и рабочий е-mail, а в следующий раз полное ФИО и личный e-mail. Название организации часто имеет множество вариантов сокращений. Организации меняют форму собственности и т.д. У человека может измениться место работы, электронный адрес и телефон. Могут встретиться однофамильцы даже в одной организации.

Итого мы пришли к созданию собственного алгоритма. В этой статье я поделюсь некоторыми находками решения для поиска контакта в системе DIRECTUM, имея данные по email, ФИО и наименованию организации.

Особенности поиска контакта

На входе вы можете иметь только электронный адрес контакта, а можете и более полную информацию – фамилию имя, возможно, отчество, название должности, телефон, название организации. Эти данные можно выделить из параметров письма и текста письма (подпись в тексте письма). Чем больше данных о контакте, тем точнее результаты поиска и тем больше способов найти его в системе.

Точность результатов поиска – это еще и наша степень доверия данным, полученным извне (от пользователя) и найденным данным в системе.

Мы исходим из следующей пирамиды данных и доверия к ним (см. рисунок). Чем ниже по пирамиде, тем больше данных, но меньше вероятность точного попадания при частичном совпадении.

Электронный адрес – наиболее доверительные данные, так как адрес проходит проверку на подтверждение. Если же мы получаем входящее письмо, то входящий адрес тоже имеет некоторый уровень доверия от передающего почтового сервера (если это не спам). Совпадение по email максимально сужает поиск.

Домен адреса электронной почты позволяет уточнить критерий поиска контакта – найти организацию. Это означает, что при большем количестве критериев поиска мы получим более точные результаты.

Наименование организации, должности и ФИО имеют невысокий уровень доверия, так как названия имеют очень много вариантов указания, в некоторых случаях пользователи намеренно указывают нереальные или заведомо ложные данные. При поиске по ФИО может быть очень много совпадений, и точность может быть только при поиске с ограничениями, например, по организации.

В соответствии с этими шагами построен алгоритм поиска. Если поиск получил достаточно точный результат, то он завершается, иначе переходит к следующему этапу.

На отдельных шагах поиска используется библиотека нечеткого поиска, который входит в функционал DIRECTUM Ario.

1 этап. По электронному адресу

По электронному адресу выполняем поиск записи в справочнике Контактные лица (КЛ) по полю Email. При наложении критерия по ФИО учитываем, что на входе ФИО может быть указано не полностью - без отчества, только с инициалами.

Результаты поиска:

  • Нашли КЛ (по e-mail). Найдено контактное лицо, у которого электронный адрес полностью совпадает;
  • Нашли КЛ (по e-mail и ФИО). Найдено несколько контактных лиц, у которых электронный адрес полностью совпадает, но ФИО совпадает с полем ФИО только у одного;
  • Нашли организацию (по e-mail). Найдено несколько контактных лиц одной организации, у которых электронный адрес совпадает с полем e-mail;
  • КЛ не найдено. Не найдено ни одного контактного лица по e-mail. Или найдено несколько контактных лиц по разным организациям, у которых электронный адрес совпадает с полем e-mail. Результат поиска нельзя считать точным, его нужно продолжить.

2 этап. По домену организации

Из электронного адреса выделить домен и выполнить поиск по данным карточки Организации: основной e-mail и web-сайт. При поиске исключаются популярные домены: yandex.ru, mail.ru, gmail.com, vk.com, rambler.ru, pochta.ru и т.п.

Результаты поиска:

  • Нашли КЛ (по домену организации и ФИО). Найдена организация с совпадающим доменом и найдено только одно контактное лицо, у которого ФИО совпадает с исходным ФИО;
  • Нашли организацию (по домену). Найдена организация с совпадающим доменом, но контактное лицо по ФИО не найдено;
  • КЛ не найдено. Не найдена организация с совпадающим доменом или найдено несколько организаций с исходным доменом. Результат поиска нельзя считать точным, его нужно продолжить.

3 этап. По домену электронного адреса контакта

Из электронного адреса контакта выделить домен и выполнить поиск по доменам электронных адресов карточек Контактных лиц. При поиске исключаются популярные домены: yandex.ru, mail.ru, gmail.com, vk.com, rambler.ru, pochta.ru и т.п.

Результаты поиска:

  • Нашли КЛ (по домену e-mail и ФИО). Найден контакт с совпадающим доменом, и найдено только одно контактное лицо, у которого ФИО совпадает с исходным ФИО;
  • Нашли организацию (по домену e-mail). Найдены контактные лица с совпадающим доменом, и все они принадлежат одной организации;
  • КЛ не найдено. Не найдено ни одного контактного лица с искомым доменом. Или по домену e-mail найдено несколько контактов по разным организациям с совпадающим доменом. Результат поиска нельзя считать точным, его нужно продолжить.

4 этап. По наименованию организации

Выполнить поиск по наименованию и юридическому наименованию организации. Поиск исключает кавычки. Поиск можно выполнять с помощью алгоритмов нечеткого поиска.

Результаты поиска:

  • Нашли КЛ (по наименованию организации и ФИО). Найдена организация с совпадающим наименованием и только одно контактное лицо с совпадающим с исходным ФИ(О);
  • Нашли организацию (по наименованию организации). Найдена организация с совпадающим наименованием;
  • КЛ не найдено. По наименованию не нашли организаций. Или по наименованию найдено несколько организаций с похожим наименованием. Или в результате нечеткого поиска организация найдена с невысокой вероятностью. Результат поиска нельзя считать точным, его нужно продолжить.

5 этап. По ФИО (нечеткий поиск)

Поиск по ФИО применяется, если на предыдущих шагах результат поиска по ФИО и e-mail был не достаточно точным или нет других данных кроме ФИО.

В нашем алгоритме этот этап применяется в ситуациях:

  • На предыдущих этапах поиска найдена организация, но еще не найдено контактное лицо;
  • Не найдено ни одного контактного лица по e-mail. Или найдено несколько контактных лиц по разным организациям, у которых поле e-mail совпадает с исходным;
  • Не найдено ни одного контактного лица с искомым доменом. Или по домену e-mail найдено несколько контактов с совпадающим доменом;
  • По наименованию не нашли организаций. Или по наименованию найдено несколько организаций с совпадающим наименованием. Или в результате нечеткого поиска организация найдена с невысокой вероятностью.
  • Нет других данных кроме ФИО.

Кроме того, на этом этапе применяются библиотеки нечеткого поиска из функционала Ario. Благодаря этому поиск может дать положительный результат даже при «сырых» входящих данных, когда ФИО указано с опечатками или не полностью (без отчества, только с инициалами). Например, по исходной фамилии Ивонов будет найдено контактное лицо Иванов.

Результат поиска будет выдан с показателем вероятности. Если исходные данные были неполные или неточные, то вероятность успешного поиска будет невысокая.

Дальнейшее развитие инструмента поиска

В дальнейшем алгоритм поиска можно улучшать. Например, анализировать вероятность точности результатов поиска для принятия решения по корректности найденных значений. Применяйте систему обучения вашей системы поиска.

* * *

В этой статье я поделилась некоторыми способами поиска контакта в системе. Поделитесь в комментариях, актуальна ли для вас задача поиска контакта в системе, какими способами вы пользуетесь для идентификации контакта в вашей системе DIRECTUM.

Елена Питомцева

Есть российский сервис dadata.ru, который может помочь исправить подобные данные, но в его использовании есть ряд минусов – не всегда политика организации разрешает использовать внешние сервисы, не всегда разрешается передавать подобные данные внешним сервисам, ну и, наконец, он платный.

Елена Питомцева: обновлено 24.01.2019 в 12:38

Авторизуйтесь, чтобы написать комментарий