Один поставщик присылает `цвет`, второй — `colour`, третий — `оттенок`, четвёртый пишет `цвет производителя`. Значения тоже разные: `графит`, `Graphite`, `серый тёмный`.

Пока товаров сто, редактор разберётся. На десяти тысячах ручное сопоставление становится отдельным производством. Атрибуты товара сначала нужно привести к одной внутренней схеме, иначе каждая новая партия поставщика добавляет ручное сопоставление.

Я бы делила нормализацию на три операции: понять, к какому canonical attribute относится входное поле, привести значение к внутреннему формату и только потом решать, нужно ли обогащать карточку. AI хорошо помогает с кандидатами. Источником факта он быть не должен.

Сначала нормализуйте схему, потом значения

`Вес`, `масса нетто` и `Net weight` могут указывать на один canonical attribute. Пока это не зафиксировано, сравнивать значения бессмысленно.

Я бы хранила mapping поставщик → supplier field → canonical field. У mapping есть статус: approved, suggested, rejected. Новый заголовок сначала получает candidate, затем при необходимости проходит проверку.

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

Проверяемые источники: GS1 — GS1 GDSN standards

Единицы измерения приводятся детерминированно

`500 g`, `0.5 kg` и `500гр` — одна масса, если исходные значения действительно означают одно и то же. Здесь не нужен свободный творческий AI.

После распознавания единицы работает таблица преобразований. Сохраняем original value, normalized value и unit. Если значение не парсится или единица неизвестна, строка уходит в исключение.

Так проще проверять и обратно объяснять результат. Редактор видит, что пришло от поставщика и какое правило применилось.

Проверяемые источники: GS1 — GS1 GDSN standards · Google Merchant Center — Product data specification

MEDIA FRAME · PLACEHOLDERИллюстрация будет добавлена позже
Атрибуты товара: как нормализовать характеристики от разных поставщиков с AI · временная заглушка

Controlled vocabulary сокращает хаос в текстовых атрибутах

Цвета, материалы, типы застёжек и совместимость часто приходят свободным текстом. Для фильтров и фидов нужен управляемый словарь.

AI может предложить, что `space gray` относится к canonical value `серый`, а original label сохранить для отображения. Но предложение проходит правила категории: допустим ли такой value, не потерялась ли важная характеристика, нужен ли отдельный оттенок.

Google Merchant data spec показывает, насколько формат и допустимые значения важны для товарных полей. Внутренний словарь лучше делать строже конкретного канала, а преобразование выполнять на выходе.

Проверяемые источники: Google Merchant Center — Product data specification · Google Search Central — Intro to Product structured data

AI выдаёт candidate mapping, а не новый факт товара

Если поставщик не указал материал, модель не должна уверенно дописывать `хлопок`, потому что похожие товары обычно такие. Это уже генерация факта.

Нормальный сценарий: AI сопоставляет входное поле или значение с известной taxonomy, возвращает candidate и основание. Данные остаются привязаны к supplier source.

Обогащение из отдельного подтверждённого источника возможно, но это другой pipeline со своей provenance. Я бы не смешивала его с нормализацией прайса.

Проверяемые источники: GS1 — GS1 GDSN standards

Confidence нужен для очереди, а не для украшения JSON

Уверенный exact mapping можно применять автоматически. Средний candidate отправить на выбор редактору. Низкий — не применять вообще и показать исходное поле.

Порог зависит от атрибута. Ошибка в декоративном оттенке и ошибка в совместимости детали имеют разную цену. Поэтому я бы ставила policies по категориям и полям, а не один confidence на весь каталог.

После решения редактора mapping пополняет dictionary. Следующая партия проходит быстрее. Именно так ручная работа уменьшается со временем.

Проверяемые источники: GS1 — GS1 GDSN standards · GS1 — Global Trade Item Number (GTIN)

Метрика потока — доля SKU, принятых без ручной переделки

Количество обработанных строк звучит красиво. Мне полезнее first-pass acceptance: сколько SKU прошло mapping, normalization и validation без ручного исправления.

Рядом смотрим top reasons для исключений: новый supplier field, неизвестная единица, конфликт словаря, пустой обязательный атрибут. Это готовый backlog улучшений.

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

Проверяемые источники: GS1 — GS1 GDSN standards · Google Merchant Center — Product data specification

Новые mappings лучше выпускать небольшими партиями

Если AI предложил тысячу новых сопоставлений, я бы не включала их все одним обновлением. Разделите по категории и confidence, проверьте выборку, затем примените approved batch.

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

Небольшие партии проще откатывать и анализировать. Масштабирование не требует большого взрыва изменений. Оно требует повторяемого цикла.

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

Результат проверки стоит сохранять как версию mapping rule. Тогда после изменения taxonomy видно, какая партия была обработана старым правилом и какие SKU нужно пересчитать.

Проверяемые источники: GS1 — GS1 GDSN standards · Google Merchant Center — Product data specification

Что проверить перед следующей партией

Что такое нормализация характеристик товаров?

Это приведение разных названий атрибутов, форматов, единиц и значений к единой внутренней схеме каталога. Исходное значение при этом лучше сохранять для проверки.

Можно ли полностью доверить нормализацию AI?

Я бы автоматизировала высокоуверенные mappings и оставила очередь для новых или рискованных значений. AI не должен придумывать характеристики, которых нет в источнике.

Как уменьшить ручную работу при новых поставщиках?

Сохранять подтверждённые mappings и словари, переиспользовать их для следующих партий и анализировать повторяющиеся причины исключений.

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

Следующие задачи в каталожном потоке для «атрибуты товара»: Контент-конвейер для тысяч SKU: как выстроить процесс без хаоса · QA карточек товаров: как проверять качество до публикации.