Api Для Российской Общественной Инициативы. Шаг 1: Сбор И Анализ Данных



В порядке введения Вы все наверняка помните такое явление, как Российская Общественная Инициатива ( www.roi.ru ) — инициатива, провозглашенная государством в лице федерального правительства по сбору подписей под онлайн-петициями.

Предполагается, что если в течение 1 года по петиции будет собрано 100 тысяч голосов, то петиция будет официально рассмотрена нашими властями.

И у него даже есть шанс получить статус законопроекта.

При этом данный фильтр уже прошло 6 петиций - https://www.roi.ru/complete/ две из них действительно прошли сбор в 100 тысяч голосов, а 4 петиции получили гораздо меньше голосов, но власти успели отреагировать.

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

Поэтому ROI пока не последний из государственных проектов и интерес к нему есть.

В то же время ROI имеет ряд недостатков и проблем.



Проблемы с рентабельностью инвестиций



Авторизация через ЕСИА (Госуслуги)
Об этом уже много написано - авторизация, конечно, привела к тому, что сотни тысяч людей начали регистрироваться на госуслугах, чтобы иметь возможность проголосовать, но в любом случае это барьер.

Это не так-то просто организовать и пока не все граждане имеют такую регистрацию.

Можно было бы организовать онлайн-регистрацию, привязанную, например, к номеру мобильного телефона.

Это ограничение, которое мы пока не можем преодолеть.



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

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

Открытые данные необходимы для многих целей:

  • для мобильных приложений для отслеживания инициатив
  • для визуализации и аналитики
  • предсказать успех/провал инициативы
  • создать сервисы для продвижения инициатив и привлечения к ним внимания


Сбор данных

Прежде чем приступить к созданию полноценного API для ROI, я начал с моделирования сбора информации оттуда и написал на Github этот небольшой документ — API для рентабельности инвестиций Где я ранее описал основные понятия, которые есть в системе и которые можно извлечь теоретически.

Более того, сразу появились ограничения:

  1. Данные о голосах за/против доступны только авторизованным пользователям.

    Учитывая, что авторизация через Госуслуги накладывает определенные ограничения.

    Авторизацию, конечно, можно обойти, но сейчас мы собираем данные, которые не имеют таких ограничений.

  2. Данные разделены между описанием петиции на странице петиции и списком петиций.

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

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

В качестве хранилища использовалась MongoDB. Здесь вы можете скачать и посмотреть - github.com/ivbeg/apiroi/blob/master/scripts/data_extract.py Скрипт максимально простой и конечно потом будет кардинально изменен, чтобы регулярно обновлять петиции и сразу приводить их в единый формат. Данные были собраны довольно быстро – на это ушло буквально несколько часов.

Не буду вдаваться в подробности того, как пишут парсеры — это очень простой случай, никаких сюрпризов здесь нет. Полученные данные теперь доступны на Github здесь.

github.com/ivbeg/apiroi/tree/master/scripts/data/raw и в хабе открытых данных - Hubofdata.ru/dataset/roi-dump Итак, данные собраны, что дальше?

Анализ данных

Я назвал этот пост постом об API, потому что конечная цель — получить его.

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

API может быть больше, чем просто API для возврата данных; API может выполнять гораздо больше задач.

Для начала давайте подумаем, что мы можем извлечь из наших данных, что удобно для визуализации.

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

Вот некоторые мысли, которые пришли мне в голову о том, что может быть интересно: 1. Понять вероятность того, что инициатива наберет 100 тысяч голосов.

2. Оценить интенсивность голосования за инициативу.

3. Определить наиболее «проголосовавших авторов» 4. Определите самые популярные темы Собственно, для того, чтобы начать все это определять, был написан скрипт data_process.py, он есть на github и с его помощью были рассчитаны приведенные выше показатели.

В папке данных - изысканный — результаты предварительных расчетов в формате JSON. Как оценить вероятность прохождения инициативы? В идеале хотелось бы иметь подробную статистику голосования за весь период существования инициативы и по дням, но у нас не идеальная ситуация и такая детализация доступна только авторам инициатив.

На данный момент формула прогноза очень проста.

Посчитать, сколько человек потенциально могут проголосовать, можно по формуле: голоса + (голоса / (probe_date_секунды - начальная_дата_секунды)) * (конечная_дата_секунды - зонд_дата_секунды)

  • voices — количество голосов на дату выборки данных
  • зонд_дата_секунды — дата выборки данных в секундах
  • start_date_секунды — дата публикации петиции в секундах
  • end_date_секунды — дата окончания сбора информации о петициях в секундах
Другими словами, все рассчитано на то, что люди будут голосовать так же, как голосовали раньше, и распределение голосов будет примерно равным.

Это, конечно, скорее всего, не так и многое зависит от медийной активности инициаторов, но это дает начальное приближение.

И вот первый анализ показал картинку, представленную на скриншоте.



API для Российской Общественной Инициативы.
</p><p>
 Шаг 1: Сбор и анализ данных

Оказывается, что:

  • 6 петиций набрали 100 тысяч голосов
  • 5 петиций наберут до 50 тысяч голосов
  • остальные 2492 петиции даже этого не получат
  • а 1641 петиция скорее всего не наберет и 1 тыс.

    голосов, из них

Или та же картинка

API для Российской Общественной Инициативы.
</p><p>
 Шаг 1: Сбор и анализ данных

Из чего делаю вывод, что в API полезно включить множество дополнительных возможностей:
  • необходимо предусмотреть сохранение всей истории голосования для корректировки шансов на успех/неуспех петиции
  • необходимо сделать возможным просчитать успех любой из петиций
  • Нам нужен сокращатель ссылок для каждой петиции, потому что работать с их ссылками сейчас совершенно неудобно - они незапоминающиеся
  • нужна опция подписки RSS
  • и многое другое
Жаль, что сами создатели ROI не прилагают никаких усилий, чтобы сделать ROI открытым как с точки зрения API, так и с точки зрения данных.

Но благодаря тому, что 1 шаг пройден — доступна первая загрузка данных и есть примеры скрипта для загрузки, теперь такое API может сделать любой желающий.

И в последующих постах я напишу об этом подробнее.

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Вам нужен API для рентабельности инвестиций? 42,86% Да, но официально от создателей ROI.ru 141 31,31% Да просто необходимо, любое 103 20,97% Нет, ROI — бессмысленная инициатива 69 1,82% Нет, это просто ненужно для такого сервиса 6 3,04% Есть достаточно открытых данных без API 10 Проголосовали 329 пользователей.

54 пользователя воздержались.

Теги: #Открытые данные #петиции #roi #Открытые данные

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.