Данные для изменения

Исследование NLP сообщений Reddit о глобальном потеплении на Python

Анализ настроений в повествовании о глобальном потеплении и социальной осведомленности

Глобальное потепление все больше влияет на судьбу нашей планеты. Как показывают научные данные, мы, люди, являемся одной из основных причин этого бедствия; и необходимо предпринять серьезные действия для спасения грядущих поколений. Однако, как и во многих других социальных проблемах, эффективность этих действий во многом зависит от осознания обществом печальных последствий игнорирования этого факта. Однако оценка социальной осведомленности требует глубокого понимания текущего повествования. Это сложная задача, поскольку социальная осведомленность действует как вход / выход для человека, и это взаимодействие принимает различные формы, такие как телевидение, радио, онлайн-видео, газеты и сетевые (в настоящее время основная часть взаимодействий) СМИ. такие как социальные сети. Reddit - популярная онлайн-платформа, на которой многие из этих вопросов обсуждаются отдельными людьми. Именно через понимание социальной осведомленности мы можем принять своевременные меры.

Глобальное потепление - это научный факт!

Глобальное потепление - это не просто теория заговора; но это реальность и научный факт; что было доказано многочисленными отчетами о временных данных Глобального наблюдения за температурой атмосферы. С увеличением промышленных мощностей по эксплуатации природы рост температуры ускорился за последние 40 лет (Рисунок 1).

Вступление

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

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

Reddit - это один из таких онлайн-источников, где люди выражают свое мнение по определенной теме, аргументируя это сообщениями и комментариями. Обработка естественного языка (НЛП) - это мощный инструмент вычислительной лингвистики, который может помочь нам получить более полное представление о социальном нарративе и осведомленности. В частности, мы можем сделать вывод о сентиментальном статусе этих субъектов в обществе. Однако, поскольку эта информация находится в данных неструктурированного текстового формата, для реализации алгоритмов машинного обучения (ML) сначала необходимо преобразовать текстовые документы в структурированный формат, такой как DataFrames.

Постановка задачи

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

Рабочий процесс моделирования

В этом сообщении блога я проведу вас через анализ НЛП сообщений сабреддита; Рабочий процесс (см. рисунок 2) разделен на несколько последовательных этапов: 1 - сбор данных, 2 - очистка данных, 3 - векторизация текста и исследовательский анализ данных (EDA), 4 - моделирование и, наконец, 5 - рекомендации, основанные на результатах модели. Посты были получены из двух популярных постов в блогах с более чем 3 тыс. Подписчиков - глобальное потепление и теория заговора. Я делаю шаги 1–3 краткими и объясню разделы 4 и 5 более подробно. Для тех, кто интересуется более подробной информацией о шагах моделирования, я приглашаю посетить полный репозиторий в моем личном профиле GitHub. В этом рабочем процессе я в основном использовал библиотеки Pandas, scikit-learn и NLTK на Python.

Шаг 1 - Сбор данных

Я написал функцию python для получения субреддитов через pushshift Reddit API. Ниже приведен фрагмент кода (снова я приглашаю вас посетить мой личный репозиторий GitHub для получения полного набора кода):

Затем, используя эту функцию, я импортировал subreddit API. Импортированные сообщения датируются до 1 июля 2020 года. Затем я объединил два набора данных как pandas DataFrames и сохранил их в файлах CSV.

Шаг 2- Очистка данных

Как и следовало ожидать от неструктурированных текстовых данных, очистка данных - трудоемкая часть любого проекта НЛП. После первоначальной обработки отсутствующих значений, настройки типов данных и удаления ненужных столбцов я очистил текст. Чтобы этот пост в блоге был простым и легким для чтения, здесь я просто перечисляю процедуры очистки с учетом порядка применения: удаление всех небуквенных символов, строковые (через регулярное выражение) операции, удаление стоп-слов, выделение и, наконец, сшивание токенизированные текстовые элементы обратно в DataFrame и сохранение его в виде единого чистого CSV-файла (рисунок 1). Здесь я включаю только часть кода, который я использовал для очистки столбца «text_merged» в DataFrame.

Шаг 3 - EDA и разработка функций

Для этого анализа можно выделить два класса функций, а именно числовые и текстовые функции.

Числовые характеристики показали относительно низкие коэффициенты корреляции с целью (рисунок 3), что указывает на необходимость более глубокого понимания данных для целевых прогнозов, то есть текстовых функций. Первоначально я разработал несколько общих функций. Первой разработанной функцией была «подсчет слов» [в другом варианте этой функции также можно было определять количество символов]. Затем я использовал набор инструментов «nltk.vader», чтобы получить «Оценка настроения» на основе предварительно обученной модели.

Кроме того, во время EDA я обнаружил связь между оценками Reddit и количеством комментариев (рисунок 3). Для ярлыков заговора с таким же количеством комментариев был широкий диапазон оценок, что означает, что их мышление неоднородно или едино, но существует повествовательная неоднородность между теориями заговора Reddits. С другой стороны, глобальное потепление выглядело более однородным в этом смысле, а также показало больше комментариев, что означало большую склонность к обсуждению. Поэтому я разработал функцию взаимодействия как умножение комментариев и оценок и назвал ее «реакцией», поскольку это количество комментариев и оценок в целом, которые являются реакцией читателя на автора:

[Reaction] = [Post score] * [Number of comments]

