Ссылка на репо: https://github.com/rafacelente/predicting-candidate-tweets

Введение

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

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

Расшифровка политической риторики

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

Язык и синтаксис глубоко укоренились в политической речи.

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

Если политическая риторика — это язык и синтаксис, может ли модель НЛП извлечь из нее осмысленные идеи?

Используя мощь методов НЛП, мы можем анализировать политические выступления, материалы кампаний и публичные заявления, чтобы выявить закономерности и идеи, скрытые в языке и синтаксисе. Изучая языковой выбор, риторические стратегии и влияние политической риторики на общественное мнение, мы можем глубже понять методы убеждения, используемые политиками. Те же стратегии широко применялись для обнаружения фейковых новостей или даже для формирования политического мнения, как это было в случае с выборами в США в 2020 году, со всем скандалом с Cambridge Analytica.

Краткая история выборов 2022 года в Бразилии

В последние несколько месяцев 2022 года Бразилия была погружена в очень напряженную политическую борьбу между двумя главными фигурами: крайне правым тогдашним президентом Жаиром Болсонару от Социал-либеральной партии и бывшим левым президентом Луисом Инасиу Лула да Силва. , от Рабочей партии.

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

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

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

Прогнозирование с помощью НЛП: дорожная карта

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

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

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

Чтобы подготовить текстовые данные для обучения модели, мы используем метод TF-IDF (частота терминов, обратная частоте документа). Представляя твиты в виде числовых векторов и учитывая важность каждого слова в корпусе, мы гарантируем, что модели могут эффективно изучать и различать лингвистические шаблоны, характерные для каждого кандидата.

Затем, используя библиотеку scikit-learn на Python, мы обучаем многономиальный наивный байесовский алгоритм, классификацию линейных опорных векторов и классификаторы случайного леса на предварительно обработанных данных. Эти классические модели НЛП, известные своей эффективностью в задачах классификации текста, дают нам основу для точного предсказания авторов твитов.

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

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

Полную схему проекта и его шагов можно увидеть на изображении 5.

Tweepy и Twitter API

Чтобы получить твиты, мы должны использовать Twitter API, отправляя запрос на получение твитов от этих двух конкретных пользователей. Для этого была использована очень простая в использовании библиотека на Python под названием tweepy. Эта библиотека позволяет нам найти пользователя по его дескриптору (изображение 6) и с помощью хитроумной обработки получить более 3000 твитов от обоих пользователей (изображение 7).

После всего этого мы можем прочитать csv, и результат должен быть примерно таким (изображение 8).

Облако слов

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

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

Как мы видим ниже, слова «облака» выглядят очень похожими семантически (как и ожидалось, поскольку у них схожие мотивы), но самые важные ключевые слова различаются. Некоторые слова, такие как «Бразилия», «todos», «povo», «hoje» и «país», очень часто встречаются в обоих облаках, что указывает на то, что они могут быть не лучшим предиктором для наших моделей. Однако некоторые слова, такие как «COP27», «vamos», «Ministério» и «milhões», очень отчетливо указывают только на одного из кандидатов, что может указывать на то, что они могут быть хорошими предикторами.

Применение моделей

Векторизация TF-IDF

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

TF-IDF фиксирует важность слов в документе, принимая во внимание два фактора: частоту термина (TF) и обратную частоту документа (IDF). Частота термина измеряет частоту слова в конкретном документе, указывая на его релевантность в этом документе. С другой стороны, обратная частота документа определяет значимость слова во всем корпусе, штрафуя часто встречающиеся слова. Комбинируя эти два фактора, TF-IDF присваивает более высокий вес словам, которые встречаются в документе и являются уникальными для этого документа.

К счастью, с библиотекой sklearn feature_extraction применение этой техники так же просто, как показано ниже. Сначала мы разделяем наш набор данных на обучение и тестирование, затем применяем TfidfVectorizer. TfidfVectorizer также принимает в качестве аргумента список стоп-слов, который представляет собой просто список слов, которые вы хотите игнорировать. Эти слова могут быть очень распространенными словами в языке, над которым вы работаете (например, связки), или даже, в данном случае, некоторыми общими хэштегами, используемыми кандидатами. Я использовал собственный список стоп-слов на португальском языке, а затем добавил в список несколько общих хэштегов и повторяющихся несвязанных слов, таких как equipelula, vamosjuntospelobrasil и govbr.

Полиномиальный наивный байесовский алгоритм

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

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

Алгоритм полиномиальной NB работает, применяя теорему Байеса к набору данных с изюминкой («наивная» часть): он предполагает, что все признаки независимы друг от друга, то есть они некоррелированы и независимо влияют на окончательную классификацию. Это позволяет значительно упростить расчет, превращая его в простую задачу подсчета.

Однако в этом контексте некоррелированные признаки означают, что алгоритм рассматривает эти фразы как корзину неорганизованных слов. Это означает, что фразы «Маленькая голубая бабочка» и «бабочка, маленькая голубая» воспринимаются как одно и то же. Из-за этого эта модель теряет много информации о контексте, что очень важно в случаях, когда много слов повторяется между классами, что верно в этом случае, когда оба кандидата имеют очень похожие облака слов.

