Введение

Отзывы клиентов в виде обзоров стали очень важной частью онлайн-бизнеса, поскольку они помогают понять эмоции пользователей по отношению к продукту. Интернет-сервисы для бизнеса, такие как обзоры Amazon, Google My Business, yelp, поиск по городу, предоставляют своим клиентам возможность предоставлять отзывы как свое мнение в виде текстовых данных, а также числовой рейтинг из 5. Эти отзывы от тысяч клиент действует как «онлайн сарафанное радио». Эти отзывы, данные потребителями или рецензентами, становятся критериями выбора продукта или услуги для новых или существующих клиентов, поскольку сверхурочные обзоры обеспечивают текущее качество предлагаемых услуг. В недавнем периоде несколько исследований показали, что эти отзывы оказывают как положительное, так и отрицательное влияние на бизнес из-за мнений, разделяемых клиентом на онлайн-платформе.

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

Набор данных

Набор данных, используемый в нашем проекте, предоставлен Yelp. Эта компания публикует обзоры краудсорсинга о различных деловых источниках. Набор данных, полученный от Yelp, огромен по объему. Он включает в себя пять файлов json для различных аспектов бизнеса, а именно: советы, регистрация, обзоры, пользователь, бизнес. Каждый из них хранится в файле json. Пользовательский набор данных содержит 1968703 записи с 22 функциями, набор бизнес-данных содержит 209393 записи с 14 функциями, обзорный набор данных содержит 80211222 с 9 функциями, набор данных подсказки содержит 1320761 запись с 5 функциями, контрольный набор данных содержит 175187 записей.

Файл бизнес-json имеет такие атрибуты, как идентификатор компании, название компании, местонахождение компании, звезды рейтинга, количество отзывов и информацию о том, открыт ресторан или нет, а также категории в качестве функции, которые включают информацию о различных типах. бизнес-данных, присутствующих в наборе данных.

Файл обзора json также имеет столбец атрибутов, а именно идентификатор обзора (указывает идентификатор обзора), идентификатор пользователя (указывает идентификатор пользователя, дающего обзоры), идентификатор бизнеса (указывает идентификатор другого бизнеса), он также имеет звездочку рейтинг как столбец и текст, в котором хранятся отзывы каждого человека.

Основные данные, используемые для построения модели машинного обучения в нашем проекте, представлены в бизнес-json и обзорном json-файле. Набор данных yelp добавляет бизнесу много ценности, поскольку данные из любой категории бизнеса можно использовать для понимания поведения человека по отношению к этому продукту. Следовательно, построение модели на таких данных может помочь бизнесу оставаться конкурентоспособным на рынке, предоставляя пользователю точные рекомендации на основе его настроений. Поэтому для нашего проекта мы будем использовать отзывы ресторанной категории бизнеса, которая насчитывает 5056227 записей. Из-за вычислительных ограничений в этой работе мы используем только 10000 записей для построения нашей модели. Целевая метка является бинарной, так как оценки выше 3 звезд помечаются как положительные отзывы, а любые другие оценки помечаются как отрицательные.

Предварительная обработка данных

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

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

Удаление ненужного столбца

Удаление сокращения из отзывов

Удаление цифр, спецсимволов и смайликов из отзывов

Удаление стоп-слов из обзора

Преобразование всего слова в нижний регистр

Выполнение лемматизации отзывов

Стоп-слова из набора данных обзоров были удалены с помощью библиотеки Python NLTK. Наиболее распространенные стоп-слова, такие как «я», «есть» и т. д., были удалены, поскольку они искажают результаты, но некоторые стоп-слова, такие как «не», «не» и т. д., не были удалены. Значение слова «Классификация настроений в данных Yelp» является решающим фактором, поскольку оно будет определять настроение отзывов, поэтому, если мы удалим слово «не» из «нехорошо» это преобразует предложение с отрицательным настроением в положительное. Поэтому некоторые стоп-слова не были удалены с помощью библиотеки NLTK при предварительной обработке данных, чтобы сохранить реальное настроение отзывов. Мы также выполнили лемматизацию обзоров с помощью библиотеки NLTK. Лемматизация — это метод преобразования слов в их леммовую форму. Например, слово «Ходить» будет преобразовано в «ходить». Этот процесс поможет в правильном анализе слов, которые присутствуют в обзорах, и целевая метка были преобразованы в двоичную форму (0: отрицательные отзывы, 1: положительные отзывы).

