Цель использования обработки естественного языка в описываемом проекте — анализ обзоров на товары, оставленных онлайн-покупателями. 

Я начал работу над этим проектом для достижения трех бизнес-целей: 

  1. Найти основные компоненты рейтингов, используя неконтролируемое обучение для обработки естественного языка. 
  2. Предсказывать рейтинг товара с помощью контролируемого обучения, основываясь на конкретных отзывах. 
  3. Рекомендовать с помощью алгоритма схожести товары покупателям, основываясь на истории заказов. 

Используем набор данных из Kaggle, предоставленный Datafiniti. Более 70,000 отзывов на 1,000 товаров от 58,000 уникальных покупателей. 

Сфокусируемся на 2 колонках этого набора данных: 

  • Рейтинг отзывов по шкале от 1 до 5.
  • Сам текст отзывов, в котором покупатели свободно описывают, что им понравилось или не понравилось в товаре.

Как распределяются рейтинги?
Большинство покупателей остались довольны, 86% из них ставят оценки 4 и 5.

Распределение рейтингов от 1 (крайне недоволен) до 5 (очень доволен).

Какие слова люди используют в своих отзывах?
В заголовках слова ‘великолепно’ и ‘здорово’ появляются довольно часто. 

Облако слов для заголовков

Покупатели также много описывают ‘фильмы’ и ‘товар’, которые они купили. Довольно трудно классифицировать эти отзывы по осмысленным группам, используя неконтролируемое обучение. 

Облако слов для текста описания

Далее я сосредоточился на 5% всех отзывов от пользователей, которые действительно купили товар — я оцениваю эти отзывы как более подлинные и весомые. В этом наборе данных более 3,680 таких отзывов, и теперь можно произвести некоторый анализ. 

3,680 отзывов пользователей, купивших продукт

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

Топ-10 проданных продуктов

Это контейнеры для еды, заказанные почти 500 раз. Сам товар выглядит так:

Я отфильтровал все рейтинги с оценкой 5 звезд, чтобы найти 3 причины, почему людям нравится этот товар, и произвел латентно-семантический анализ (ЛСА), используя модель Count Vectorizer, в основном подсчитывая частотность слов. 

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

ЛСА неконтролируемой классификации в 3 темах с использованием Count Vectorizer

Как насчет плохих рейтингов? Я выполнил неотрицательное матричное разложение (НМР), используя TF-IDF Vectorizer, который придает больший вес редким словам.

Люди очень недовольны тем, что функция вакуумной упаковки работает плохо, ее хватает всего на один день. 

НМР неконтролируемой классификации в 2 темах с использованием TF-IDF Vectorizer

Резюме из облака слов дает свежую перспективу — многие из этих покупателей считают, что переплатили за товар. Бизнес может использовать эти данные для анализа.

Облако слов из отзывов недовольных покупателей

Можно ли использовать машинное обучение для предсказания рейтинга товара на основе этих комментариев? Люди могут читать и понимать комментарии и соотносить их с рейтингами. Как насчет машин?

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

Модель логической регрессии предсказывает рейтинг с точностью в 73%

Также можно сделать и рекомендации товаров. Бизнес может рекомендовать товары, основываясь на истории покупок и рейтингах, оставленных покупателем. 

Вот 3 похожих покупателя, в результате могут быть рекомендованы товары “пустого пространства”.

Рекомендация товаров “пустого пространства”

Например, “Джесс” купила несколько семейных фильмов. Применяя тот же алгоритм, модель рекомендует “похожие” фильмы — триллеры и анимационные фильмы. Бизнес может использовать эти результаты для стимулирования продаж. 

Рекомендации товара от модели машинного обучения

В итоге, обработка естественного языка может использоваться для:

  • описательной аналитики (неконтролируемое обучение);
  • предсказательной аналитики (контролируемое обучение);
  • нормативной аналитики (алгоритм схожести).

Код на Python описанного анализа доступны на моем GitHub

Читайте также:


Перевод статьи Black Raven: Natural Language Processing (NLP) to analyse product reviews by online shoppers

Предыдущая статьяВведение в модульное тестирование на Python
Следующая статьяВведение в каналы Golang