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

Когда я пишу эти строки, сегодня было отправлено уже 717 755 417 твитов. (InternetLiveStats) Если вы ищете такие ключевые слова, как COVID-19, корона, коронавирус, covid и т. д., вы, вероятно, увидите, что процент твитов, содержащих эти ключевые слова, действительно высок.

Целью этого проекта является создание конвейера данных, который извлекает данные из Twitter, выполняет очистку и преобразование, реализует анализ тональности и визуализирует результаты на карте.

Концепция проекта и конвейера данных проиллюстрирована ниже.

  • Извлечь данные из Twitter как объект JSON
  • Загрузить данные в реляционную базу данных SQLite3
  • Очистите данные, чтобы удалить URL-адреса и ключевые слова Twitter, такие как «RT», «FAV».
  • Перевести твит на английский
  • Конвертируйте смайлики в текстовый формат. Это преобразование полезно для анализа настроений.
  • Внедрить анализ настроений
  • Получите широту и долготу твитов, содержащих информацию о местоположении.
  • Загрузите обработанные данные в реляционную базу данных SQLite3.
  • Используя ранее извлеченные широту и долготу, отметьте карту цветными кружками.

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

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

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

(статистика по коронавирусу взята с https://www.worldometers.info/coronavirus/)

Примечание. Доступных данных по общему извлечению для Нидерландов и Великобритании нет, они не были включены в расчет корреляции для процента извлечения.

Каждый твит с информацией о местоположении отмечен на карте цветным кругом. (зеленый: положительные твиты, красный: отрицательные твиты)

Я опубликовал карту, чтобы она была доступна в интерактивном режиме https://aykcandem.github.io/SA_Map/

Вывод:

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

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

Язык/Инструменты/Библиотеки

  • Язык программирования: Python
  • Инструменты: SpyderIDE, SQLite3, Jupyter Notebook.
  • Библиотеки: NLTK, TextBlob, Tweepy, GeoPy, Folium, Pandas, Matplotlib, Tweet-Preprocessor, Demoji

Первоначально опубликовано на https://www.linkedin.com.