Facebook. Визуализация социальных связей

Недавно введенные ограничения, касающиеся API Facebook, существенно усложнили процесс визуализации социальных связей. Данная статья представляет собой полное руководство, описывающее сбор данных, их хранение и визуализацию в виде сетевого графа.

Facebook владеет информацией о структуре социальной сети, объединяющей более миллиарда человек. Те не менее, если вы являетесь пользователем Facebook, вам доступны очень ограниченные средства для анализа своих социальных связей. Давайте рассмотрим, как с помощью нескольких инструментов для сбора данных, графовой базы данных Neo4j и приложения Linkurious можно визуализировать свою социальную сеть в Facebook.

Эта задача не имеет простого решения. Facebook ограничила доступ к своему API. По этой причине недавно была приостановлена поддержка приложения Netvizz, позволявшего пользователям визуализировать свои социальные связи. Теперь визуализация стала сложной задачей.

Эрве Пикок (Hervé Piedcoq), аналитик и эксперт в области OSINT (open-source intelligence, разведка на основе открытых источников), расскажет вам, как 1) собирать, 2) хранить и 3) визуализировать данные о ваших социальных связях в Facebook.

Сбор данных о своих социальных связях в Facebook

ШАГ 1. Загружаем список друзей

Для сбора данных мы будем использовать мощное, но простое в использовании приложение OutWit Hub, основанное на Mozilla и XUL. Это приложение обладает широкой функциональностью, которая включает в себя обнаружение таблиц и списков, инструмент для извлечения данных из исходного кода веб-страниц, макросы и др.

Конечно, мы могли бы использовать Python или другой язык программирования, но OutWit Hub ориентирован на пользователей, не являющихся программистами, и сразу же готов к использованию.

Открываем свою страницу Facebook в OutWit Hub и отображаем полный список друзей.

Обработка списка друзей с помощью OutWit Hub

Обработка списка друзей с помощью OutWit Hub

OutWit Hub извлекает данные из исходного кода веб-страницы. Проблема заключается в том, что Facebook использует большое количество кода JavaScript, который «загрязняет» код веб-страницы и затрудняет его анализ.

Чтобы решить эту проблему, необходимо сохранить веб-страницу в формате HTML на жестком диске, а затем открыть ее в OutWit Hub, как статическую веб-страницу.

На левой панели, нажимаем «links» («liens» по-французски), чтобы извлечь все ссылки, присутствующие в коде веб-страницы.

Извлекаем ссылки

Извлекаем ссылки

Отфильтруем ссылки с помощью регулярного выражения, обведенного рамкой в левом нижнем углу. Экспортируем отобранные ссылки в CSV-файл. Заменим значения в столбце «Url Source» на URL-адрес своего профиля. Переименуем столбец «Url Source» в «Source», а столбец «Url Page» в «Target».

Если импортировать этот файл в какой-либо визуализатор графов, получим примерно следующее:

Визуализация социальных связей с помощью Gephi

Визуализация социальных связей с помощью Gephi

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

ШАГ 2. Выполним необходимые преобразования и экспортируем список друзей в формат HTML

Мы будем использовать приложение OpenRefine для обработки URL-адресов. Наши данные выглядят следующим образом:

Source Target
https://www.facebook.com/My_profile https://www.facebook.com/John.doe
https://www.facebook.com/My_profile https://www.facebook.com/profile.php?id=012345678910

Обратите внимание, Facebook использует два типа URL-адресов:

  • старый тип, содержащий profile.php;
  • новый тип, содержащий только ник.

Это означает, что мы должны обрабатывать каждый из этих двух типов отдельно.

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

Чтобы сделать это, просто используем функцию конкатенации. В результате получим следующее:

Source Target URL
https://www.facebook/com/
My_profile
https://www.facebook/com/
John.doe
https://www.facebook.com/My_profile/
friends?and=John.doe
https://www.facebook/
com/My_profile
https://www.facebook/
com/profile.php?id=012345678910
https://www.facebook.com/
My_profile/friends?
and=012345678910

Теперь необходимо преобразовать URL-адреса в столбце «URL» в HTML-ссылки, чтобы их было удобно обрабатывать с помощью OutWit Hub:

Source Target URL
https://www.facebook/
com/My_profile
https://www.facebook/
com/John.doe
https://www.facebook.com/Your-profile-ID/friends?and=John.doe
https://www.facebook/com/
My_profile
https://www.facebook/com/
profile.php?id=012345678910
https://www.facebook.com/Your-profile-ID/friends?and=012345678910

Это позволит OutWit Hub извлечь список общих друзей, посетив HTML-ссылки.

Теперь экспортируем проект в формат HTML.

ШАГ 3. Извлекаем данные!

Открываем HTML-файл в OutWit Hub. Обратите внимание, OutWit Hub рассматривает содержимое столбца «URL», как ссылки.

Создадим макрос, который обработает все ссылки. По сути, это те же операции, что и в 1-м шаге, но автоматизированные.

Находим общих друзей

Находим общих друзей

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

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

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

Импортируем данные в базу данных Neo4j

Трудно анализировать социальные связи с помощью таких инструментов, как Excel. Для хранения данных мы будем использовать базу данных Neo4j.

Ниже показано, как импортировать CSV-данные в базу данных Neo4j:

//———————–////———————–CONSTRAINTONaidCOMMIT2000

FROMfile:c:/my-facebook-network.csvASline,lineWHEREline=common-friends.csvlineCOMMIT2000FROMfile:c:/my-facebook-network.csvASline,lineWHEREline=friends.csv

line//———————–////———————–COMMIT2000

FROMfile:c:/my-facebook-network.csvASline,lineline>

Код из файла facebook.cql вы можете увидеть на GitHub в виде простого текста или с подсветкой синтаксиса.

Вы можете загрузить набор данных Neo4j, используемый в этой статье, здесь. Теперь мы можем визуализировать нашу социальную сеть.

Визуализируем граф социальных связей

Neo4j имеет встроенный инструмент для визуализации. Он позволяет визуализировать графовые запросы, выполняемые с помощью Cypher (языка графовых запросов):

neo4j-screenshot-facebookЕсли для исследования социальной сети нам необходим более простой и более мощный инструмент, мы можем использовать приложение Linkurious.

Просто вводим имя любого друга, и мы визуализируем его.

Визуализация социальной сети.

Визуализация социальной сети

 

Мы также можем детализировать интересующие нас участки.

 

Визуализация сообщества в рамках более крупной социальной сети

Визуализация сообщества в рамках более крупной социальной сети

 

Мы можем отбирать и скрывать узлы на основании их свойств. Также мы можем анализировать пути между данными двумя людьми. И все это с помощью простого в использовании интерфейса.

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

По материалам: LinkedIn Pulse

комментария 2

  1. Никита:

    Можно было и в R. ggplot2 мощное средство.

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =