Материал: Разработка сервиса агрегации открытых данных и данных из социальных сетей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Проект «Жалобин» представляет собой мобильное приложение для отслеживания цен в аптеках. Пользователь имеет возможность сравнивать цену в той или иной аптеке с максимально допустимой и помогать пресекать нарушения ценовой политики. Достигается это путем отправки обращения в Управление Роспотребнадзора.

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

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

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

Тем не менее, существует ряд проблем, которые необходимо преодолеть для достижения наилучшего результата. До сих пор существует недостаток спроса и предложения на сервисы на основе открытых данных, что затрудняет его воздействие. Открытые данные могли бы быть значительно более эффективными, если бы их публикация дополнялась обязательством действовать на основе сформированного понимания. К сожалению, открытые данные создают риски, особенно для обеспечения конфиденциальности и безопасности. Если они не будут контролироваться должным образом со стороны уполномоченных органов, их публикация может иметь весьма пагубные последствия. В заключение стоит отметить, что распределение ресурсов является недостаточным и ненадежным, что становится одной из основных причин ограничения успеха или вовсе провала сервисов на основе открытых данных [10].

1.3 СОЦИАЛЬНЫЕ СЕТИ


На сегодняшний день трудно представить себе мир без социальных сетей. Уже вполне можно сказать, что они стали неотъемлемой частью нашей повседневной жизни. Несмотря на то, что широкое распространение социальные сети получили во второй половине нулевых, их истоки уходят в конец прошлого века, а именно в 1995 год. Принято считать, что первой социальной сетью был сайт «Classmates», которая по своей сути больше напоминала базу данных выпускников школ и колледжей США. Однако сама идея социальных сетей зародилась именно в этом проекте, который позволял не только искать своих одноклассников и людей, с которыми вместе учились, но и контактировать с ними. Конечно, функционал того сайта был весьма примитивен по сравнению с современными возможностями социальных сетей, тем не менее, с этого портала началось формирование нового вида информационных систем [1].

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

Наряду с этим социальные сети содержат огромное количество информации. С каждым годом поток нового контента, который генерируют сами пользователи, только растет. В основном это достигается путем увеличения активных пользователей социальных сетей. По состоянию на июль 2016 года в самой крупной социальной сети мира Facebook насчитывалось более 1,7 миллиарда пользователей [30]. Это почти неограниченный источник данных для анализа поведения пользователей. Существуют различные виды анализа поведения, одним из которых является анализ активности пользователей. Его можно назвать одним из ключевых показателей, который характеризует, сколько людей выражает свои мысли. Выражение собственной позиции может быть проанализировано и является важнейшим и одним из основных источников поиска и отслеживания трендов. Это своего рода индикаторы общественных интересов и настроений, которые позволяют улавливать назревающие проблемы еще на этапе их формирования. Помимо этого, активность в социальных сетях помогает компаниям оценивать количество упоминаний брендов. С точки зрения рекламных кампаний такой анализ позволяет понять, по каким каналам и каким образом лучше взаимодействовать с потенциальными покупателями. Чаще всего такими компаниями являются производители одежды и парфюмерии, тем не менее, подобный анализ может быть полезен почти во всех отраслях. Более того, активность пользователей в социальных сетях позволяет применять семантический анализ текстов, которые они публикуют. В результате такого анализа можно вынести множество полезной информации. Например, выделение ключевых слов позволяет построить корреляцию между тем, какие темы затрагиваются в тексте и количеством просмотров и отметок «мне нравится». Однако главное, что можно извлечь из семантического анализа - это тональность текста. Другими словами, это то, как люди реагируют на то или иное событие или проблему. С помощью такого анализа можно выявлять интересы и позицию пользователей. Такая информация в первую очередь полезна государству с точки зрения безопасности, тем не менее, она может найти применение и в бизнесе.

