Авторы: Исабель Гонсалес Рико, Али Арефазад, Анупама Погаку и Акшай Ганеш

Страница Github с кодом: https://github.com/ysabelgr/Yelp-restaurant-reviews.git

Yelp — лучшее приложение, когда дело доходит до отзывов о еде; клиенты могут поделиться своим опытом в отношении ресторанов, и любой может прочитать их. Учитывая, что 60% потребителей в настоящее время читают онлайн-обзоры, прежде чем пойти поесть, возможно, всем ресторанам пора начать заботиться о том, что говорится в Интернете; и, в частности, об их обзорах Yelp.

Для нашего финального проекта по обработке естественного языка мы решили провести обзорный анализ 4 ресторанов с наибольшим количеством отзывов на Yelp в Ирвине, Калифорния. Места следующие: Din Tai Fung, Cream Pan, Gen Korean BBQ House и Habana.

Цели

  1. Получите более полное представление о рецензентах и ​​отзывах
  2. Определите положительные, нейтральные и отрицательные отзывы на основе их содержания
  3. Определите самые популярные темы в положительных и отрицательных отзывах
  4. Предоставлять действенные рекомендации ресторанам

Данные

У нас есть веб-сайт Yelp, чтобы получить отзывы о четырех ресторанах с наибольшим количеством отзывов в Ирвине. Мы выполнили веб-скрейпинг на Python с помощью пакета BeautifulSoup. Окончательный набор данных содержит более 20 000 строк со всеми четырьмя отзывами о ресторанах и 6 другими атрибутами, включая имя пользователя, местоположение пользователя, дату создания отзыва, количество звезд, которые пользователь дал ресторану, содержание отзыва и количество друзей. у пользователя есть.

Вот как выглядит набор данных после его очистки и создания новой переменной для состояния и количества слов в обзоре:

Методология

Исследовательский анализ данных

Сначала мы начнем с проведения исследовательского анализа данных (EDA) в наборе данных, чтобы лучше понять распределение звездных рейтингов, откуда пришли пользователи и т. д.
Мы будем использовать звездный рейтинг (от 1 до 5 звезд). для оценки настроения/впечатления клиента от ресторана.

  • Средний звездный рейтинг каждого ресторана за последние 10 лет

На следующем графике показан средний звездный рейтинг каждого из 4 ресторанов за последние 10 лет. Мы заметили, что рейтинг Cream Pan был довольно стабильным и оставался между 4,4 и 4,7. Однако с годами в Gen Korean BBQ House произошли некоторые колебания. Мы наблюдаем, что с 2020 года по настоящее время их средний рейтинг значительно снизился с почти 4,4 до 3,6.

  • Распределение звезд

На круговой диаграмме слева показано распределение звезд, присвоенных рецензентами всем ресторанам вместе взятым. Как мы видим, более 75% отзывов имеют рейтинг 4 или 5 звезд. Если мы посмотрим на распределение звезд для каждого ресторана, то заметим, что у Cream Pan самый высокий процент 5-звездочных отзывов (70%), а у Gen Korean BBQ House самый высокий процент 1- и 2-звездочных отзывов (15%).

  • Местонахождение рецензентов

Затем мы посмотрели, откуда рецензенты. Не к нашему удивлению, почти 90% рецензентов живут в Калифорнии, в частности, рядом с ресторанами. Ниже мы можем увидеть 10 лучших городов. Кроме того, Техас, Нью-Йорк, Невада и Аризона являются штатами с наибольшим количеством рецензентов после Калифорнии.

  • Количество друзей и количество слов в отзывах

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

Облака слов

На следующем этапе нашего проекта мы создали облака слов для визуализации содержания обзоров и наиболее часто используемых слов. Мы удалили такие слова, как «the», «a», «and» и т. д. Ниже мы видим облако слов для каждого из четырех ресторанов.

Анализ настроений

Мы начали наш анализ настроений, пытаясь предсказать, сколько звезд содержит отзыв (от 1 до 5). Однако результаты оказались не очень точными. Поэтому мы решили попробовать спрогнозировать 2 класса вместо 5: положительный отзыв настроения и отрицательный отзыв настроения. Мы определили, что отрицательным отзывом о ресторане будет отзыв с 1 и 2 звездами, а положительным — 4 и 5 звезд.

Мы использовали четыре разных метода для прогнозирования настроений в обзорах: Bag of Words, TF-IDF, TextBlob и Vader.

  • Мешок слов

Чтобы предсказать количество звезд на основе содержания обзора, мы использовали четыре разные модели для Bag of Words: логистическая регрессия, SVC, дерево решений и случайный лес. Во-первых, мы считали нашей целевой переменной количество звезд (1, 2, 3, 4 и 5 звезд). Для всех этих моделей точность была менее 67%. Таким образом, мы пришли к выводу, что нам нужен другой подход для повышения точности.

Чтобы преодолеть низкий уровень точности, мы отказались от отзывов с тремя звездами и рассмотрели отзывы с одной и двумя звездами как 0 (плохой отзыв), а отзывы с четырьмя и пятью звездами как 1 (хороший отзыв). Затем мы попробовали те же четыре модели с нашим новым набором данных. Наша окончательная точность (оценки F1) превысила 90%. Эти модели могут быть полезны при анализе нашего набора данных, поскольку мы можем предсказать окончательное мнение клиентов о ресторане на основе отзывов, которые оставляет человек.

  • TF-IDF

Еще одна мера, которую мы использовали для анализа настроений, — это TF-IDF (частота терминов — обратная частота документа). Эта числовая статистика представляет собой вес, используемый для оценки того, насколько важно слово для корпуса. Важность возрастает пропорционально количеству раз, которое слово встречается в документе, но компенсируется частотой этого слова в корпусе.

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

