Изменение климата - это изменение распределения погодных условий. Хотя антропогенное изменение климата принято считать наукой, есть также скептики, которые считают иначе.

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

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

Здесь - ссылка на репозиторий, содержащий весь код, опубликованный в этой статье.

Создание набора данных

Используя библиотеку Tweepy от Python, мы получили все твиты, содержащие хотя бы одну из этих фраз: «изменение климата», «глобальное потепление» и «потепление планеты». Авторы-люди независимо отнесли каждый твит к одной из следующих категорий:

  • 2 - Твит ссылается на фактическую новостную статью об изменении климата.
  • 1 - Пользователь верит в изменение климата, вызванное деятельностью человека.
  • 0 - Пользователь не выражает явной веры или неверия в изменение климата, вызванное деятельностью человека.
  • -1 - Пользователь не верит в изменение климата, вызванное деятельностью человека.

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

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

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

Очистка данных

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

Тренировка / тестовый сплит

Мы разделили данные на 90% обучения и 10% тестирования.

Создание классификатора

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

Обоснование алгоритма: рекуррентные нейронные сети - почти очевидный выбор для анализа текста, поскольку они могут фиксировать последовательный характер текста. Подразделения ГРУ были выбраны в пользу отрядов LSTM из-за краткости твитов.

Встраивание твитов

Используя предварительно обученные векторы внедрения glove.twitter.27B.200d, мы можем построить представление языка, которое точно отражает жаргон Twitter.

Поскольку данные Twitter часто содержат много орфографических ошибок, мы ограничим модель изучением 20 000 наиболее часто встречающихся токенов. Максимальная длина каждого текста ограничена 150 токенами: все, что длиннее, будет обрезано, а все, что короче, будет дополнено (примечание: 150 токенов могут быть излишними). Наконец, мы указываем, что каждый вектор имеет 200 координат.

Затем мы подбираем токенизатор, используя данные обучения.

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

Обучение классификатора

Мы позволяем модели тренироваться максимум в 20 эпох, оговариваем размер пакета из 128 точек данных и терпение 4 эпохи. Параметр терпения будет использоваться вместе с ранней остановкой, чтобы определить, когда и следует ли преждевременно завершить тренировку.

Этикетки также должны быть закодированы в горячем режиме.

Мы строим нашу сеть с одним двунаправленным слоем ГРУ. Двунаправленный компонент позволяет сети узнавать каждый твит, читая его с обоих направлений. За уровнем GRU следуют уровни объединения, которые помогают уменьшить дисперсию и вычислительную сложность.

Тестирование классификатора

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

В целом классификатор достиг точности 70,9%. Из матрицы неточностей мы видим, что она способна достаточно хорошо различать классы.

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

Рабочую панель, которая отображает распределение настроений в Твиттере с течением времени, можно найти здесь.

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

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

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

Спасибо за чтение. Следите за новостями.