Анализируя более тысячи твитов в минуту…

Вступление

Президент Соединенных Штатов Дональд Трамп, возможно, сегодня является самой противоречивой фигурой в мире. Независимо от того, в чем заключаются ваши политические взгляды, вы, вероятно, имеете по крайней мере несколько твердое мнение о Трампе. Будь то непостоянство его действий или дерзость того, как он делает то, что он делает, кажется, что все зациклены на нем.

Это нашло отражение в множестве интересных проектов, таких как Trump Tracker, FiveThirtyEights Popularity Ratings и Track Trump. Помня об этих проектах, я подумал, что брошу свою шляпу на ринг и отправлю что-нибудь свое.

Обзор

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

Посмотреть проект

Если вас не интересует закулисная история, не беспокойтесь. Не стесняйтесь пропустить все детали ниже и проверить код на моем Github или саму работу по этой ссылке ниже:

Счетчик настроений Трампа

Контур

Полный процесс описан ниже и более подробно объяснен в оставшейся части статьи:

  1. Создал твиттер-стример, который собирает твиты со словом Трамп и передает их в фреймворк.
  2. Использовал пакет Анализ настроений VADER, чтобы предположить, насколько положительным или отрицательным был каждый данный твит.
  3. Скорректированы временные рамки до последних пяти минут и усреднены оценки тональности всех твитов.
  4. Перенес админку в приложение Flask для развертывания
  5. Спланировал, как я хочу эффективно передавать идеи, и разработал пользовательский интерфейс.
  6. Сложил все воедино и разместил веб-приложение на Heroku.

Цели

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

Инструменты и программное обеспечение

Придя к этому проекту с небольшим опытом разработки Python, моей первой задачей было определиться с окружением. После небольшого размышления я остановился на Pycharm (версия 2017.1.5). Я обнаружил, что Pycharm очень интуитивно понятен и эффективен для разработки веб-приложений. Я уверен, что вернусь к нему когда-нибудь в ближайшем будущем. Если вы студент и заинтересованы в Pycharm, вы можете получить его бесплатно здесь.

Я также использовал Python 3.5.2 и несколько других зависимостей, которые вы можете найти в репозитории Github в файле requirements.txt. Наконец, я использовал Heroku для размещения веб-приложения.

Back-End

Первым шагом проекта было выяснить, как транслировать твиты, а затем правильно их отформатировать для анализа. Для потоковой передачи я решил использовать Tweepy и реализовал базовый слушатель, который при запуске собирал все твиты со словом Trump. Затем класс берет текущий твит и должным образом форматирует его для добавления в текущий фрейм данных pandas. DataFrame постоянно обновляется, чтобы хранить данные только в пределах определенного временного порога (5 минут), чтобы получать информацию практически в реальном времени.

После ввода данных и их правильного форматирования выполняется анализ тональности. После небольшого исследования я решил использовать VADER (Словарь Валентности и Сантимент Reasoner). Я выбираю VADER, потому что он особенно хорошо разбирается в данных из социальных сетей.

Внешний интерфейс

Что касается пользовательского интерфейса, то он был создан в первую очередь с использованием D3.js и HTML. Счетчик был разработан с использованием проекта Мэтта Магоффина с открытым исходным кодом в качестве отправной точки, и общее впечатление от веб-сайта было в значительной степени мотивировано Track Trump.

Одна из вещей, с которой я боролся больше всего, - это интеграция серверной части с клиентской, чтобы счетчик соответствовал текущему среднему баллу тональности. В конце концов, я смог обойти эту проблему, объединив разные файлы JavaScript и используя геттеры и сеттеры в своих интересах. Что касается пользовательского интерфейса, вы можете увидеть преобразование ниже:

Развертывание

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

Образовательные ресурсы

Как вы, наверное, догадались, я пришел в это путешествие, чтобы приобрести некоторые навыки, которых я не хотел. Для этого я использовал, казалось бы, бесконечное количество онлайн-ресурсов. Тем не менее, было два, которые действительно выделялись для меня в виде бесплатного курса Разработка полного стека от Udacity и различных руководств по Youtube от sentdex.





Отражение

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

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

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

Подведение итогов

Надеюсь, вам понравилось слышать о создании Трампа для отслеживания настроений. Если вам интересен код, обязательно посмотрите его на Github.

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