100 дней Зеленского
Автор: Алексей Смагин
Дата-история: «100 дней Владимира Зеленского»
Материал опубликован Студией Инфографики РИА Новости 27 августа 2019 года
Инструменты: Python (библиотеки Selenium, requests и BeautifulSoup, googletrans), JavaScript, Tableau Public, Adobe Illustrator, ai2html
Источники данных: тексты указов и законопроектов
Эту работу я делал для Студии Инфографики РИА Новости. Тогда Студии часть работ заказывала редакция РИА, и делала это к важным инфоповодам, каким и посчитала 100 дней правления нового президента Украины, Владимира Зеленского. Аналогичную работу Студия делала и к 100 дням правления президента Соединённых Штатов Дональда Трампа — руководитель посоветовал мне ориентироваться на неё.
Поиск идеи
Работа про Трампа была основана на анализе его предвыборных обещаний. Чтобы войти в контекст, я начал читать новости про президента Украины на российских порталах и пытался найти там его обещания. В итоге я быстро утомился от однообразных текстов и ничего полезного в них не нашёл. Тогда я решил выгрузить заголовки и ссылки на все новости про Зеленского с РИА Новостей и РБК в надежде сделать текстовый анализ. Забегая наперёд, скажу, что в итоговый проект результаты этой работы не пошли.
Парсер для порталов я писал на языке Python и использовал библиотеку Selenium, которая имитирует действия пользователя в браузере. Основная сложность заключалась в «бесконечной ленте» — нужно было листать окно браузера, чтобы загрузить больше новостей. В Selenium нет встроенной функции для этой цели, однако библиотека позволяет запускать команды на языке JavaScript, с помощью которых можно выполнить эту задачу.
Фрагмент скрипта для парсинга РБК
Пока парсеры работали, я начал изучать другие источники, и подумал, что информация об обещаниях может содержаться на сайте президента Украины. В русскоязычной версии сайта не нашлось ничего интересного, и что-то дёрнуло меня посмотреть другие языки. Идея оказалась крайне удачной — в украиноязычной версии появился раздел с документами, в котором, в том числе, нашлись указы и распоряжения* всех президентов Украины с 1993 года! Это, конечно, не обещания, но большой простор для дата-анализа. Уже тогда я понял, что буду строить свою работу вокруг анализа деятельности аппарата Зеленского.
*Далее в тексте я могу говорить «указы», подразумевая «указы и распоряжения».
Как я анализировал указы
Сначала я выгрузил тексты всех указов Зеленского с сайта президента. Сделал я это при помощи Python, а также библиотек requests и BeautifulSoup. Информацию с сайта удалось получить без особых трудностей.
Датасет я сразу закинул в Tableau, и удивился, как продуктивно успел поработать аппарат президента за ~70 дней (работу мы начинали делать за месяц до юбилейной даты).
Указы и распоряжения президента по дням. Указы отмечены рыжим цветом, распоряжения — синим.
На тот момент Зеленский успел выпустить 428 указов. Это много или мало? Сначала я думал сравнить продуктивность президента Украины с Трампом, но руководитель Студии остановил меня от этой затеи. В итоге я сравнивал Зеленского с двумя его предшественниками — Виктором Януковичем и Петром Порошенко.
Тексты на украинском я воспринимал с огромным трудом, поэтому искал способ автоматически их перевести. Я написал небольшой скрипт, который использует библиотеку googletrans — для перевода текстов через Google Translate. Автоматический перевод с украинского на русский оказался очень хорошим.
Так выглядит скрипт для перевода текстов указов
Я решил, что буду анализировать темы указов, и первое, что мне сразу бросилось в глаза — среди них оказалось очень много увольнений. При помощи скрипта я пометил все указы, в которых встречались слова «увольнение», «отстранение», «освобождение», и посчитал, сколько их в общей доле документов. Оказалось, что 60% указов Зеленского на тот момент касались именно увольнений. Об увольнениях мы сделали несколько графиков — отметили, кого именно уволил президент, и в каких регионах Украины произошли самые большие «чистки». Эту информацию легко было получить из названий указов.
Другие темы я разметил в полуавтоматическом режиме — отсматривал документы, определял в них ключевые слова, и добавлял их в скрипт. Например, указы, в которых встречались слова «награждении», «присвоении», «стипендий», «грантов», я отнёс к категории «Награждение, присвоение звания». А указы со словами «конкурс», «кандидат», «выбор» — к категории «Поиск кандидатов на должность». Указов было немного, поэтому я вручную перепроверил возможные неоднозначные ситуации.
Инфографика, которая вышла по итогам этого анализа
Как я собирал историю
Когда я получил статистику по количеству увольнений в регионах и нанёс информацию на карту, то обратил внимание, что Зеленский уволил больше людей на северо-западе Украины.
Мне стали интересны причины такой закономерности. Самостоятельно я не смог ничего найти, поэтому попросил у нашей редакции контакт с корреспондентами, занимающимися темой Украины. Редакция в контакте мне отказала, сославшись на сильную занятость сотрудников. Редактор отдела политики «Новой газеты», где я раньше работал, посоветовал мне написать украинскому журналисту Павлу Казарину, однако Павел тоже не смог помочь мне определить причины действий Зеленского. Тайна регионального вопроса так и осталась нераскрытой.
Я понимал, что из пары графиков про увольнение хорошую историю не сложить, поэтому стал дальше искать следы деятельности Зеленского. Так я нашёл информацию про конфликт Зеленского с Верховной Радой, члены которой мешали действующему президенту принимать законы. Я описал этот конфликт, а также выгрузил все законопроекты, которые рассматривались в период работы Зеленского в качестве президента с сайта Рады и вручную разметил их темы — таких законов было всего 19.
Тему обещаний тоже удалось раскрыть — после долгого изучения источников, я сумел найти интервью двух его советников, в которых они говорили о планах команды Зеленского на первое время. Я выделил шесть главных направлений, и вручную искал, что именно Зеленский успел сделать по ним за первые 100 дней.
Как мы визуализировали материал
Над инфографикой мы работали вдвоём с дизайнером Настасьей Луговой, а иллюстратор Елена Перфилова сделала нам красивую обложку с Зеленским.
Прототипы некоторых графиков я собрал в Tableau, а Настя сделала в Illustrator два шаблона материала — для компьютеров и мобильных устройств. Эти шаблоны мы загрузили в скрипт ai2html, чтобы получить код для адаптивного материала. В Студии инфографики РИА Новостей есть своя версия этого скрипта, который сделали наши программисты с учётом особенностей сайта ria.ru.