Что брать за токен: одно слово, приложение или весь чек
Что проверяют
Понимаете ли вы, что токен это выбранная вами единица, а не данность. От неё зависят размер словаря, длина последовательностей, разреженность матрицы и, главное, какие связи модель вообще способна выучить. Пример с чеками нужен, чтобы увидеть, переносите ли вы приёмы обработки текста на транзакционные данные осознанно.
Как отвечать
Начать с задачи: рекомендации, прогноз следующей покупки, классификация наименований или поиск по каталогу. Ответ будет разным.
- работаем с текстом наименований: слово плохой токен для русского, словоформы, опечатки и сокращения раздувают словарь и дают много неизвестных слов. Практичнее подсловные схемы вроде BPE или Unigram, иногда символьные n-граммы;
- строим представления товаров: токеном становится товар, а чек играет роль предложения, как в обучении векторов слов, где контекстом служат остальные позиции того же чека;
- порядка внутри чека нет, поэтому окно контекста берут шириной с весь чек, а состав перемешивают;
- покупателя удобно считать документом: последовательность его чеков даёт долгосрочные предпочтения, в отличие от разовой корзины.
Отдельно скажите про иерархию: редкие позиции полезно сворачивать до категории или бренда, иначе длинный хвост не получит осмысленных векторов.
Где спотыкаются
Берут за токен весь чек целиком. Чеки почти не повторяются, словарь получается размером с выборку, и обобщать модели просто не на чем.
Второе: не описывают правила словаря. Нужны порог по частоте, отдельный токен для неизвестной позиции и фиксация словаря по обучающей выборке: собранный по всем данным словарь протаскивает в модель информацию из будущего.
Третье: проверяют качество случайным разбиением. Покупки упорядочены во времени, и модель, подсмотревшая поздние чеки при обучении, на отложенном по дате периоде показывает заметно худший результат, чем обещала валидация.