Рекомендации по продуктам могут быть сложной задачей для платформ электронной коммерции. Они могут быть особенно сложными, когда сезонный товарооборот высок или история просмотров пользователя ограничена. Здесь, в SSENSE, мы получаем постоянный поток модных брендов. Ежедневно загружаются сотни товаров, и мы стремимся обеспечить соответствие между продуктами. В этой статье я представляю простую технику обработки естественного языка (NLP) для создания рекомендаций по продуктам без предварительных данных о веб-активности, решая то, что часто называют проблемой холодного старта.

Мотивация

Важнейшим аспектом успешной стратегии розничной торговли является помощь покупателям в выборе нужных продуктов. Рассмотрим нового посетителя SSENSE, который смотрит на ту или иную обувь. Хорошей стратегией может быть порекомендовать несколько подходящих брендов обуви. В то время как рекомендации в магазине будут делаться лично, в розничном онлайн-бизнесе количество продуктов может исчисляться тысячами, а покупателей - миллионами. И хотя мы действительно предлагаем услуги электронной почты и чата, мы обращаемся к алгоритмам для большей части нашего вспомогательного сопоставления продуктов.

Как специалисту по обработке данных в SSENSE, мне интересно, что связывает воедино наш постоянно меняющийся инвентарь. Обычные пользовательские инструменты поиска в SSENSE включают строку поиска и сортировку по бренду, цене или давности. Цель каждого из этих инструментов - помочь покупателям сосредоточиться на желаемом продукте.

SSENSE недавно создала механизм рекомендаций по продуктам для своих клиентов. С точки зрения пользователя, этот механизм предлагает выборку из пяти релевантных продуктов, которые недавно просматривали другие, на основе текущего продукта, который они просматривают. Конкретные детали этого алгоритма выходят за рамки этой статьи, но его применение демонстрирует, что можно создать с помощью богатой совокупной истории поиска. Напротив, сложнее подключить релевантные продукты, когда они новые. А именно: вкладка «просмотрели другие» должна оставаться неактивной до тех пор, пока от пользователей не будет собрано достаточно данных.

Рекомендация: холодный старт

Отсутствие истории поиска новых продуктов затрудняет создание ссылок на существующие продукты. Согласно Пак и Чу, эта ситуация страдает из-за проблемы холодного старта […], когда не доступны исторические рейтинги элементов или пользователей. Точно так же, когда товара нет в наличии, мы сталкиваемся с той же проблемой, потому что история поиска устаревает.

Одно из решений - подумать о том, как можно кластеризовать продукты без каких-либо данных о веб-трафике, и вместо этого полагаться на другую информацию. Перед загрузкой нового продукта на ssense.com наша команда Studio уже вручную пометила его различными деталями, включая бренд, состав, категорию и цену. Доступ к этим данным можно получить через нашу базу данных, но они идентичны тем, которые пользователи видят на странице со списком продуктов. Используя методы обработки естественного языка, подробно описанные ниже, необработанный текст обрабатывается и группируется на основе его описательного сходства с другим текстом. Это особенно хорошо работает для SSENSE, потому что мы полностью контролируем стандарты именования. Это может быть сложнее, когда продукты описываются сторонним продавцом; например, как в случае с Craigslist или Kijiji.

Детали кластеризации текста

Я собрал массив текстовых описаний продуктов SSENSE в корпус и создал иерархию взаимосвязанности продуктов. Конкретно, я использовал пакет textmineR (язык R) для создания и управления Матрицей условий документа (DTM) для описаний продуктов. Сначала я объединил название продукта, бренд, состав и описание, чтобы создать один текст для каждого продукта. После этого я очистил корпус и удалил стоп-слова и числа, так что описание начинается так:

"French terry shorts in black. Mid-rise. Tonal drawstring at elasticized waistband. Three-pocket styling. Logo patch at back. Gunmetal-tone hardware. Tonal stitching. 100% organic cotton. Imported".

Становится это:

"french terry shorts black midrise tonal drawstring elasticized waistband threepocket styling logo patch back gunmetaltone hardware tonal stitching organic cotton imported"

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

"french terri short black midris tonal drawstr elastic waistband threepocket style logo patch back gunmetalton hardwar tonal stitch organ cotton import"

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

