Разработка программного обеспечения для визуализации развития отношений между пользователями Twitter по мере роста социальной сети
Королев Д.В., Власова А.А., НИУ Высшая школа экономики, МИЭМ [email protected], [email protected]
Аннотация
В данной работе описывается разработка комплекса программ, которые предназначены для отображения на карте мира развития взаимоотношений между пользователями Twitter по мере роста популярности социальной сети. Для формирования базы пользователей Twitter используется Twitter Api (интерфейс, позволяющий получать разную информацию из Twitter). Связи между пользователями отображаются на картах Google Maps, взаимодействие с которыми происходит через Google Maps Api. В результате были написаны несколько логически разделенных программ, которые в совокупности позволяют выявить дружественные связи между пользователями Twitter и наглядно продемонстрировать их на карте.
1 Введение
Приобретение новых друзей является важной составляющей жизни человека. В настоящее время для знакомств создано множество интернет ресурсов, которые позволяют это делать легко и не выходя из дома. В сервисе текстовых сообщений Twitter люди, выражая свои мысли и читая мнения других, находят себе новых знакомых, которые близки к ним по стилю жизни или по увлечению какому-нибудь хобби. Таким образом каждый день образуется огромное количество новых дружественных связей по всему миру.
Целью работы является написание системы программ, которая предназначена для отображения на карте мира разрастания дружественных связей между пользователями Twitter по мере роста популярности социальной сети.
Решались следующие задачи: 1. найти способ получения максимального числа информации о пользователях, используя предоставляемые методы Twitter Api;
2. оптимизировать загрузку пользователей (ввиду огромного количества пользователей, загрузка и обработка должна происходить непрерывно);
3. разработать алгоритм по выявлению друзей между пользователями Twitter.
Актуальность работы заключается в том, что визуализация данных может выявить некоторые скрытые и незаметные закономерности в распределении связей между пользователями.
2 Работа с API
API (application programming interface) -это набор готовых классов, функций, и констант, которые предоставляются некоторым приложением (библиотекой, сервисом) и используются для написания всевозможных приложений. API определяет функциональность, которую предоставляет приложение. Для взаимодействия с сервисом коротких сообщений Twitter используется открытый Twitter API. На официальном сайте Twitter для разработчиков представлена подробная документация, описывающая подробно работу с API. Из всех доступных методов, для выполнения поставленных задач были выбраны метод GET followers/ids, который возвращает список идентификаторов подписчиков (followers) для конкретного пользователя, метод GET friends/ids , который возвращает список идентификаторов людей, которых читает конкретный пользователь (following) и метод GET users/lookup, который возвращает информацию о пользователе, в том числе и необходимую для работы локацию.
Для взаимодействия с сервисом Google Maps используется открытый Google Maps API. Подробная документация по использованию для разработчиков также предоставлена. Локации из Instagram приходят в виде строки, а для отображения их на Google Maps необходимо преобразовать из
Разработка программного обеспечения для визуализации развития отношений между.
в координаты. Для этого используется Geocoding Service из Google Maps API, который по названию места возвращает координаты (ширину и долготу).
3 Метод решения задачи
При реализации данной идеи был разработан комплекс программ для нахождения друзей в Twitter и отображения полученных связей на картах Google Maps.
Первая программа представляет собой загрузчик пользователей из Twitter, который получает данные через запросы к Twitter Api, и анализатор, который по загруженным данным выявляет друзей. Друзьями считаются те пользователи, которые читают сообщения друг друга. Для получения таких связей был разработан следующий метод. Для каждого пользователя выгружаются списки его подписчиков и читаемых. Человек, который присутствует в обоих списках, считается другом.
Вторая программа отвечает за преобразование названия мест регистрации пользователей, полученных в процессе работы загрузчика, в координаты для отображения на картах Google Maps.
Третья часть - это отображение обработанной информации. Данная часть была реализована по принципу клиент-сервер. Клиент посылает сообщения на получение данных серверу и на их основании показывает готовую картинку пользователю, а сервер по запросу обращается к постоянно пополняемой базе данных.
Такое разделение позволяет сделать каждый этап независимым от других. Каждая программа работает с информацией, которая есть на текущий момент в базе данных. Это делает загрузку и обработку поступающей информации непрерывной и в случае сбоя одной из частей, остальные могут продолжать работать.
4 Алгоритм решения задачи
В Twitter API нет метода для получения всего списка зарегистрированных пользователей, поэтому нужна была отправная точка для загрузки. Было выбрано сообщество GitHub, так как данная группа имеет большое количество пользователей.
Алгоритм для загрузчика и анализатора: 1. Из базы данных выбирается последний пользователь, на котором программа остановилась в прошлый раз;
2. Для полученного пользователя начинается загрузка его подписчиков с помощью Twitter API. В процессе получения новых данных идет сохранение в базу данных, а также в список подписчиков, который хранится в памяти;
3. После подписчиков начинается загрузка его читаемых пользователей с помощью Twitter Api. В процессе получения новых данных идет сохранение в базу данных, а также в список читаемых, который хранится в памяти;
4. Когда оба списка получены, идет их сравнение и пользователи, которые являются и подписчиками и читаемыми являются друзьями для пользователя, полученного из пункта 1 и записываются в базу данных;
5. Проделав шаги 1-4 пользователь, полученный из пункта 1, помечается как обработанный и алгоритм выполняется заново.
Алгоритм для преобразователя названий мест в географические координаты:
1. Из базы данных выбирается последний пользователь у которого отсутствуют географические координаты;
2. У полученного пользователя берется место его регистрации, и делается запрос к Google Maps API;
3. После успешного ответа от Google Maps API, результат записывается в базу данных;
4. Пункты 1-4 выполняются до тех пор, пока не исчерпан дневной лимит запросов к API.
Алгоритм для сервера:
1. Серверу приходит запрос на получение пользователей и их друзей за конкретную дату;
2. Из базы идет выборка пользователей, которые были зарегистрированы в заданную дату;
3. Для каждого полученного пользователя из базы выбираются его друзья;
4. Формируется ответ для клиента в формате JSON.
Алгоритм для клиента:
1. Клиенту на вход подается период, за который необходимо отобразить пользователей и связи между ними;
2. С шагом в одни месяц запрашиваются данные у сервера;
3. По получаемым данным дополняется список пользователей, которые уже
есть на карте, а также если друзья для каждого полученного пользователя уже отображены, то они соединяются линией.
5 Результаты
За 2 недели работы загрузчика и анализатора было получено 922548 пользователей, из которых 554027 друзей. На основании этих данных, от момента создания до текущего дня идет отображение пользователей и появляющихся связей.
Так как пользователи загружались из сообщества ОИНиЬ, то большинство это программисты. На основании полученных данных были выделены самые популярные (наибольшее число подписчиков). На рис.1 представлено их расположение.
Рис. 1 Расположение самых популярные программистов из сообщества вШиЪ
Можно заметить, что большинство пользователей проживает в США. На рис. 2 представлены их друзья.
Рис. 2 Друзья популярных пользователей сообщества вШиЪ
Как видно из рис. 2 больше всего друзей расположено в США, но также присутствуют множественные связи с Европой.
6 Заключение
Количество пользователей, полученное для отображения на карте, по сравнению с количеством всех пользователей, зарегистрированных в Twitter, очень мало. Это объясняется следующими выявленными нюансами:
1. Для получения пользователей из Twitter имеются ограничения в частоте запросов, и чтобы избежать блокирования со стороны Twitter Api, приходилось совершать запросы раз в 5 секунд.
2. Для преобразования мест регистрации пользователей в географические координаты, Google Maps Api предоставляет всего 2500 запросов в день, что замедляет процесс заполнения базы данных.
Поэтому для получения, как можно более полной карты взаимоотношений пользователей Twitter, необходимо предоставить некоторое время для заполнения базы данных.
Список литературы
Google Maps Api [Электронный ресурс]. URL: https://developers.google.com/maps/.
Twitter Api [Электронный ресурс]. URL: https://dev.twitter.com/overview/api.