- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Правило Коэффициент «похожести» Пример Комментарий
Полное совпадение 100
  • 46 07 324654;
  • 46 07 324654
Тут и говорить не о чем, все понятно
Трансграфика 100
  • АВ 4358333;
  • AB 4358333
Трансграфика — это когда символы одного алфавита заменяют на такие же из другого.

В первом случае символы кириллические, во втором — латинские.

Типичная безобидная опечатка

Одна распространенная опечатка 95
  • 50 16 631502;
  • 50 16 631602
Распространенная опечатка — это когда символы близко расположены на одном из цифровых блоков клавиатуры или схожи по написанию.

«Фактор» ищет распространенные опечатки по таблице «похожести» [2], которую собрали наши аналитики. (Лучше качать скорее, пока коллеги не заставили убрать ссылку)

Смена раскладки 94
  • AS 98787;
  • ФЫ 98787
Работает, если в одной строке только цифры и кириллица, а в другой — только цифры и латиница. Иначе не похоже, чтобы человек добросовестно ошибся с раскладкой
Замена римских цифр на арабские 93
  • XIX 987987;
  • 19 987987
Работает только в начале строки. Логика такая: «честные» римские цифры могут быть только в серии, а серия — только в начале
Одна нераспространенная опечатка 90
  • 1234 987987;
  • 3234 987987
Нераспространенная опечатка — та, что не входит в таблицу распространенных
Одна перестановка двух символов 90
  • 3554 463678;
  • 3554 466378
Типичная опечатка, тут и добавить нечего
Перепутаны пары символов 89
  • 12 34 987987
  • 34 12 987987
Работает только для серий длиной от четырех символов.

Считаем за опечатку, только если встретилась в начале строки. Это типичная ошибка операторов при вводе серии документа. И немудрено — на бланке серию печатают двумя парами цифр.

В середине и конце строки такие перестановки — ошибка

Один номер целиком входит в другой 88
  • 123456789;
  • 3456789
Этим сравнением мы отлавливаем случаи «потеряли серию».

Работает только для строк длиной от шести символов. Шесть символов — минимальная длина номера в известных нам документах.

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

Две любые опечатки 80
  • 15 02 478643;
  • 15 05 478648

Уже довольно близко к границе, но ошибки все еще походят на «честные» опечатки
Все остальные случаи 0
  • 46 07 987987;
  • 32 34 987987
Объяснять опечатками остальные расхождения опасно. Вероятность ошибиться слишком велика

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

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

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

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

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

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

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

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

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

Автор: DEADStop

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/algoritmy/343345

Ссылки в тексте:

[1] Продукты HFLabs: https://hflabs.ru/

[2] таблице «похожести»: https://fs.hflabs.ru/blog/CharacterMatchingTable.pdf

[3] в блоге HFLabs: http://blog.hflabs.ru/

[4] Источник: https://habr.com/ru/post/483348/?utm_campaign=483348&utm_source=habrahabr&utm_medium=rss