Создание классификатора настроений
В продолжение моих предыдущих блогов, часть-1 и часть-2, где мы исследовали данные твитов о COVID и выполнили тематическое моделирование соответственно, в этой части мы создадим классификатор настроений.
Хотя базовое исследование данных было выполнено в предыдущих частях, мы снова показываем небольшой проблеск данных!!
A) Предварительный просмотр используемого набора данных.
- Взгляд на набор данных COVID Tweet
- Данные твитов доступны за месячный период, максимальное количество твитов с 19 по 21 марта.
- Давайте также посмотрим на длину твита (я взял обработанные твиты). Большое количество твитов состоит из 20–22 слов.
Подробнее о исследовательском анализе данных читайте в этом блоге.
B) Создание классификатора настроений
Поскольку это продолжение блога, об очистке данных уже позаботились на предыдущих шагах. Итак, я начну с процесса построения модели.
- Разделение данных на обучающие и тестовые наборы
Я использовал обработанные твиты в качестве независимой переменной и создал целевую переменную с тремя уровнями: нейтральным, положительным и отрицательным, представленными как 0,1 и 2 соответственно. Для обучения я использовал 70% данных.
- Создание конвейера для извлечения текстовых функций с последующей подгонкой модели классификатора.
Я создал функцию, которая принимает вызовы модели в качестве параметра и создает конвейер, который сначала преобразует твиты с помощью TfidfVectoriser, а затем подбирает модель классификации. Затем подобранная модель используется для прогнозирования тестовых данных, и тестовые прогнозы возвращаются в качестве выходных данных.
- Обучение классификатора
Для процесса построения модели я пробовал несколько моделей. Давайте познакомим вас с различными базовыми моделями, установленными в этом наборе данных.
- Полиномиальный наивный байесовский метод
Полиномиальный наивный байесовский метод — это один из двух классических наивных байесовских вариантов, используемых в текстовой классификации (где данные обычно представляются в виде подсчета векторов слов, хотя известно, что векторы 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 для окончательных прогнозов по тестовым данным
Визуализация часто встречающихся слов для набора тестовых данных, соответствующих прогнозируемым значениям тональности. В облаке слов положительного настроения можно увидеть такие слова, как «помощь», «спасибо», «хорошо», тогда как в облаке слов отрицательного настроения можно увидеть такие слова, как «паническая покупка», «цена», «нужно».
Вы можете найти соответствующий код, используемый в этом блоге здесь.
Использованная литература:-