Первые результаты моего twittermining

В этом посте я наконец приоткрою тайну своего DIY-исследования, посвященного аналитике данных с Twitter. Ранее я писал о том, что увлекся этой темой после участия (в качестве лурка, главным образом) в открытом онлайн курсе Learning and Knowledge Analitycs, наиболее продвинутые участники которого успели не только поиграть с упомянутым в курсе инструментарием, но и изложили свой опыт в блогах (рекомендую начать с Data Mining: a very simple start for a beginner (me), остальные посты можно найти по хештегу #lak11 в различных социалках). Однако мне не хотелось один в один повторять описанное в чужих постах, и я решил сформулировать свою собственную задачу.

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

Все детали реализации я планирую изложить отдельно, поэтому сейчас опишу свой путь кратко. Для того, чтобы собрать данные я реализовал единственный класс TwitterUser на Smalltalk/Pharo, объекты которого являются моделями пользователей Twitter’а и могут рекурсивно закачивать своих друзей (взаимных фоллаверов), их твитты и осуществлять требуемый анализ. Чтобы построить мой социальный граф до 3 уровня, я сначала получил с сервера своего пользователя (| me | me := TwitterUser newWithScreenName: ‘iwannt’), а затем попросил моего пользователя получить с сервера остальных пользователей, участвующих в графе (me fetchFriends: 3). Наконец, для полученного графа были запрошены твитты (чуть больше 30 тысяч), выполнен их анализ и экспорт результатов. Далее экспортированные данные были загружены в Gephi для визуализации. Здесь в Data Laboratory я смог выбрать для отображения те связи между пользователями графа, в которых присутствуют интересующие меня ключевые слова.

Таким образом, я получил граф и убедился в том, что выявлять таким образом искомые пути распространения идей по ключевому слову возможно. Другое дело, что выборка, которую я визуализировал в Gephi, имеет огромное число изъянов, главным образом, из-за упрощений, которые мне пришлось принять. Только пять друзей, только 200 последних твиттов, прерывания процесса сбора данных из-за ограничения на число запросов в час… последнее, например, привело к тому, что верхняя граница временных сигнатур твиттов у разных пользователей может серьезно разниться (нижняя граница при фиксированном числе собираемых твиттов будет различной для каждого пользователя в любом случае ввиду различной частоты написания сообщений). Наконец, твитты удалось собрать не у всех пользователей в графе, потому что некоторые из них имеют закрытый тип аккаунта.

Теперь самое интересное: картинки! Приведу некоторые результаты визуализации связей. Каждая картинка ниже подписана ключевым словом, которое использовалось для отбора изображенных красными линиями связей между пользователями в графе. Еще раз: если два пользователя соеденины красной линией, значит в их твиттах присутствует ключевое слово. Центральный узел графа - мой пользователь.


(страна указана для первого узла каждой ветки)

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

comments