ChatGPT и отзывы на приложение: Анализ тональности для улучшения пользовательского опыта

de7fbc2b541a7e5880c4a83dc8a3c379.jpeg

Автор статьи: Николай Задубровский, выпускник OTUS.

Исследование выполнено под руководством @mashkka_t (автор канала Mashka про Data Science) в рамках выпускного проекта на курсе Machine Learning в OTUS. 

Привет, дорогие читатели Хабра!

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

В этой статье я расскажу о том, как можно использовать возможности Natural Language Processing (NLP) для анализа отзывов, собранных из приложения AppStore. Я исследую, как каждый отзыв, содержащий дату, заголовок, текст и оценку пользователя, может быть преобразован в ценные данные для обучения модели анализа тональности. Эта модель будет способна классифицировать отзывы как положительные, негативные или нейтральные, предоставляя нам глубокое понимание эмоциональной окраски пользовательских мнений.

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

3101bc5db257145ecd4f61199a89727f.jpeg

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

В рамках исследования  я применил ряд передовых библиотек машинного обучения и обработки естественного языка, включая: Naive Bayes, Linear Regression, Logistic Regression, SVM (Support Vector Machine), Decision Tree, XGBoost и CatBoost.

В дополнение к традиционным методам моя работа включала использование нейронных сетей и трансформеров, которые являются фундаментальными инструментами для широкого спектра задач машинного обучения. Эти модели, особенно трансформеры, такие как BERT и RoBERTa, проявили себя как чрезвычайно мощные в задачах NLP благодаря их уникальной архитектуре, способной эффективно обрабатывать большие объёмы данных. Обработка информации осуществлялась с использованием высокопроизводительных GPU и CPU, что значительно ускорило вычисления и повысило эффективность обучения моделей.

Для анализа и визуализации данных я использовал Jupyter Notebook– удобную среду, которая позволяет выполнять код, визуализировать результаты и делиться выводами в интерактивном формате.

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

Загрузка набора данных

Посмотрим на данные:

593aed406d2ce9b6a5c1cdf4f2a07e0e.png

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

Просмотрим рейтинг:

f6883b70ee8b67bcf7d66ec7053c8ff7.png

Анализ данных показывает, что рейтинги отзывов охватывают широкий диапазон от 6.06 до 49.48, что отражает широкий спектр пользовательских впечатлений и оценок нашего продукта.

Посмотрим на классы:

aea863ec53e371d3f405b27fb8f248f9.png

Также видим, что у нас пять классов отзывов.

Проведём кодировку:

b2aa45e6ea882a596f37f60b8126325e.png

Проводим кодировку классов на положительные, отрицательные и нейтральные. Примечание: видим, что классы не сбалансированы.

Посмотрим, что у нас получилось — выберем классы:

1f02c36566ffe8e33333bd00b9961e8d.png

Выберем все примеры с положительным классом.

5ec912ba0db91f6f7ca750764a9f23c7.png

Выберем все примеры с отрицательным классом.

Прежде, чем перейти к ML, текст необходимо предобработать.

Токенизация

Создадим и применим токенизатор к каждому обзору в датасете:

e7f28de41f2cc926f9a0f0987b37fce8.png

Посмотрим, как работает токенизатор и как он разделяет текст на составные части.

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

Найдём и расширим список стоп — словами:

ad4e68c547b2ad2aae48bfa5143f1348.png

 Посмотрим на топ 10 наиболее часто встречающихся слов.

Теоретическая справка: Стоп-слова (stop words) — это слова, которые часто встречаются в тексте и не несут значимой информации.

Вывод. Цель этих действий — подготовить тексты для дальнейшего анализа.

Проведём нормализацию слов стеммером для английского языка.

192108826d5a15ca879f27645d0c74d7.png

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

7301092f46dc4e34c8254fb7526aaf3b.png

Разобьём собранные данные на train/test, отложив 20% наблюдений для тестирования.

