Визуализация Twitter социальной сети HRanalytics
Каждый день люди используют социальные сети, такие как Twitter, для обмена мыслями и идеями. Люди со схожими интересами собираются вместе и взаимодействуют на онлайн-платформе, повторно делясь сообщениями, которые им нравятся, или отвечая на них. Изучая, как люди взаимодействуют в социальных сетях, это поможет нам понять, как распространяется информация, и определить, кто является наиболее заметными фигурами.
В нашем последнем посте мы провели исследование тематического моделирования с использованием ленты Twitter #HRTechConf и обучили модель изучать темы всех твитов. В этой статье мы проанализируем взаимодействия пользователей Twitter и визуализируем их на интерактивном графике. Вот ссылка на веб-страницу интерактивного графика.
Социальная сеть - это сеть социальных взаимодействий и личных отношений.
Оксфордский словарь
Я использую Python 3.6 и следующие пакеты:
- Tweepy: библиотека Python для доступа к Twitter API.
- NetworkX: пакет Python для изучения структуры сложных сетей.
- PyVis: библиотека Python для создания и визуализации интерактивных сетевых графиков.
Если вас интересует анализ организационной сети, ознакомьтесь с этой статьей, которую мы написали.
Сбор данных
Мы используем Tweepy (библиотека Python для доступа к Twitter API) для извлечения всех твитов, в которых упоминается HRanalytics. Только твиты, опубликованные со 2 по 11 ноября 2019 года, могли быть получены из-за ограничений Twitter API. Всего 333 твита.
Мы считаем, что в Твиттере происходит взаимодействие с пользователем, когда на твит ретвитируют или отвечают, или когда пользователь Твиттера упоминается в твите другого пользователя. Идея состоит в том, что кто-то имеет большее влияние на тему HR-аналитики, если его твиты или имя чаще появляются в сети.
В следующем примере ретвита мы рассматриваем взаимодействие между пользователем Twitter Sonianasher и HRCurator.
RT @HRCurator: Как Bosch использует геймификацию для развития навыков #HRAnalytics (пример из практики) https://t.co/8IjyO1HdUe @DigitalHRTech @ AnalyticsinHR…
Sonianasher
Графическое моделирование
Социальная сеть, например Граф Twitter состоит из узлов и ребер. Узлы - это учетная запись Twitter, а края - взаимодействие между пользователями Twitter.
Социальная сеть, например Граф Twitter состоит из узлов и ребер. Узлы - это учетная запись Twitter, а края - взаимодействие между пользователями Twitter.
Кроме того, весьма вероятно, что пользователь Twitter A имеет некоторое влияние на пользователя B, если B ретвитит, отвечает или упоминает твит A. Таким образом, сеть Twitter представляет собой направленный граф. В приведенном выше примере пользователь Sonianasher не только связан с HRCurator, но также "находится под влиянием" твита HRCurator.
import networkx as nx graph = nx.DiGraph()
Для построения нашей сети Twitter мы используем NetworkX, пакет Python для изучения структуры сложных сетей.
degrees = [(node, val) for (node, val) in graph.degree()] degrees_df = pd.DataFrame(degrees, columns=['node', 'degree']).sort_values( by='degree',ascending=False) degrees_df.head(10)
Все взаимодействия в 333 извлеченных твитах добавляются в ориентированный граф. Давайте посмотрим, насколько хорошо подключена наша сеть Twitter.
degrees_df.describe()
У учетной записи Twitter HRCurator больше всего взаимодействий (40), а у martinhoyes - 15.
nx.number_connected_components(graph.to_undirected()) 22
Вау, у нас есть 22 несвязанных подграфа, и это нехорошо. Нас больше всего интересует большой полносвязный граф.
nodes = max(nx.connected_component_subgraphs(graph.to_undirected()), key=len) largest_subgraph = graph.subgraph(nodes) print(nx.info(largest_subgraph))
Name:
Type: DiGraph
Number of nodes: 84
Number of edges: 100
Average in degree: 1.1905
Average out degree: 1.1905
Самый большой подграф имеет 84 узла и 100 ребер. Убедимся, что все узлы на этом графе связаны.
nx.number_connected_components(largest_subgraph.to_undirected()) 1
Здорово! У него только один связный граф.
Визуализация сети
Теперь мы можем построить нашу сеть взаимодействия с Twitter.
node_degree = largest_subgraph.degree() pos = nx.spring_layout(largest_subgraph, k=0.4) plt.figure(figsize=(18,16)) nx.draw(largest_subgraph, pos=pos, linewidths=0.2, node_color=range(len(node_degree)), node_size=60, alpha=0.6, with_labels=True) nx.draw_networkx_nodes(largest_subgraph, pos=pos, node_size=10, alpha=0.3) plt.show()
Теперь мы можем построить нашу сеть взаимодействия с Twitter.
Та же сеть в круговой схеме.
Похоже, что многие стрелки указывают на узел HRCurator и martinhoyes, что подтверждает то, что было обнаружено ранее в нашем анализе выше, что пользователь HRCurator и martinhoyes имеют наибольшее влияние в этой сети.
from pyvis.network import Network net = Network(height="850px", width="100%", bgcolor="#222222", font_color="white", directed=True) net.from_nx(largest_subgraph) net.show("interactive_graph.html")
Это круто, но сложно визуализировать связи каждого узла. Не беспокойся. Мы используем библиотеку PyVis для построения интерактивного веб-графа, который позволяет пользователю перетаскивать, наводить курсор и выбирать узлы и ребра. Вот ссылка на веб-страницу интерактивного графика.
Заключительные примечания
Социальная сеть, такая как Twitter, содержит огромное количество информации о поведении человека и общества. Появление социальных сетей позволяет изучать распространение информации, распространение влияния и структуру сообщества. Графическая аналитика оказалась полезной для получения такой информации из сетей.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Удачного машинного обучения!
Первоначально опубликовано на https://ai-journey.com 17 ноября 2019 г.