Классификация банковских операций

ЗАДАЧА
Снизить затраты на штат операционистов, увеличить объём документооборота и уменьшить количество ошибок классификации операций в банковских выписках.
Заказчику требовалось автоматически классифицировать операции из товарных строк банковских выписок. Нагрузка может достигать 60 000 операций в час. Срок обработки одной выписки не должен превышать часа.
РЕШЕНИЕ

Главной нашей задачей было автоматически определять типы операций со счётом в банковских выписках. Одна выписка может содержать до 10 000 операций различных типов. Всего существует 280 типов и множество правил определения каждого из них. Вместе с операционистами заказчика мы погрузились в доменную область и провели аналитику. Собрали распределение операций и выделили 111 типов, покрывающих 99,9% всех случаев. По результатам экспериментов был выделен 101 критерий определения типа, такие как: тип сделки, тип счета, валюта, описание назначения платежа и т. д.

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

В итоговой реализации:

  1. Сокращения и аббревиатуры расшифроваются при помощи словарей замен.
  2. Опечатки исправляются с помощью расстояния Левенштейна и корпусов доменной лексики.
  3. Транслит переводится на русский язык на основе 7 общих схем транслитерации и своего алгоритма обратной транслитерации.
  4. После перевода транслита проверка на ошибки и опечатки проводится ещё раз.

Так как модели плохо справляются с обработкой категориальных и числовых данных, все критерии преобразуются в вектор (embedding), отражающий контекст операции на языке понятном модели классификации. Векторы для текста получаются с помощью BERT-подобных языковых моделей, а для остальных критериев написано собственное решение. В итоге полученный вектор подаётся на вход модели классификации, которая и определяет тип операции.

Для повышения производительности системы вся ML-обработка переписана на. NET, используемый заказчиком. Наиболее частые операции кешируются, чтобы уменьшить число вызовов тяжёлых BERT-моделей.

Для приёмки системы мы собрали метрики существующего решения и сравнили их с качеством работы нашей системы на  тех же данных. А также выстроили систему мониторинга и расчёта online-метрик качества, используя подход human-in-the-loop: отслеживали ручное исправление типов операций, которые мы проставили.

Компания Byndyusoft подключилась к цифровой трансформации Инфинитум. Вместе мы сделали очень много. В работе ребят я оценил:
— знание и использование последних технологий
— методология разработки. Нравится, что исполнители не исполняют, а могут опросить заказчика
— коммуникативность
— готовность обучать наших разработчиков
— заинтересованность в работе и результате
— оперативность при решении орг. вопросов
Александр Круглов, начальник управления программных разработок Инфинитум
РЕЗУЛЬТАТ
  • Система прошла приёмку и интегрирована в бизнес-процесс заказчика.
  • Обрабатывается 99,9% процентов от всех операций.
  • Количество неклассифицированных операций уменьшилось с 8,86 до 2,23%.
  • Количество ошибок — с 0,19 до 0,11%.
  • На 1 инстансе с 2CPU и 4Gb оперативной памяти обрабатывается нагрузка в 8900 строк в час.
  • Для пиковых нагрузок реализован динамический скейлинг инстансов.
ВИДЕОРАССКАЗ О ПРОЕКТЕ