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

Чтобы соскоблить твиты от сенаторов, я использовал этот список со 115-го съезда. Затем я создал скрипт на Python, который проверял правильность каждого дескриптора Twitter, отправляя ответ 200. Было несколько сенаторов, которые изменили свои имена из этого списка, явно Берни Сандерс из Вермонта и Кори Гарднер из Колорадо. Затем я использовал этот поток переполнения стека в качестве руководства, чтобы убедиться, что я получил как можно больше твитов от каждого сенатора с помощью моего бесплатного API. Этот формат сбора твитов создавал новый CSV для каждого сенатора и брал твит, время твита и имя сенатора. Я также использовал 60-секундную паузу между циклами, чтобы убедиться, что я не превышаю ограничение, установленное Twitter для API. После того, как все твиты были собраны, осталось 299 200 твитов в 100 файлах CSV.

Как только твиты были собраны, я начал работать над книгой кодов, чтобы определить, каким будет настроение твитов. Я придумал такие правила:

Чтобы убедиться, что различные уровни процесса машинного обучения проходят гладко и быстро, я собрал десять случайных твитов от каждого сенатора и случайным образом отсортировал их в обучающий файл. Это сделало так, что у меня был учебный файл с 1000 примерами, которые я мог использовать для обучения процессу вспомогательного машинного обучения. Был момент, когда я пытался использовать обзоры Yelp/Amazon в качестве тренера, но это было не очень эффективно для аналитического формата. По завершении было 458 положительных твитов, 325 нейтральных твитов и 190 отрицательных твитов.

В начальном процессе машинного обучения использовался процесс анализа Naive_Bayes: BernoulliNB. В качестве теста я начал с использования полного документа анализа тональности 1000 твитов, который я создал для анализа всех 298 200 других твитов. Этот процесс занял около 30 минут в системе Google Colab, которую я использовал. Когда все было сказано и сделано, процесс был точен примерно на 60%. Хотя это не самый лучший прогноз, имейте в виду, что большинство твитов состоят примерно из 70 символов, и из-за природы Twitter многие твиты могут быть очень нюансированными.

Чтобы попробовать другую модель, я использовал SKLearn и его LinearSVC. Этот процесс работал быстрее, чем модель Naive_Bayes, и анализ выполнялся за 20 минут в той же системе Google Colab. Однако это обеспечило только 50-процентную точность определения тональности.

В целом, настроение твитов не давало много полезной информации. Я решил провести дополнительный анализ этих данных и еще один интересный анализ.

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

Используя модель LinearSVC, он сообщил о 80% точном предсказании того, какой политической партии принадлежит твит. Возникла проблема с прогнозированием твитов независимой партии, поскольку в этом наборе был только один официальный независимый.

Затем я решил посмотреть, как это предсказало появление твитов. Для этого я сделал в файле категорию, чтобы показать, в каком поколении родился каждый сенатор. Этот анализ с использованием модели LinearSVC был не таким впечатляющим, как разделение демократов и республиканцев (точность 71%), но, тем не менее, интересным.

Наконец, я решил посмотреть, как государство повлияло на твиты. Поскольку в каждом штате всего два сенатора, в целом этот анализ был не самым лучшим, но я подумал, что на него будет интересно взглянуть. В целом, он предсказал правильно примерно в 52% случаев, если только сенатор не был из Индианы, Айовы или Северной Дакоты (~ 70%).

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