Мы настроили следующие параметры функции TfidfVectorizer():

  • ngram_range=(1,3) → Включить униграммы, биграммы и триграммы
  • нижний регистр = True → преобразовать все символы в нижний регистр
  • min_df=5 → Игнорировать термины, частота документа которых меньше 5
  • max_df=0,7 → Игнорировать термины, частота документа которых превышает 70% словарного запаса.

Ниже приводится сводка результатов для различных алгоритмов:

Наши три самые эффективные модели — это AdaBoost, полиномиальная NB и логистическая регрессия. Со временем мы хотели бы дополнительно настроить наши параметры и попытаться еще больше повысить точность тестирования.

  • TextBlob

TextBlob — это библиотека Python, предлагающая простой API для доступа к своим методам и выполнения основных задач НЛП. Очистка текста играет важную роль в этом анализе. Сначала мы выполнили токенизацию, при которой предложения разбиваются на слова. После токенизации мы выполнили тегирование POS и, наконец, лемматизацию. Функция настроений TextBlob возвращает два свойства: субъективность и полярность. Эти две метрики сообщают, является ли настроение отрицательным или положительным. Например, если полярность находится в диапазоне [-1,1], где больше 0 означает положительное утверждение, а меньше 0 означает отрицательное утверждение. Ниже приведены наши результаты анализа TextBlob.

  • Вейдер

VADER (Valence Aware Dictionary and Sentiment Reasoner) — это основанный на лексике и правилах инструмент анализа настроений, который придает значение предположениям, используемым в социальных сетях. Вейдер дает положительную оценку, отрицательную оценку и полярность. После очистки текста мы выполнили анализ Вейдера, и ниже приведены наши результаты.

Тематический анализ с использованием LDA

В следующей части нашего проекта мы хотели узнать следующее:

  1. О чем говорят довольные и недовольные люди в своих отзывах и

2. Схожи ли темы положительных и отрицательных отзывов?

Мы решили использовать LDA-моделирование (латентное распределение Дирихле), один из самых популярных методов тематического моделирования, чтобы найти 3 главные темы обзоров.

Сначала мы разделили положительные (4 и 5 звезд) и отрицательные (1 и 2 звезды) отзывы. Некоторые из наших шагов предварительной обработки включают преобразование обзоров в список, удаление пунктуации, преобразование слов в нижний регистр и т. д. Затем мы удалили стоп-слова, сформировали биграммы и триграммы и выполнили лемматизацию, чтобы оставить только существительные, глаголы и прилагательные. Далее мы создали словарь, корпус и частоту документа термина.

После того, как все шаги предварительной обработки выполнены, мы запускаем нашу модель LDA.

Ниже приведены самые популярные ключевые слова для негативных отзывов:

Лучшие ключевые слова для положительных отзывов:

Мы использовали пакет pyLDAvis для визуальной интерпретации тем в нашей модели LDA. На изображении ниже показана карта межтематических расстояний между тремя темами и их распределение. На гистограмме справа мы видим 30 наиболее релевантных терминов для первой темы в отрицательных отзывах.

Три основных темы для отрицательных отзывов:

  1. Услуга
  2. Еда
  3. Время ожидания и бронирование

Три самые популярные темы для положительных отзывов:

  1. Хорошее обслуживание
  2. Отличное место / атмосфера
  3. Еда

Задачи

Искаженные данные: более 3/4 отзывов имеют рейтинг 4 или 5 звезд. Это могло повлиять на наши результаты, классифицировав большинство отзывов как положительные. Мы считаем, что это может быть решено с помощью передискретизации.

Будущая работа

  • Имея больше времени, мы хотели бы сделать передискретизацию нашего набора данных, чтобы выровнять классы. Мы могли бы использовать SMOTE (техника передискретизации синтетического меньшинства), случайную передискретизацию путем дублирования строк или добавления большего количества ресторанов, содержащих больше 1,2 и звездных отзывов, в наш набор данных.
  • Проанализируйте каждый из четырех ресторанов в отдельности, в частности Gen Korean BBQ House, который показал наибольшее колебание среднего рейтинга за последние 10 лет.
  • Мы также хотели бы расширить нашу работу, добавив в наш набор данных больше ресторанов.

Выводы

  • LDA — очень мощный инструмент для тематического анализа текстовых данных.
  • Точность модели была очень схожей с BoW и TF-IDF.
  • В отзывах с низким рейтингом чаще всего упоминаются обслуживание, еда, время ожидания и бронирование.
  • Отзывы с высоким рейтингом больше всего говорят об отличном обслуживании, атмосфере и еде.

Рекомендации

Для Din Tai Fung: Сократите время ожидания за счет новой системы резервирования места в списке ожидания онлайн, а не лично.

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

Для тех, кто это читает: загляните в эти 4 ресторана! Закажите следующие позиции:

  • Пельмени от Дин Тай Фунг
  • Клубничный круассан из кремовой сковороды
  • Мясо от Gen Korean BBQ House
  • Напитки из Гаваны

Спасибо за чтение! :) Если у вас есть какие-либо вопросы/комментарии, обращайтесь: https://www.linkedin.com/in/ysabel-gonzalez-rico

Источники:

https://www.yelp.com/biz/din-tai-fung-costa-mesa

https://www.yelp.com/biz/крем-пан-тустин

https://www.yelp.com/biz/gen-korean-bbq-house-tustin

https://www.yelp.com/biz/habana-costa-mesa-3

https://www.youtube.com/watch?v=TTMJdTH9W4o

http://www.tfidf.com

https://benbria.com/10-stats-on-the-importance-of-customer-experience-in-restaurants/