Еще одной особенностью социальных сетей является тот факт, что они представляют собой нечто большее, чем просто большая база данных. Прогресс в информационных технологиях сделал огромный шаг вперед, благодаря чему социальные сети позволяют следить за активностью пользователей в реальном времени. Сейчас такая информация может быть доступна каждому пользователю интернета. Применение такой возможности можно найти в сфере предиктивного поведения [10]. Отслеживание формирования и динамики трендов становится возможным в реальном времени. В контексте маркетинга анализ активности пользователей может предсказывать, будет ли размещение рекламы эффективным в конкретное время или же оно не достигнет своей цели. Также с помощью такой аналитики можно строить прогнозы относительно того, какие настроения будут преобладать в следующий момент времени. Помимо вышеперечисленных примеров использования такой возможности, существует еще один неочевидный способ использования аналитики в реальном времени. Речь идет о предсказывании природных катаклизмов. В настоящее время современные способы заблаговременного оповещения населения о приближающейся природной катастрофе попросту отсутствуют. До сих пор человечеству не удалось найти способ определять землетрясения или извержения вулканов с высокой степенью вероятности. Однако в результате анализа социальных сетей на предмет упоминания природных катастроф было выявлено, что некоторые сообщения были опубликованы до их возникновения. Это может быть объяснено тем, что хозяева питомцев реагировали на странное поведение своих любимцев и делились этим со своими подписчиками в социальной сети. Подобные сообщения были зафиксированы за несколько минут до возникновения землетрясений или извержений вулканов. Исходя из этого, можно сказать, что анализ сообщений пользователей на предмет упоминания природных катастроф в реальном времени может оповестить о надвигающейся угрозе местных жителей, в результате чего это может спасти человеческие жизни.

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

1.4 АНАЛИЗ ИССЛЕДУЕМОЙ ПРОБЛЕМЫ


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

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

Одним из способов привлечение внимания общественности к открытым данным - это агрегация их с данными из социальных сетей. Социальные сети развиваются высокими темпами, имеют широкий охват аудитории и высокую вовлеченность пользователей. Более того, пользователи проявляют высокую активность в социальных сетях. Такие сайты входят в топ ресурсов по генерации трафика в интернете по всему миру. Идея состоит в том, чтобы соединить открытые данные с данными об активности пользователей социальных сетей. Во-первых, существуют способы производить мониторинг активности в режиме реального времени. Во-вторых, сразу будет видно, какие наборы из открытых данных коррелируют с активностью пользователей, а какие нет. Например, если отслеживать активность пользователей по их месторасположению, то можно наложить на одну карту эти данные и адреса парков и скверов. Это даст возможность проанализировать, что интересует пользователей социальных сетей в том или ином месте, что вызывает всплеск активности, а к чему они равнодушны. Еще одним пример может стать исследование поведения пользователей. Допустим, если назначить на каждый парк или сквер ответственного за него человека, то можно контролировать процесс ухода за ним. Скорее всего, в более ухоженные парки и скверы будет ходить большее число посетителей, а установленные арт-объекты и прочие украшения только увеличат интерес к этому месту. К тому же, если производить мониторинг активности пользователей социальных сетей по их месторасположению, можно будет легко определить, произвело это какой-то эффект или нет. Разумеется, вся информация будет доступна в режиме реального времени на сайте проекта. Все это придаст сервисам динамику, то есть повысит интерес пользователей и, скорее всего, заставит их вернуться как минимум еще один раз.

1.5 ТЕХНОЛОГИИ ОБРАБОТКИ ДАННЫХ


На сегодняшний день технологии обработки данных сделали большой скачок в своем развитии. Существует два основных направления: развитие аппаратного обеспечения, то есть совершенствование процессоров и параллельной работы ядер компьютера, и разработка программного стека. Первое направление уже добилось выдающихся результатов даже в небольших устройствах. Если рассмотреть современные мобильные телефоны, можно увидеть, что они уже обогнали по мощности компьютеры пятилетней давности [20][9]. В скором времени стоит ожидать примерно равных показаний производительности у мобильных устройств и настольных персональных компьютеров. Все это достигается путем развития новых технологий производства микросхем, позволяющих добиться более компактного размещения элементов на плате. Также стоит отметить, что стоимость производства комплектующих компьютеров постоянно падает. Самым дорогим элементом серверов всегда являлась оперативная память. На данный момент она по-прежнему остается таковой, однако ее цена позволяет закупаться в достаточном количестве под конкретные задачи. Наряду с этим, можно заметить, что развитие аппаратного обеспечения шло плавными темпами, причем самые высокие темпы роста выпали на конец прошлого века.

Развитие же программного обеспечения в обработке данных можно назвать скачкообразным, поскольку оно во многом связано с развитием сопутствующих технологий. Изначально был один единственный подход - все вычисления производить на одной машине. Такой способ просуществовал ровно до того момента, когда появились сетевой стек надежные протоколы передачи данных. Сразу же стало ясно, что вычислительных ресурсов персональных машин недостаточно для трудоемких задач, поэтому целесообразно было использовать центральный сервер исключительно для вычислений, а локальные компьютеры оставить пользователям только для взаимодействия и манипуляцией данных [4]. При таком подходе необходимо было иметь только один мощный сервер и локальную сеть. Такая архитектура была названа клиент-серверной, и существует она и по настоящий момент. Оператор компьютера мог написать инструкции по обработке данных, то есть откуда их загрузить, что с ними сделать и куда сохранить, а программный стек осуществлял отправку загруженных данных на сервер, там их обрабатывал и отдавал результат. Наиболее известные программные реализации такого подхода - это RPC (Remote Procedure Call), Java RMI (Java Method Invocation) и CORBA [8].

