Создание классификатора настроений

В продолжение моих предыдущих блогов, часть-1 и часть-2, где мы исследовали данные твитов о COVID и выполнили тематическое моделирование соответственно, в этой части мы создадим классификатор настроений.

Хотя базовое исследование данных было выполнено в предыдущих частях, мы снова показываем небольшой проблеск данных!!

A) Предварительный просмотр используемого набора данных.

  • Взгляд на набор данных COVID Tweet

  • Данные твитов доступны за месячный период, максимальное количество твитов с 19 по 21 марта.

  • Давайте также посмотрим на длину твита (я взял обработанные твиты). Большое количество твитов состоит из 20–22 слов.

Подробнее о исследовательском анализе данных читайте в этом блоге.

B) Создание классификатора настроений

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

  • Разделение данных на обучающие и тестовые наборы

Я использовал обработанные твиты в качестве независимой переменной и создал целевую переменную с тремя уровнями: нейтральным, положительным и отрицательным, представленными как 0,1 и 2 соответственно. Для обучения я использовал 70% данных.

  • Создание конвейера для извлечения текстовых функций с последующей подгонкой модели классификатора.

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

  • Обучение классификатора

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

  1. Полиномиальный наивный байесовский метод

Полиномиальный наивный байесовский метод — это один из двух классических наивных байесовских вариантов, используемых в текстовой классификации (где данные обычно представляются в виде подсчета векторов слов, хотя известно, что векторы tf-idf также хорошо работают на практике). Наивный Байес много раз считался успешным в случае проблем с классификацией текста. Посмотрим, как это работает!

С показателем точности 64% он плохо отзывается для класса 0, в то время как класс 1 имеет самое высокое значение отзыва 0,89.

2. Использование RandomForestClassifier

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

Для Random Forest есть увеличение точности до 73%. С точки зрения точности и отзыва классов 1 и 2 он находится в диапазоне 0,7–0,79 и, безусловно, является улучшением ранее построенной наивной байесовской модели.

3. Использование линейной классификации опорных векторов

LinearSVC реализует многоклассовую стратегию «один против остальных», таким образом обучая модели n классов. Это похоже на SVC с параметром kernel=’ linear’.

Это существенно улучшило точность до 79%, а с точки зрения точности и отзыва, особенно для классов 1 и 2 (положительный и отрицательный соответственно), она улучшилась до ≥0,81.

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

  • Wordcloud для окончательных прогнозов по тестовым данным

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

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

Использованная литература:-