0ca9812c65ce517b540b82381d76bc8b.png

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

Применим tf-idf преобразование для текстового описания.

a3f0dbe069142cf0a617a2220fd29cea.png

Посмотрим на первые 10 строк.

Видим, что текстовые данные преобразованы в числовые значения.

Теоретическая справка: TF-IDF это статистическая мера, которая используется для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. TF-IDF высокий, если слово часто встречается в документе, но редко в других документах, что означает, что оно характеризует документ. TF-IDF низкий, если слово часто встречается во многих документах, что означает, что оно не специфично для документа.

Оцениваем линейные модели

1.  Оценка точности классификатора логистической регрессии

2. Оценка точности линейной регрессии с использованием метрики RMSE

cc21d533dde3e1e9b4b6ec0837829ae5.png

1. Значения: Точность (Precision), Полнота (Recall), F1-мера, указывают на умеренную точность модели логистической регрессии.

2. RMSE (Root Mean Squared Error) «среднеквадратическая ошибка» линейной регрессии, — показывает, насколько хорошо модель предсказывает целевую переменную по сравнению с фактическими значениями. Значение RMSE 0.6657626243604827 указывает на среднюю ошибку предсказания в рамках данного масштаба.

Оцениваем различные модели

Сравниваем и оцениваем качество шести моделей: Naive Bayes, Logistic Regression

SVM (Support Vector Machines), Decision Tree, XGBoost, CatBoost. 

199a792e184a6b406e8b33b3344ceb50.png

Выводы:

  • Наивный Байес (Naive Bayes): с наименьшей точностью в 0.6100 и F1-баллом 0.4967, Наивный Байес показывает ограниченную эффективность в сравнении с другими рассмотренными моделями.

  • Линейная Регрессия (Linear Regression): с RMSE в 0.6658, эта модель применима в контексте регрессии, но её показатели несопоставимы с классификационными метриками, такими как точность и F1-балл.

  • Логистическая Регрессия (Logistic Regression),  Метод Опорных Векторов (SVM) и Дерево Решений (Decision Tree): все три модели демонстрируют схожую точность в 0.6253, однако отличаются по F1-баллу, где Дерево Решений выделяется с более высоким показателем.

  • XGBoost: превосходит другие модели с точностью 0.6275 и F1-баллом 0.4922, указывая на свою эффективность в классификации.

  • CatBoost: показывает результаты, сопоставимые с Логистической Регрессией, SVM и Деревом Решений, как по точности, так и по F1-баллу.

Общий вывод:

Из анализа следует, что XGBoostвыделяется как наиболее предпочтительная модель с точки зрения точности и F1-балла. Тем не менее, учитывая небольшую разницу в показателях между моделями, выбор может зависеть от специфики задачи и значимости определённых метрик. В сценариях, где критично минимизировать ложноположительные и ложноотрицательные результаты, следует уделить особое внимание F1-баллу, где XGBoost также показывает сильные результаты. Это подчёркивает важность комплексного подхода к выбору модели, основанного на целях и требованиях конкретного исследования или приложения.

В рамках нашего исследования я использую современные модели для анализа тональности

  • BERT (Bidirectional Encoder Representations from Transformers): модель, использующая механизмы трансформеров для анализа контекста слов в тексте отзывов. Она учитывает двунаправленный контекст, что позволяет глубже понять значение и эмоциональную окраску каждого слова в предложении.

    871e0f5550a335b494555bda7ec65ac2.png
  • RoBERTa: это улучшенная версия BERT, оптимизированная для более точного понимания контекста и классификации текста.

Рассмотрим BERT (Bidirectional Encoder Representations from Transformers):

Токенизация & Форматирование

073cb0ea9f6c99116b23b7a83813b892.png

В данной секции преобразуем данные к формату, с которым работает BERT.

Обучение модели

Я использую класс `BertForSequenceClassification`, который представляет собой предобученную модель BERT с добавленным классификационным слоем. Этот слой позволяет модели классифицировать отзывы на положительные, негативные и нейтральные.