При показателе точности 75,6% наивный байесовский метод дает отличное первое впечатление, правильно предсказывая 3 четверти непросмотренных твитов. Однако, если мы посмотрим на матрицу путаницы для этой модели, мы увидим, что она имеет небольшой уклон в сторону предсказания ярлыков как твитов Болсонару.

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

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

Как мы видим, большинство слов в неверных прогнозах — это часто используемые слова в словаре Болсонару. Тогда мы можем улучшить эту модель, ограничив эти слова в нашем списке стоп-слов.

Модель LinearSVC

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

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

Однако с показателем точности 75,2 % мы не добились лучшей производительности. Как видно из матрицы путаницы, мы по-прежнему совершаем много ошибок типа II из-за очень похожего словарного запаса двух кандидатов.

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

С LinearSVC, поскольку это проблема с двумя классами, мы также можем анализировать наиболее влиятельные слова в соответствии с нашей моделью, видя наши коэффициенты гиперплоскости. На графике ниже показано, как наша модель интерпретирует признаки (слова). Положительные коэффициенты указывают на смещение в сторону Лулы, а отрицательные — в сторону Болсонару.

Модель случайного лесного классификатора

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

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

Однако с точностью 75,2% классификатор Random Forest по-прежнему не дает наилучших результатов для нашей задачи.

Мы можем еще раз отобразить важность функций для нашей модели, чтобы увидеть, как наша модель принимает решение на основе слов твитов. На приведенном ниже графике показан результат, который не так уж нов: такие слова, как «vamos», «brasil» и «país», которые обычно используются двумя кандидатами, считаются наиболее важными, что могло бы объяснить соответствующие ошибки и, возможно, нашу ошибку. не очень хорошая производительность модели.

Выводы

В заключение, методы обработки естественного языка (NLP) являются мощными инструментами для анализа языковых данных и могут использоваться для выявления закономерностей и идей в политической речи. Способность анализировать языковой выбор, риторические стратегии и влияние политической риторики на общественное мнение может обеспечить более глубокое понимание методов убеждения, используемых политиками. Модели НЛП широко применялись в различных областях, включая обнаружение фейковых новостей, анализ настроений и даже формирование политического мнения, о чем свидетельствует скандал с Cambridge Analytica во время выборов в США в 2020 году.

Хотя методы, описанные в этом проекте, могут иметь более низкие результаты точности по сравнению с современными методами, такими как модели больших языков (LLM), они по-прежнему широко используются в промышленности из-за своей простоты и производительности. LLM требуют огромных объемов данных и вычислительных ресурсов, что делает их непрактичными для некоторых приложений. Кроме того, классические методы NLP остаются эффективными для многих задач классификации текста, особенно когда набор данных относительно мал, а классы четко определены.

Наши модели достигли точности около 75%, при этом наилучшая производительность была достигнута моделью мультиномиального наивного Байеса. Однако модели изо всех сил пытались различить твиты кандидатов из-за схожей лексики, используемой обоими кандидатами, что приводило к множеству ошибок типа II. Это говорит о том, что производительность моделей можно улучшить, принимая во внимание больше контекстной информации или используя более сложные модели.

Будущие улучшения проекта

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

  • Оптимизация гиперпараметров.Гиперпараметры — это параметры, которые задаются перед обучением модели и могут существенно повлиять на ее производительность. Настраивая эти гиперпараметры, мы можем повысить точность наших моделей. Например, для классификатора случайного леса мы могли бы изучить различные значения количества деревьев и глубины каждого дерева, чтобы оптимизировать производительность модели.
  • Различные методы встраивания.Другой подход может состоять в том, чтобы поэкспериментировать с различными методами извлечения признаков, такими как встраивание Word2Vec или GloVe, чтобы получить больше семантического значения в текстовых данных. Изучая эти возможности, мы потенциально можем улучшить производительность моделей и получить более глубокое представление о языковых паттернах, которые отличают твиты кандидатов.
  • Исследуйте разные временные рамки и посмотрите, смещается ли повествование.Рассказы развиваются, и люди могут менять свой словарный запас, интонацию, цель и манеру речи в зависимости от ситуации, в которой они находятся. Поэтому было бы интересно посмотреть как наши модели работают по мере изменения времени, наблюдая, могут ли они по мере изменения ситуации и окончания выборов более точно предсказывать авторов.

Ресурсы

Datacamp — Трюдо или Трамп? › https://app.datacamp.com/learn/projects/467

Алгоритмы и модели классификации текста ML NLP › https://www.projectpro.io/article/machine-learning-nlp-text-classification-algorithms-and-models/523

Sklearn LinearSVM › https://scikit-learn.org/stable/modules/svm.html

Руководство по классификации текста с использованием машин опорных векторов и наивного Байеса › https://medium.com/@bedigunjit/simple-guide-to-text-classification-nlp-using-svm-and-naive-bayes-with-python -421db3a72d34

Основные отличия SVM от Naive Bayes › https://stackoverflow.com/questions/35360081/naive-bayes-vs-svm-for-classifying-text-data