Визуализация данных

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

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

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

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

На приведенном выше графике показаны 20 лучших биграммных слов, которые встречаются как в положительных, так и в отрицательных отзывах о тексте. Из приведенного выше графика ясно видно, что биграммы более актуальны, поскольку мы видим, что слово «нехорошо» полностью встречается в отрицательных отзывах, тогда как слово «хорошая еда» появляется в основном в положительных отзывах о тексте. Следовательно, мы можем сделать вывод, что биграммные векторы слов могут быть одной из важных особенностей при построении моделей.

Разработка функций

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

Текстовая функция: после разделения набора данных для обучения и тестирования. Для преобразования текста в векторы использовались два важных метода разработки признаков.

  1. Частота термина, обратная частоте документа: это статистический подход в коллекции или корпусе. Этот метод определяет, насколько важным является слово в документе. Мы использовали TF-IDF для преобразования текста в числовое представление векторов. В нашем проекте мы использовали биграммный вариант TF-IDF, поскольку из графика биграммных слов мы можем сделать вывод, что эта функция может быть одной из лучших при прогнозировании результата.
  2. SpaCy. Второй метод разработки текстовых признаков, используемый для предсказания положительных и отрицательных отзывов, называется SpaCy. SpaCy — это метод встраивания слов, который используется для преобразования обзоров из набора данных в векторы. Используя модуль «en_core_web_lg» SpaCy, текстовые отзывы каждого пользователя токенизируются в слова, и из них создаются векторы. Затем эти векторы усредняются, чтобы получить 300-мерные числовые признаки, которые мы передаем в алгоритм машинного обучения.

Числовая характеристика.Числовая характеристика длины текста была разработана на основе отзывов клиентов.

Выполнение

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

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

Машина опорных векторов. Этот алгоритм снова использовался с функциями TFIDF и длины текста вместе с параметрами по умолчанию.

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

Чтобы преодолеть вышеуказанную проблему и построить точные модели, мы провели передискретизацию обучающих данных с использованием библиотеки imblearn, чтобы размер класса меньшинства мог соответствовать классу большинства.

Случайный лес. Этот алгоритм был обучен с использованием передискретизированного набора обучающих данных с функциями TFIDF и длины текста. Настройка гиперпараметров также выполнялась с использованием алгоритма поиска сетки, чтобы получить наилучшие параметры для модели.

Как мы видим, результаты модели случайного леса значительно улучшились. Модель смогла работать лучше для обоих классов целевой метки.

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

Результаты, полученные с помощью вышеуказанной модели, были удовлетворительными, поскольку она лучше работала для обоих классов целевой переменной. На самом деле, модель машины опорных векторов показала наилучшие результаты с показателем F1 90 процентов.

Вывод

Цель этого проекта состояла в том, чтобы построить прогностическую модель для классификации отзывов пользователей на положительные или отрицательные настроения. Мы строим две модели с разными сценариями. В первой модели использовались алгоритмы с их параметрами по умолчанию, и из-за проблемы дисбаланса в классах модель 1 работала плохо. Вторая модель была построена путем обучения различных алгоритмов машинного обучения после балансировки классов обучающего набора данных с различными функциями. Результат, полученный с помощью алгоритма машины опорных векторов из модели 2, был лучшим среди всех с функцией SpaCy и длины текста. Мы пришли к выводу, что, если данные могут быть правильно отобраны из отзывов, а также должна быть выполнена надлежащая разработка функций, чтобы получить хорошие результаты.

Ссылка на код: https://github.com/Abhijeet1026/Ml-Projects/blob/master/Sentiment%20classification%20on%20Yelp%20dataset.ipynb

Ссылки:

https://pubsonline.informs.org/doi/10.1287/mnsc.49.10.1407.17308

https://arxiv.org/pdf/1605.05362.pdf