Посмотрим на метрики обучения и производительности для оценки эффективности модели. 

8f89af35cb8ee10f54a3f8228a326e5f.png

Выводы:

  • Точность (Accuracy) измеряет долю правильно классифицированных примеров от общего числа примеров. Это метрика, которая позволяет оценить, насколько хорошо модель способна правильно предсказывать классы данных.

  • Снижение точности на валидационных данных (Valid. Accur.) с каждой эпохой указывает на переобучение модели (overfitting).

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

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

Посмотрим на график «Ошибка обучения» и «Ошибка валидации».    

55bf98415a208e5486e5fee60602eb19.png

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

Вывод:

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

Оценим метрику MCC

В качестве метрики возьмём Коэффициент корреляции Matthews correlation coefficient, сокращённо MCC.

d256c2380c9f3bbbc54e4f788865fd2e.png

Вывод:

После тщательной подготовки тестовых данных мы применили дообученную модель для генерации предсказаний. Для оценки качества модели был выбран Коэффициент корреляции Мэтьюса (MCC), который является надёжной метрикой в условиях несбалансированных классов. Полученное значение MCC равное 0.721  свидетельствует о высоком качестве предсказаний модели. Это значение указывает на сильную корреляцию между предсказанными и фактическими классами, что подтверждает эффективность модели и её потенциал в решении поставленной задачи классификации. Таким образом, дообученная модель демонстрирует отличные результаты и может быть использована для дальнейшего анализа данных или в реальных приложениях.

Модель RoBERTa (Robustly Optimized BERT Pretraining Approach) является модификацией модели BERT, разработанной Facebook AI:

Токенизация & Форматирование

f88052b091b513c290703cd4cff4c8bb.png

Чтобы подать на вход текст в Roberta, его необходимо разбить на токены, а затем закодировать токены их порядковыми индексами в словаре.

Обучение модели

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

Посмотрим на метрики обучения и производительности для оценки эффективности модели. 

3500ef526e7058155965b8b16cc008e7.png

Выводы:

  • Потеря на тренировочных данных (Training Loss): постепенно уменьшается с каждой эпохой, что является хорошим знаком. Это означает, что модель продолжает обучаться и улучшать свои параметры, чтобы лучше предсказывать классы на тренировочных данных.

  • Потеря на валидационных данных (Valid. Loss): сначала уменьшается, но затем начинает увеличиваться, что может указывать на начало переобучения модели. Это происходит, когда модель начинает «запоминать» тренировочные данные, что приводит к ухудшению её способности к обобщению на новые, ранее невидимые данные.

  • Точность на валидационных данных (Valid. Accur.): увеличивается с каждой эпохой, что является хорошим знаком. Это означает, что модель продолжает улучшать свою способность к предсказанию классов на валидационных данных.

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

Посмотрим на график «Ошибка обучения» и «Ошибка валидации».

07ac6cad868602860da758055bf3e871.png

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

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

Оценим метрику MCC

В качестве метрики возьмём Коэффициент корреляции Matthews correlation coefficient, сокращённо MCC.

c92041e7f0b20c0b73cdc00eb5d85d59.png

Вывод:

После того как тестовые данные были тщательно подготовлены, мы использовали дообученную модель RoBERTa для генерации предсказаний. В качестве ключевой метрики оценки качества модели был выбран Коэффициент корреляции Мэтьюса (MCC), который является особенно подходящим для сценариев с несбалансированными классами. Значение MCC, равное 0.736, указывает на высокую степень корреляции между предсказанными и фактическими значениями, что свидетельствует о значительной точности и надёжности модели в задачах классификации. Этот результат подчёркивает эффективность дообучения модели RoBERTa и её применимость для анализа данных в условиях, когда баланс классов является критическим фактором.

Выводы по исследованию:

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

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

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

Благодарим вас за внимание и интерес к моей работе!

Habrahabr.ru прочитано 3154 раза