Следующим витком развития стало использование кластеров вместо одного центрального сервера. В какой-то момент времени даже мощного центрального сервера перестало хватать для определенных видов вычислений. Резко встал вопрос о распараллеливании вычислений между несколькими физическими серверами. Так появился новый фреймворк Hadoop. Появление Hadoop’а стало началом эпохи больших данных, поскольку это был настоящий прорыв в обработке больших массивов информации. Это фреймворк с открытым исходным кодом, написанным на Java. Это обуславливает широкую распространенность за счет огромного сообщества Java-разработчиков и сторонников открытого программного обеспечения. Hadoop спроектирован таким образом, что он способен работать в распределенной среде и обрабатывать такое количество данных, объем которых ограничивается лишь дисковым пространством [19]. В основе этого фреймворка лежит революционный подход к распределенным вычислениям: поскольку при больших объемах данных много времени тратится на транспортировку их по сети, было решено отправлять не данные к обработчику, а код к данным. Это позволило добиться качественного увеличения скорости обработки данных, поскольку обработчики занимают меньше 200Кб и передаются по сети почти мгновенно. Также в стек технологий Hadoop входит распределенная файловая система HDFS (Hadoop Distributed File System). Она позволяет хранить данные на нескольких сетевых узлах, обеспечивая тем самым распределенную работу с данными. HDFS считается надежной распределенной файловой системой, поскольку обеспечивает отказоустойчивую работу в распределенной среде с поддержкой резервного копирования и репликации данных. Это значит, что если какой-либо узел станет недоступен, его с легкостью сможет заменить другой, где продублированы все данные. В качестве основной вычислительной технологии Hadoop использует алгоритм MapReduce, который изначально был разработан компанией Google. Главный принцип этого алгоритма - это принцип «разделяй и властвуй», то есть большие задачи разбивать на подзадачи, и так до тех пор, пока каждая отдельная единица не станет считаться достаточно просто. После разбиения задач на подзадачи необходимо произвести сбор результатов в одно целое, что и будет являться конечным результатом выполнения программы. Еще одной характерной чертой Hadoop является тот факт, что он не зависит от какой-либо компании. Другими словами, это лишь фреймворк с открытым исходным кодом, предоставляющий возможности распределенной платформы по обработке больших массивов данных. Существуют несколько основных поставщиков продуктов на основе Hadoop: это Apache, Hortonworks, Cloudera и MapR. Всех их объединяет то, что, в конечном счете, они выполняют одну и ту же задачу - распределенную обработку данных. Тем не менее, у каждой компании свой подход к построению информационных систем. Более точно, каждой компании требуется решение, ориентированное на эффективное использование вычислительных мощностей их конкретных задач. В то время как Apache предлагает более общий вариант использования Hadoop под широкий спектр задач, Hortonworks стремится к пакетной обработке данных, причем как можно реже. Например, каждый день в базу данных поступают миллионы записей, причем не так важно с какой частотой. Пакетная обработка данных подразумевает, что стоит все поступающие данные сохранять в хранилище данных, где они будут ждать дальнейшей обработки. После того, как система решает, что данных накопилось достаточно, на этом этапе вступает Hadoop. Кластер Hadoop отвечает за загрузку данных из источника (в общем случае из HDFS), производит предопределенные разработчиками операции над данными и сохраняет их в нужном виде обратно в распределенную файловую систему. При таком подходе достигается существенная экономия времени на поднятие кластера и развертывания приложений. Гораздо эффективнее накапливать данные, а потом з один проход осуществлять вычисления над ними, чем каждый раз при поступлении данных их обрабатывать. Это и называется пакетной обработкой информации (batch processing). Тем не менее, также необходимо понимать, что минимальный размер окна расчета данных здесь исчисляется часами, чаще всего это 1 сутки. Проблемы такого подхода очевидны: компании с каждым годом все более ужесточают требования к частоте построения отчетности и аналитики. Из-за этого все чаще встречается требование к анализу в виде обработки данных в реальном времени или в режиме близкому к реальному времени. С такими задачами решения на основе чистого Hadoop справляются крайне плохо. Их можно назвать тяжеловесными и неповоротливыми технологиями, которым нужно время для старта, для развертывания. В современном мире информационных технологий такие решения начинают вытеснять более быстрые фреймворки.