Классификация банковских операций
Главной нашей задачей было автоматически определять типы операций со счётом в банковских выписках. Одна выписка может содержать до 10 000 операций различных типов. Всего существует 280 типов и множество правил определения каждого из них. Вместе с операционистами заказчика мы погрузились в доменную область и провели аналитику. Собрали распределение операций и выделили 111 типов, покрывающих 99,9% всех случаев. По результатам экспериментов был выделен 101 критерий определения типа, такие как: тип сделки, тип счета, валюта, описание назначения платежа и т. д.
При работе с выписками основной сложностью было отсутствие единого формата заполнения назначения платежа. Оно может быть заполнено на русском или английском языках, транслитом, с использованием сокращений и аббревиатур, содержать ошибки и опечатки.
В итоговой реализации:
- Сокращения и аббревиатуры расшифроваются при помощи словарей замен.
- Опечатки исправляются с помощью расстояния Левенштейна и корпусов доменной лексики.
- Транслит переводится на русский язык на основе 7 общих схем транслитерации и своего алгоритма обратной транслитерации.
- После перевода транслита проверка на ошибки и опечатки проводится ещё раз.
Так как модели плохо справляются с обработкой категориальных и числовых данных, все критерии преобразуются в вектор (embedding), отражающий контекст операции на языке понятном модели классификации. Векторы для текста получаются с помощью BERT-подобных языковых моделей, а для остальных критериев написано собственное решение. В итоге полученный вектор подаётся на вход модели классификации, которая и определяет тип операции.
Для повышения производительности системы вся ML-обработка переписана на. NET, используемый заказчиком. Наиболее частые операции кешируются, чтобы уменьшить число вызовов тяжёлых BERT-моделей.
Для приёмки системы мы собрали метрики существующего решения и сравнили их с качеством работы нашей системы на тех же данных. А также выстроили систему мониторинга и расчёта online-метрик качества, используя подход human-in-the-loop: отслеживали ручное исправление типов операций, которые мы проставили.

— знание и использование последних технологий
— методология разработки. Нравится, что исполнители не исполняют, а могут опросить заказчика
— коммуникативность
— готовность обучать наших разработчиков
— заинтересованность в работе и результате
— оперативность при решении орг. вопросов
- Система прошла приёмку и интегрирована в бизнес-процесс заказчика.
- Обрабатывается 99,9% процентов от всех операций.
- Количество неклассифицированных операций уменьшилось с 8,86 до 2,23%.
- Количество ошибок — с 0,19 до 0,11%.
- На 1 инстансе с 2CPU и 4Gb оперативной памяти обрабатывается нагрузка в 8900 строк в час.
- Для пиковых нагрузок реализован динамический скейлинг инстансов.