Автоматическое сопоставление данных продаж со справочниками товаров на базе ML-моделей
Задача
Автоматическое сопоставление сырых данных о продажах с записями в справочном каталоге товаров, с целью идентифицировать каждый товар и привязать его к корректной записи справочника.
Проблема
Исходные данные о продажах компаний-партнеров представляют собой неструктурированные текстовые описания товаров:
“iphone 15 pro max sim+esim 256GB blue”
“apple iphone 16promax 256 ГБ голубой”
При этом:
- Форматы описаний отличаются между поставщиками;
- Наборы характеристик неполные или смешанные (бренд, модель, объем памяти, цвет и т.д.);
- В справочниках встречаются дубликаты или неоднородность заполнения характеристик.
Необходимо построить систему, способную автоматически и с высокой точностью сопоставлять записи компании-партнера со справочником, минимизируя ручную проверку.
Особенности справочных данных
Справочник представляет собой иерархическую структуру:
- Категории высокого уровня: электроника, детские товары, авто, дом и т.д.;
- Продуктовые группы: смартфоны, ноутбуки, моторные масла, бытовая техника и др.;
- Характеристики внутри записей: бренд, модель, объем, цвет, технические параметры и пр.
Ключевая особенность — наличие большого количества схожих товаров с минимальными отличиями в описании, что требует дополнительной обработки данных для корректного связывания без потери точности.
Реализация решения
Для решения задачи реализован подход на базе машинного обучения (ML) и генеративных языковых моделей (LLM), обеспечивающий интеллектуальный анализ текстов и адаптивный скоринг характеристик.
1) Загрузка и предобработка данных
- Из исходных источников (БД или файлов) загружаются данные о товарах компании и справочник.
- Выполняется очистка и стандартизация текстов:
- Приведение к единому регистру;
- Удаление спецсимволов и стоп-слов;
- Нормализация форматов единиц измерения;
- Очистка дубликатов и неразделимых записей в справочнике.
Результат — подготовленные, унифицированные данные для анализа и обучения.
2) Извлечение характеристик с помощью LLM
Для каждого наименования товара из данных компании-партнера и справочника выполняется извлечение характеристик (атрибутов) при помощи генеративной языковой модели.
Модель автоматически определяет:
- бренд / производитель,
- модель / серия,
- объем / размер / цвет,
- дополнительные свойства, характерные для продуктовых групп:
- Processor/CPU/RAM/SSD в ноутбуках,
- размерность (Width/Height/Radius) в автомобильных шинах,
- диагональ в планшет и многие другие.
Эти данные формируют вектор признаков, который используется на следующих этапах.
3) Определение скоринговых функций
Для каждой характеристики выбирается функция скоринга — способ вычисления близости между характеристиками товара компании-партнера и справочника. Для некоторых характеристик могут использоваться несколько функций с последующим взвешиванием.
Примеры функций:
- текстовая схожесть по эмбеддингам (cosine similarity);
- числовая разница (например, объем памяти или объем упаковки);
- бинарное совпадение (например, наличие dual-SIM).
4) Формирование ключевых характеристик справочника
На основе статистического анализа справочника и имеющих связок товаров выделяются характеристики, наиболее разделяющие товары.
Для каждой характеристики рассчитывается ее информационная значимость (вес) — чем выше разделимость по признаку, тем больший вклад он вносит в итоговое решение.
Неразделимые записи в справочнике признаются дубликатами и могут объединяться.
Совокупный скоринг вычисляется как взвешенная сумма частичных скорингов с учетом весов характеристик. Основная цель совокупного скоринга ввести на множестве товаров аналог функции расстояния.

Пример результатов связывания сырых данных, посредством подсчета скорингов
5) Построение поисковой ML-модели
Полученных на предыдущих этапов функций скоринга уже достаточно, для связывания товаров со справочником. После предварительного поиска в похожих товаров в справочнике (с использованием векторной БД, например Qdrant), для принятия финального решения используется ML-модель.

Иллюстрация распределения значений скоринг функций для правильных и неправильных связываний товаров со справочника. Из нее видна невозможность применения простых подходов для принятия финального решения
Однако если сегментировать справочник, то можно повысить точность связывания. Для сегментации справочника можно применить классические подходы кластеризации с использованием построенной ранее совокупного скоринга. Логическим эквивалентом таких сегментов может быть выделение из всего множества смартфонов, только телефонов брэнда Apple. Применив к ним ML-модель отличную от общей, увеличится точность связывания.
6) Автоматическое обновление справочника
В процессе эксплуатации система периодически:
- пересчитывает статистику характеристик;
- добавляет новые товары в поисковую БД;
- корректирует ML-модели для финального связывания.
Это обеспечивает самообучение и адаптацию модели без необходимости постоянного участия аналитиков.
Инфраструктура - ML-сервер: GPU не менее RTX 4090 (24 GB)
- База данных Qdrant: HDD 200 ГБ+, RAM 16 ГБ+, 4 CPU+
- Пропускная способность на 1 сервер конфигурации : 100–150 тыс. записей/час.

Фиксация результатов
Результаты автомэтчинга сохраняются в базе данных:
- ID найденного элемента справочника;
- показатель релевантности(score);
- сопоставленные характеристики.
Для интеграции с внешними\внутренними системами возможны различные варианты: Rest API, Files (S3), DB (SQL/NoSQL), обеспечивающее получение автомэтчинга в реальном времени.
Результаты внедрения
- Повышение точности сопоставления до 95 %+ на пилотных группах;
- Сокращение доли ручной проверки более чем в 3 раза;
- Автоматическая обработка новых товаров без повторного обучения;
- Возможность масштабирования на десятки и сотни категорий.
Дальнейшее развитие
- Расширение набора скоринговых функций для новых типов характеристик;
- Автоматическая нормализация справочников с помощью LLM;
- Интеграция с поисковыми движками для гибридного поиска (ML + ElasticSearch);
- Развитие интерфейсов обратной связи для контроля качества сопоставлений.
