Исследование NLP о том, как агрегированные настроения Reddit могут предсказать рейтинг одобрения президента США.

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

Команда

Как уже упоминалось, этой проблемой занялись 6 студентов бакалавриата Duke: Милан Бхат, второкурсник, изучающий электротехнику и компьютерную инженерию, Эндрю Кафф, старший изучающий экономику и информатику, Кэтрин Дана , младший курс, изучающий компьютерные науки, Мелани Фарфель , старший, изучает экономику и информатику, Адам Сноуден, младший курс Биология и информатика, и я, старший изучающий математику и информатику.

Мотивация и определение проблемы

Reddit стал широко использоваться для обмена мнениями и идеями. Есть специальные форумы для обсуждения темы; они известны как субреддиты. Мы рассмотрели 3 субреддита: r / policy, r / Democrats и r / republican. Как нетрудно догадаться, первая посвящена дискуссиям, касающимся всей политики. И r / Democrats, и r / republican - это форумы для членов Демократической и Республиканской партии для обсуждения политики, проблем и кандидатов.

Каждый из этих субреддитов содержит миллионы комментариев и тысячи сообщений. Для анализа мы использовали набор данных, содержащий эти сообщения. Мы также во многом полагались на анализ настроений. Анализ настроений - это использование обработки естественного языка для систематической количественной оценки отношения, выраженного в письменной форме. Например, предложение «Самое жалкое - ждать в пробке». это отрицательное предложение. Тем не менее, предложение «Как здорово преодолеть пробку в час пик и быстро добраться домой». положительное предложение.

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

Источник данных

Нашим основным источником данных был большой JSON-объект комментариев Reddit с 2011 по 2016 год, который включает комментарий, оценку и субреддит для всех общедоступных комментариев. Это огромный набор данных, который является 250 ГБ в сжатом виде. Мы использовали набор данных Президентские рейтинги одобрения из отчетов Расмуссена, которые были получены в результате национальных опросов.

Используя Google BigQuery, мы извлекли все комментарии, содержащие слово «Обама», из трех упомянутых подреддитов. Мы очистили каждый комментарий исчерпывающим выражением регулярного выражения, чтобы заменить все не буквенно-цифровые значения. Мы собрали комментарии по месяцам и годам. У нашего базового объекта было 3 значения: дата создания комментария, субреддит и сам комментарий.

Результатом запросов в BigQuery стал файл CSV. Мы использовали Python для доступа и анализа информации в файле CSV. Мы сгруппировали комментарии по месяцам и годам, в которых они были сделаны.

Анализ настроений

Для нашего анализа настроений мы в значительной степени полагались на TextBlob, библиотеку Python для обработки и анализа текста. В основном мы использовали их метод анализа настроений, который возвращает число в диапазоне [-1, 1], где -1 полностью отрицательно, а 1 полностью положительно. Существует два основных подхода к анализу тональности: семантические подходы и подходы машинного обучения.

Семантический подход берет сумму (или среднее значение) тональности отдельных слов в предложении. Слова во входном предложении лемматизированы, что означает, что они сгруппированы по общему корню. Это потому, что гнев, гнев, гнев и гнев относятся к одной и той же негативной идее. Затем тональность каждого слова суммируется, чтобы получить ценность предложения. Мы также можем инвертировать тональность, если используется not. Фразу «недоволен» можно выразить так же, как «расстроен». Кроме того, мы можем придать тональности более сильный вес, если используются такие модификаторы, как очень, чрезвычайно или невероятно.

Второй метод - это контролируемое машинное обучение. В машинном обучении контролируемому алгоритму задаются два параметра: (1) входные данные и (2) ожидаемые выходные данные. Затем алгоритм выводит функцию, которая сопоставляет входные данные с выходными. Затем эту функцию можно использовать на новом входе для получения вывода. Этот подход обычно представляет собой проблему классификации. Для тех, кто хочет узнать больше, см. Здесь.

Методы анализа

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

Полученные результаты

Первый результат дает r / policy. Мы нашли коэффициент корреляции 0,495, что предполагает положительную корреляцию между этими двумя линиями. Однако наиболее интересными нам показались тенденции. Мы видим гиперболическое увеличение и уменьшение нашего расчетного рейтинга одобрения одновременно с умеренным увеличением и уменьшением фактического рейтинга одобрения. Этот результат интуитивно понятен, учитывая характер Reddit. Люди, которые публикуют сообщения, часто более преувеличены в своих мнениях. Это приводит к более поляризованным сообщениям, более высоким настроениям и более гиперболическим тенденциям.

На приведенном выше графике мы рассмотрели рейтинг одобрения. Для р / демократов и р / республиканцев мы решили проанализировать тенденцию рейтинга одобрения. Это делается путем вычисления наклона (первой производной) наших рассчитанных значений. Опять же, мы видим гораздо более преувеличенные и преувеличенные изменения. Это имеет смысл по тем же причинам, что и выше. На приведенном ниже графике показаны результаты для r / Democrats.

Однако это не случай r / republican. Мы снова посмотрели на тенденцию рейтинга одобрения и видим гораздо более застойные результаты. Фактически, в тенденции рейтингов одобрения нет значимых изменений. Наша команда проверила исходные значения для r / republican анализа настроений и обнаружила, что агрегирование сообщений почти всегда было отрицательным. Мы предположили, что это побочный продукт партийной политики, когда каждая партия жестко критикует другую, независимо от каких-либо действий или политики. Это, вероятно, особенно верно в отношении субреддитов, поскольку пользователи, вероятно, более пристрастны.

Заключительное примечание

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

Спасибо за прочтение!

Вопросов? Комментарии? Пишите мне на [email protected]!