Работа с графами ч.1: Визуализация данных OSINT
Capy_BДля обработки OSINT данных воспользуемся парсером данных из соц. сети ВКонтакте посредством API. Парсер, как и Gephi написан на кроссплатформенном Java и протестирован на Windows и Mac OS X.
В качестве цели возьмём группу мероприятия Positive Hack Days:
Переходим в альбомы группы и записываем ID:
Запускаем парсер, указываем ID, группу и папку назначения. Если выбрать чекбокс анализ стены, то парсер обработает стену группы и подписчиков, найдёт активность на стенах между подписчиками (узлами графа) и связи между ними (рёбра графа) будут иметь больший вес, что отразится на толщине рёбер. Эта процедура занимает ~ в 3-20 раз больше времени, в зависимости от величины группы, поэтому в данном мануале она опущена.
Запускаем парсер и в консоли видим лог работы:
Когда анализ завершится переходим в Gephi и открываем файл формата .gexf:
Парсер собирает сведения не только о подписчиках, но и о локациях, которые мы тоже не будем анализировать в графе, поскольку включение данной информации в обработку графа исказит его укладку центрируя её не на активных подписчиках, а на локациях. Например, у самого социально активного участника в графе 77 друзей (узлов), которые практически не будут видны, если рядом с ним появится локация «Россия» у которой ~1500 узлов.
После применения фильтра откроем меню статистического анализа и запустим все доступные компоненты:
Теперь нам нужно исключить из графа людей, у которых нет социальных связей с другими участниками, или есть, но только с одним из них, этот пункт не обязателен, но подобная фильтрация избавит нас от сложностей укладки графа на следующих этапах. Для этого сначала добавляем логический оператор «AND» и в его условия переносим фильтры «По значению – Type» и «Диапазон – Суммарная мощность», последний фильтруем от 2 до максимального. Мощность в графе это количество его рёбер, допустим если один человек дружит с тремя подписчиками, то суммарная мощность данного подписчика (узла) будет равна 4 (1 это он + 3 друга).
После этого добавляем фильтр «Диапазон – Eccentricity» который исключит из графа пользователей, чья суммарная мощность больше одного, но список друзей, которых парсер не смог получить, потому что пользователь заблокирован:
Теперь уложим граф, сначала воспользуемся алгоритмом «OpenOrd», чтобы узлы с наибольшими связями (модулярностью) уложились рядом:
Теперь уложим граф по алгоритму ForceAlias 2, поскольку на прошлом этапе мы «сдвинули» поближе модулярные узлы, укладка ForceAlias 2 займёт гораздо меньше времени. Пробуем найти параметры, которые будут оптимальны, поскольку для графов разной величины параметры сильно отличаются.
Когда ForceAlias 2 начнёт работать, узлы с общими рёбрами, но не имеющие рёбер к общей массе узлов будут уезжать далеко от центра, чтобы не потерять их – зафиксируем, предварительно увеличив размер кисти в поле «Configure».
Граф уложился наиболее оптимальным и легко воспринимаемым форматом, далее чуть расширим его и увеличим размер узлов по взвешенной мощности:
Теперь приступим к раскрашиванию, красить будем в 12 цветов, для этого сгенерируем палитру на нужное количество:
Красоты ради поставим по умолчанию чёрный фон и включим отображение букв, предварительно поменяв их цвет на белый:
Теперь в меню просмотра мы можем сохранить граф и настроить параметры размера шрифта и размеру изображения:
Из «Лаборатории данных» вынесем сведения, которые нас интересуют в CSV формат для дальнейшего анализа в программах бизнес аналитики (например Tableau Desktop):
Таким образом можно обработать любой граф в поддерживаемом Gephi формате, и получить вместо списка несвязной текстовой информации , собранной в рамках разведки OSINT, наглядную визуализацию социальных взаимосвязей подписчиков группы.