Как посчитать «похожесть» номеров в паспортах. И найти одинаковые даже с опечатками

ojbcvvy4ujnpchb4ijnphfohrr8.jpeg

Продукты HFLabs ищут дублированных клиентов в базах федеральных компаний. Очевиднейший способ найти одинаковые клиентские карточки — сравнить паспорта или другие документы, удостоверяющие личность.

Раньше мы сравнивали номера документов строго: одинаковые — отлично, нет — извините. На ручной разбор из-за опечатки в номере уходили даже те карточки, у которых совпадали ФИО и адреса́ проживания. Такой подход излишне нагружал персонал заказчиков.

Поэтому мы с головой залезли в данные, изучили статистику и вывели критерии — когда разные номера действительно разные, а когда дело в опечатках. Рассказываю, как работает алгоритм.

Ввели коэффициент «похожести» номеров


Делить номера паспортов и прочих документов на «совпадают-не совпадают» — слишком грубое решение. Можно действовать тоньше и отлавливать простые ошибки.

Допустим, в компании работают такие правила поиска дубликатов (ДУЛ — документ, удостоверяющий личность):

  • «Полностью совпали ФИО, адрес и ДУЛ» — коэффициент дублирования — 100;
  • «Полностью совпали ФИО и ДУЛ» — 97;
  • «Полностью совпали ФИО и адрес» — 95
  • «Полностью совпали ФИО» — 80.


Автоматика объединяет карточки с коэффициентом выше 97. Остальное когда-нибудь разберут руками специальные люди — дата-стюарды. Если повезет и дойдет очередь.

Итог — в очереди на ручной разбор лежат вполне очевидные дубли. Даже те карточки, у которых ФИО и адреса совпадают, а номера паспортов отличаются распространенной опечаткой. Как в случае с 46 01 859473 и 45 01 859473 (клавиши 6 и 5 находятся рядом, их часто путают.) Дата-стюарды отвлекаются на простые опечатки, а реальные дубли выявляются медленнее.

Посмотрев на происходящее, мы научили свои продукты считать «похожесть» номеров в документах. Заказчики уже используют новый параметр в правилах автоматического объединения дублей.

Считаем «похожесть» по четким правилам


Сравнивая документы, алгоритм первым делом чистит номера от мусора. Оставляет только буквы и цифры: A—Z, А—ЯЁ, 0–9. А дальше начинается магия, ради которой я написал эту статью — расчет коэффициента «похожести».

Важная оговорка: коэффициент — не вероятность. Это число нужно, чтобы поделить дубли на группы с однотипными ошибками. Не важно даже, какова «похожесть» в абсолютном значении — это просто параметр сравнения номеров.

А теперь — к правилам расчета.

«Похожесть» берем параметром, когда ищем одинаковых клиентов


Новые правила уже использует банк федерального уровня — с помощью них там ищут дубли среди потенциальных клиентов. Следующей подключим крупную страховую.

При интеграции мы корректируем сценарии поиска дубликатов так, чтобы учитывать «похожесть» номеров в документах.

Вернемся к типичным правилам поиска дубликатов, я описал их в начале:

  • «Полностью совпали ФИО, адрес и ДУЛ» — коэффициент дублирования — 100;
  • «Полностью совпали ФИО и ДУЛ» — 97;
  • «Полностью совпали ФИО и адрес» — 95
  • «Полностью совпали ФИО» — 80.


Встраивая новые правила сравнения номеров, мы меняем сценарии поиска дублей у заказчика:

  • «Полностью совпали ФИО, адрес, ДУЛ» — 100;
  • «Полностью совпали ФИО, адрес, ДУЛ совпали на 90 и выше» — 98;
  • «Полностью совпали ФИО и ДУЛ» — 97;
  • «Полностью совпали ФИО и адрес» — 95;
  • «Полностью совпали ФИО» — 80.


Автоматика по-прежнему «склеит» все карточки с коэффициентом выше 97. Но при новых порядках на ручной разбор не уйдут карточки, которые отличаются лишь опечатками в номерах документов. Явные дубли мгновенно схлопываются, а дата-стюарды разбирают действительно сложные случаи.

Статья впервые вышла в блоге HFLabs.

© Habrahabr.ru