Изучение числовых характеристик (рисунок 4) показало, что оценка, оценка настроения, количество комментариев были наиболее коррелированными характеристиками, а характеристика реакции также является относительно хорошей. Следовательно, спроектированные функции важны для прогнозирования цели, как мы опишем в разделе модели. В то время как функции, связанные с длиной документа, такие как количество слов (см. Рисунок 4), были относительно некоррелированными, то есть не относящимися к целевому классу. Если подумать о проблеме с публикациями на Reddit, это имело бы смысл, поскольку обе группы писали как короткие, так и длинные сообщения.

Текстовые функции, такие как преобразователи векторизации текста, требовали предварительной обработки перед исследованием и проектированием функций. Здесь я использовал как cvec, так и tf-idf (предпочтительный вариант с вычислительной точки зрения) для преобразования текстов (используя n-граммы размера 1 и 2). Это также помогло найти и отфильтровать менее значимые слова в виде нового списка игнорируемых слов в дополнение к «английским».

Оба пользователя чаще всего использовали следующие слова:

['year', 'world', 'peopl', 'like', 'make', 'use', 'think', 'could', 'time']

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

Кроме того, я добавил новую спроектированную функцию и назвал ее «агрессия при использовании слов (WUA)». Эта функция представляет собой просто евклидово расстояние между 100 первыми текстовыми токенами (словами), которые оба субреддита использовали больше всего.

Это просто нормализованное расстояние слов между каждым словом с самым высоким рейтингом, суммируемое по всем словам с высоким рейтингом в одном:

[WUA] = sum(|Distance between top-word indices|)

Более высокие значения АВП означают, что слова с самым высоким рейтингом использовались рассредоточенно по всему посту.

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

Шаг 4- Моделирование

Оценка модели по признакам текста:

Поскольку цель состоит в том, чтобы классифицировать сообщения Reddit на основе целевого столбца [0 для теории заговора и 1 для глобального потепления], эта проблема становится проблемой классификации бинарных классов. Для первоначальных попыток модели я выбрал только текстовый столбец в качестве переменной X. Целевое значение (переменная Y) было 1 (0) для глобального потепления (теория заговора). Одним из недостатков импортированного набора данных было то, что в сабреддите теории заговора было меньше сообщений. Чтобы сделать классы более сбалансированными, я перебрал строки, относящиеся к цели теории заговора. На основе этого сбалансированного набора данных точность базовой модели составила 0,5 [равное распределение целевых и нецелевых классов]. Это означает, что наихудшая точность модели составляет 50%! Затем я разделяю переменные (X) и целевые данные (y) на наборы для обучения / тестирования с размером теста 25%:

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

Выделение слов и использование векторизатора tf-idf вместо CountVectorizer повысили точность до некоторой степени (максимум на 3%). Среди нескольких протестированных моделей классификации они имели значения точности выше 96% и значения Recall выше 92% на тестовой выборке. Кроме того, казалось, что модели немного превосходят тестовый набор (разница

Оценка модели на основе текстово-числовых признаков:

Для дальнейшего обсуждения и анализа результатов в текстовых документах я приступил к логистической регрессии, поскольку она дает более четкое представление о важности функций, и я мог лучше видеть вклад инженерных функций, добавленных к текущим переменным. Основываясь на модели, следующие характеристики были важны при определении целевых меток, перечисленных в зависимости от их важности: оценка, количество слов, оценка тональности, реакция и АВП. Тот факт, что АВП имеет положительную корреляцию, предполагает, что в сообщениях, вызывающих большее беспокойство, как правило, использовались главные слова, более удаленные друг от друга.

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

Обратите внимание, что это основные слова, а не настоящие слова. Чанг, углерод, ученый, лед и остановка были наиболее важными характеристиками (словами) при прогнозировании цели глобального потепления. Кроме того, чтобы проследить какую-либо тенденцию интереса к определенным словам, я оценил совокупное использование слов, нормализованных по номерам постов, как показано на Рисунке 9. Как видно, с 2019 года наблюдается тенденция к растущей озабоченности, однако Тенденция заговора также увеличилась, что вызывает беспокойство.

Фильтрация тем о глобальном потеплении

Изменение климата - это всеобъемлющая проблема, выходящая далеко за рамки проблем повышения температуры, включая такие вопросы, как состояние озонового слоя, загрязнение, среди других вопросов:

[Global warming] ⊆ [Climate change]

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

Задача - глобальное потепление: «Морской лед в море Уэдделла уменьшился на один миллион квадратных километров за пять лет»

Цель - не глобальное потепление: «Привет. Я хотел бы знать, какие уроки мы можем извлечь из пандемии COVID-19 и применить их к нашим действиям по борьбе с изменением климата. В частности, предприятия и правительства. Заранее спасибо.

Рекомендации

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

1. Мы нашли наиболее / наименее коррелированные слова при определении того, связан ли пост с глобальным потеплением. «Изменение» и «Углерод» были обнаружены как наиболее коррелирующие слова.

2- Основываясь на разработанных функциях, сообщения о глобальном потеплении получают больше реакции (Функция реакции). Кроме того, в сообщениях о глобальном потеплении обычно используются популярные слова, более разбросанные по всем сообщениям (функция WUA).

3- Анализируя временные ряды наиболее влиятельных слов, мы обнаружили, что с 2019 года наблюдается тенденция роста как озабоченностей, так и заговоров.

4. Мы смогли отфильтровать темы глобального потепления из более общего субреддита об изменении климата.

Спасибо, что прочитали мой пост в блоге. Заинтересованы в большем количестве чтений? Пожалуйста, проверьте мои профили LinkedIn и GitHub.

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