Открытое государство и открытые данные
42,74
рейтинг
3 ноября 2013 в 19:47

Разработка → API для Российской общественной инициативы. Шаг 1: сбор и анализ данных

В качестве введения


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

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

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

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

Проблемы РОИ



Авторизация через ЕСИА (Госуслуги)

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

Открытые данные и API

Многих людей РОИ интересует не только с точки зрения их петиций, но и петиций вообще. Петиции интересный материал для всех кто хочет понять что волнует граждан и какие проблемы затрагивают всех более всего.
Открытые данные нужны для многих задач:
  • для мобильных приложения для отслеживания инициатив
  • для визуализации и аналитики
  • для прогнозирования успешности/провальности инициативы
  • для создания сервисов продвижения инициатив и привлечения внимания к ним


Собираем данные



Прежде чем начать делать полноценное API для РОИ, я начал с того что стал моделировать сбор информации оттуда и написал вот такой краткий документ на 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'е и с его помощью были подсчитаны индикаторы выше.
В папке данных — refined — лежат результаты предварительных расчетов в JSON.

Как оценить вероятность прохождения инициативы? В идеале желательно иметь подробности по статистике голосования за все время существования инициативы и по дням, но идеальной ситуации у нас нет и такая детализация доступна только авторам инициатив.
Пока же формула предсказаний очень проста. Подсчитать сколько людей потенциально может проголосовать можно по формуле:
votes + (votes / (probe_date_seconds — start_date_seconds)) * (end_date_seconds — probe_date_seconds)
  • votes — число голосов на дату выборки данных
  • probe_date_seconds — дата выборки данных в секундах
  • start_date_seconds — дата публикации петиции в секундах
  • end_date_seconds — дата завершения сбора информации о петициях в секундах


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


Получается что:
  • 6 петиций набирают до 100 тысяч голосов
  • 5 петиций наберут до 50 тысяч голосов
  • остальные 2492 петиции не наберут и этого
  • а 1641 петиция, скорее всего не наберет и по 1 тысяче голосов из которых


Или то же самое картинкой


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


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

Проголосовало 328 человек. Воздержалось 53 человека.

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

Автор: @ibegtin
Открытое государство и открытые данные