После обработки DTM используется для ранжирования частоты слов (или пар слов), встречающихся в тексте продукта, формально известной как n-граммы. Я выбрал единичные и биграммы (n = {1,2}), которые затем были переведены в значение Частота-термин, обратная частота документа (TF-IDF). Модель TF-IDF помогает оценить относительную важность появления слова по сравнению с другими словами в других группах. Такая обработка текстов в конечном итоге приводит к матрице расстояний, сравнивающей относительное сходство каждого из текстовых тел, где более близкая близость подразумевает большее сходство текста. Конечным результатом является то, что элемент можно без присмотра подключать к своим ближайшим соседям. Затем эту матрицу можно использовать для ранжирования описаний продуктов, наиболее похожих (наиболее близких) к данному продукту. Его также можно использовать для построения дендрограммы, из которой можно организовать кластеры продуктов.

Результаты кластеризации

Моим первым тестом было оценить способность этой схемы кластеризации текста сортировать случайно выбранные женские товары по четырем помеченным категориям: обувь, аксессуары, сумки и готовая одежда (RTW). Поэкспериментировав, я выбрал шесть кластеров для разделения продуктов - минимум, необходимый для разделения сумок и обуви.

Сравнивая четыре исходные категории, мы видим, что, за исключением первого кластера, каждая сгруппировала элементы в один из четырех отделов. Кластер 1 содержит набор аксессуаров и RTW, но его можно было бы дополнительно разделить, если бы было применено больше подгрупп. Таким образом, возможность сортировки товаров по тексту эффективна на самом высоком уровне. Смысл этого упражнения в том, чтобы показать, что если бы я попросил рекомендации по продукту, начиная с сумки, я бы порекомендовал другие сумки и так далее.

На практике следует выбирать рекомендации, выбирая пять ближайших соседей, имеющихся в наличии. Напомним, что цель этого упражнения - сопоставить не только рубашки с другими рубашками и т. Д., Но и наиболее похожие предметы в любой категории. На этой степени детализации нет подходящей метрики для оценки качества соответствия; нам нужно просто прийти к согласию на основе консенсуса, будут ли предложения «выглядеть правильно» (рекомендация пары брюк с рубашкой может быть уместной, а может и не быть уместной в зависимости от обстоятельств).

Примеры рекомендаций

Пришло время предложить несколько реальных продуктов, основанных на нашем сравнении текстов. На изображениях ниже крайний левый элемент является целью, а пять элементов справа - это предложения, ранжированные на основе схожести текстовых описаний, приведенных в предыдущем разделе.

Обувь

Одежда мужская и женская:

Мужские и женские пальто:

Аксессуары и сумки:

Думаю, мы можем согласиться с тем, что большинство предложений уместны, не так ли?

Выводы

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

Будущие направления

Многие реальные бизнес-приложения для списков продуктов могут быть созданы на основе обработки естественного языка. Еще одним побочным продуктом кластеризации текста является создание набора отличительных ключевых слов для каждого кластера, которые могут быть полезны для уточнения результатов внутреннего поиска или маркировки групп брендов. Возможно, хотя и непросто, использовать эту информацию для лучшего выбора ключевых слов в маркетинговых кампаниях (что совпадает с моими исследовательскими целями в SSENSE).

Наконец, мы можем улучшить наши рекомендации по холодному запуску. Предложения по продуктам можно повторно взвесить на основе их сходства по просмотрам страниц, цене или дате размещения. Можно даже использовать Google Trends для взвешивания списков на основе общего поискового интереса. Поскольку каждый текст продукта сопровождается набором изображений, более продвинутые приложения могут включать программное обеспечение для распознавания изображений, такое как Google Vision, с текстом нашего продукта. Я не первый, кто задумывается об этом; Комбинация визуальных элементов и текста была исследована компанией Element AI из Монреаля в недавнем сотрудничестве с SSENSE. Есть много областей для исследования. Посмотрим, что нас ждет в будущем!

Редакционные обзоры Hussein Danish, Deanna Chow, Liela Touré и Prateek Sanyal

Хотите работать с нами? Нажмите здесь, чтобы увидеть все открытые вакансии на SSENSE!