Комментарии (29)

  • +6
    Самая большая проблема roi, это его бессмысленность.
    То, что реально волнует людей заговаривается и спускается на тормозах еще на этапе «экспертной» проверки.
    Уже очень большое разочарование результатами голосований.
    Еще немного и люди плеваться начнут при упоминании сайта «общественной инициативы».
    То, что создано было для галочки рано или поздно станет ясно всем.
    • +6
      Смысл ROI в том, что в случае слива важной для Вас инициативы Вы сможете везде трубить об этом, ссылаясь на официально закреплённый текст инициативы с официально закреплёнными подписями граждан. Т.е. это не более чем дополнительный инструмент, а не волшебная палочка.
    • +4
      Про портал gorod.mos.ru тоже некоторые говорили, что он абсолютно бесполезен, между тем я лично знаю людей кто туда обращался и реальные меры принимались (ремонтировалось дорожное покрытие).
      • +1
        Ну а я лично туда обращался более десяти раз, из которых адекватная реакция была только на одно обращение. Остальные были либо отклонены (хотя оформлены были абсолютно соответствующим образом) по формальным поводам, либо были приняты, но «проверка показала, что проблемы не существует» или были приняты совершенно не те меры, которые должны были быть приняты. Эффективность в моем случае менее десяти процентов. При этом для воров из ЖКХ — куда выше, потому что липовые проведенные работы были выполнены подрядчиками отнюдь не бесплатно.
  • –2
    Поставил + статье только за то, что автор разместил в конце голосовалку. В принципе, идея интересная, но бессмысленная из-за бессмысленности самого сайта РОИ.
  • +2
    РОИ могла бы быть хорошей инициативой, но к ней никакого доверия так что теперь оно бессмысленно. В чем был смысл собирать какие-то голоса если все прошедшие инциативы тупо завернули. Если что-то и примут во внимание, то какую-нибудь карманную инициативу, под которую законопроект Единой России давно готов.
    • +1
      В таком случае ROI можно использовать как инструмент для вычисления лиц, заворачивающих инициативы.
  • +20
    Скоро тут будет много высказываний в духе:

    РОИ — бессмысленный сайт для выпуска пара, надо его закрыть

    Я откровенно охреневаю, товарищи, от такой недальновидности. Вы, те, кто это говорит, прошу, объясните развёрнуто свою позицию.

    Вы отдаёте себе отчёт, что подобными настроениями банально провоцируете власти на игнорирование ваших петиций? Я надеюсь никто не питал и не питает иллюзий, что институт народных инициатив был создан во благо народа, для электронной демократии и во имя добра. Вы же понимаете, публикуя инициативу, противоречащую линии партии, что у них будет совершенно чёткая цель — слить её. И вместо того, чтобы отстаивать свою позицию, вы разочаровываетесь в РОИ. Прекрасно, значит с точки зрения властей — лучший способ завалить РОИ вместе с инициативами — банально игнорировать их. Сами со временем отстанете и разойдётесь по форумам ворчать.

    Им за это ничего не будет

    А вы сами себя лишите инструмента из-за банальной инфантильности.
    Объясните мне, чем вы руководствуетесь, когда плюёте в РОИ, когда сливом занимается специально созданная для этого комиссия. Почему вы не требуете отстранить этих людей, заменить этих людей? Конкретных людей, которые стоят за сливом? При чём тут ресурс с инициативами?

    Вы хотите революции? Я пойму эту позицию, если вы делаете что-то для революции, кроме болтовни о том, что ничего не работает. Вы хотите митинги? Окей, организовывайте митинги, пикеты. Почему это должен делать кто-то другой? Вы хотите свалить? Окей, делайте «коридоры» для соотечественников. Хорошо, если вы, те, кто говорит о бесполезности РОИ, делаете это, но вы хотя бы дайте знать, иначе создаётся совсем нерадостное впечатление.

    Технологическое превосходство

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

    Прошу каждый минус к данному комментарию подкреплять пояснением
    • +2
      полностью согласен, сама идея РОИ очень перспективна, осталось всего ничего заставить администрацию исполнять свои же обещания… Да и сливать инициативы они не могут постоянно.

      Даже если инициативы не реализуются у РОИ несомненные плюсы как минимум в информировании населения о полезных инициативах и выделения задач волнующих все общество. А также консолидации сторонников толь или иной идеи.

      В перспективе с некоторыми улучшениями можно будет заменить всю Думу на один этот портал и настанет счастье в нашей многострадальной стране.
    • +1
      Вижу два минуса, не вижу аргументов. Если боитесь быть заминусованными — напишите в личку, размещу без указания авторства
  • +3
    Можно было бы организовать регистрацию онлайн с привязкой к номеру мобильного телефона например.
    Это то ограничение которое мы пока не можем преодолеть.
    Нельзя. Идея РОИ — верифицированные голоса. А при регистрации по номеру телефона любой человек смог бы зарегистрировать хоть сотню аккаунтов и эти самые голоса накрутить.
    • 0
      Точно так же специально обученные (и оплаченные) сто человек могут зарегистрировать по одному аккаунту и накрутить эти самые голоса. Любые супер-верифицированные голоса нужно проверять на фрод. Кстати, имея API, это буден намного легче делать.
      • 0
        Точно так же специально обученные (и оплаченные) сто человек могут зарегистрировать по одному аккаунту и накрутить эти самые голоса.
        От продажности людей никакие регистрации не помогут.
  • 0
    Я бы предложил следовать идее открытости до конца. Разработать некий начальный вариант API и пусть любые заинтересованные ресурсы его реализуют. Почему РОИ должна быть единственной площадкой для выражения мнения народа? Децентрализация это будущее. Когда появится пара-тройка таких площадок, само собой пойдет и развитие API. Агрегация данных, анализ, визуализация и т.д.

    Кроме прочего, неплохо показать власти, что народные инициативы могут двигаться и без ее указки.
    • 0
      На текущий момент РОИ определена Указом Президента Российской Федерации единственным ресурсом, инициативы с которого обязательно должны быть рассмотрены экспертными рабочими группами федерального, регионального и муниципального уровней.
  • 0
    Скорей всего я напишу сейчас то, что и так уже писал много раз, но высказаться всё таки хочется.
    1) РОИ сайт нужный и полезный. Да, пускай он работает совсем не так, как хотелось бы большинству присутствующих на хабре людей, но тем не менее вектор развития взят правильный, теперь главное идти по нему собственными силами. А значит надо создавать петиции по улучшению РОИ (тот же API) и правильно преподносить их людям (ведь без пиара петиция 100 тыс. голосов не наберёт, это всем понятно).
    2) Если честно, я мельком читал про экспертную группу и так далее. Но меня убил сам факт, что от народа, скажем так, туда пошёл лишь один человек. Почему вся экспертная группа — это власть? На мой взгляд часть экспертной группы (хотя бы несколько человек) — должны быть от народа. И их надо выбирать в самой петиции. Чтобы это были действительно эксперты в своём деле, а не люди далёкие от этого.
    3) Нужны региональные аналоги РОИ. Если мне не нравится, как были потрачены деньги при строительстве (сделано то откровенно плохо) отдельно взятой улицы в моём родном городе (Петрозаводск, но вообще это для примера), то на РОИ мне делать нечего. А письма в инстанции у нас куча людей писала, и по новостям у Мэрии уже через день после их выступления о том, что всё плохо, внезапно стало всё хорошо :)
    • 0
      Вообще то на РОИ уже есть инициативы муниципального уровня. Среди завершенных вот эта, например, Во всем остальном нужно добиваться того, чтобы РОИ работала как было заявлено, а не судачить о том, что все зря и бесполезно, работает не так и вообще.
      • 0
        И здорово, что есть. Но, согласитесь, подразделы РОИ для регионов, с меньшим количеством голосов — было бы здорово. Ведь далеко не все региональные инициативы мониторятся региональными властями. Но, что что-то делается — реально круто.
        • 0
          Сейчас у каждой экспертной группы региона заведен личный кабинет на РОИ. В нем они видят все свои инициативы и прогресс набора голосов. По всем муниципалитетам РФ (более 24 тысяч) также заведены ЛК, но еще не все направили нам данные об уполномоченных сотрудниках, которые будут с данным ЛК работать, но работа ведется, получаем сотни заявок в день. В регионе и муниципалитете не требуется сбор 100 тысяч голосов, там необходимо набрать лишь 5% от постоянно проживающего населения.
          • 0
            Большое спасибо, за ваш комментарий, о таких тонкостях я не знал :)
    • 0
      Но меня убил сам факт, что от народа, скажем так, туда пошёл лишь один человек
      Он туда еле-еле пробрался по своим каналам. Изначально вообще не хотели никого пускать
      • 0
        Ну так это и не правильно. С властью должен быть диалог, ведь сама идея РОИ именно в этом (по крайней мере, так её воспринимаю я). И если появиться инициатива, в которой оговорятся частичное улучшение РОИ, то люди её поддержат.
  • 0
    Было бы круто, если бы в РОИ сделали OAuth. Появилась бы возможность иметь верифицированных пользователей на других ресурсах, не создавая при этом этим пользователям проблем.
    • 0
      Только не на рои, а на Госуслугах
    • +1
      РОИ в своей работе использует авторизацию через ЕСИА.
      В рамках работ этого года Минсвязь поручила: «Кроме того, ЕСИА должна обеспечить поддержку стандарта oAuth 2.0. «Цель этого в том, чтобы подключить авторизацию через ЕСИА было технически так же просто, как поставить кнопку «Войти с ВКонтакте» или «Войти с Facebook», — ранее объясняли CNews в Минкомсвязи
      Подробнее: gov.cnews.ru/top/2013/11/01/rstyle_zabral_u_at_consulting_kontrakt_na_razvitie_edinoy_sistemy_identifikacii_548162»
      • 0
        Александр, я вижу Вы в курсе внутренних дел РОИ. Вот меня больше волнует появление официально API. Планируется ли?
        • 0
          Иван, этот вопрос сейчас в проработке.
      • 0
        Дико приветствую! У меня крутится в голове мысль о создании площадки для городского самоуправления, и вопрос регистрации верифицированных пользователей — один из самых сложных в этой теме.
  • 0
    Не уверен, что в API должен быть прямо расчёт успешности инициативы. Заранее непонятно, какая информация будет востребована, поэтому такие выдуманные из головы задачи интересны не сами по себе, а только в плане используемых примитивов. Например, для этой задачи нужен достаточно очевидный примитив «голоса по дням», соответственно моделирование его в API было бы полезно. А прогноз по голосованию и, соответственно, саму вероятность, можно подсчитать на основе этих данных уже многими разными методами — кому какой нравится.

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

Самое читаемое Разработка