Analiza sieci społecznościowych w R i Gephi: kopanie na Twitterze

Opublikowany: 2022-03-11

Analiza sieci społecznościowych narodziła się w 1934 roku, kiedy Jacob Levy Moreno stworzył socjogramy, abstrakcje interakcji społecznych. W szczególności socjogram to wykres, na którym każdy węzeł reprezentuje osobę, a krawędzie reprezentują interakcje między nimi. Moreno używał socjogramów do badania zachowań małych grup ludzi.

Dlaczego mały? Ponieważ w czasach, w których pracował, trudno było uzyskać szczegółowe informacje na temat dużej liczby interakcji osobistych. Zmieniło się to wraz z pojawieniem się internetowych sieci społecznościowych, takich jak Twitter. W dzisiejszych czasach każdy może bezpłatnie pobierać obszerne dane z Twittera, co otwiera drzwi do ciekawych analiz, prowadząc nas do nowego zrozumienia tego, jak się zachowujemy i jaki wpływ mają różne zachowania na społeczeństwo.

W tej pierwszej części naszej serii analiz sieci społecznościowych pokazujemy, jak wykonać niektóre z tych analiz przy użyciu języka R, aby uzyskać i wstępnie przetworzyć dane, a Gephi, aby stworzyć niesamowite wizualizacje. Gephi to aplikacja o otwartym kodzie źródłowym zaprojektowana specjalnie do wizualizacji dowolnego rodzaju sieci. Umożliwia użytkownikom łatwe konfigurowanie wizualizacji za pomocą kilku kryteriów i właściwości.

Pobieranie danych z Twittera do analizy sieci społecznościowych w R

Jeśli nie masz konta programisty na Twitterze, utwórz je i złóż wniosek o dostęp Essential. Następnie, aby pobrać dane z Twittera, utwórz aplikację w portalu dla programistów Twittera. Następnie wybierz swoją aplikację w sekcji Projekty i aplikacje i przejdź do zakładki Klucze i tokeny. Tam będziesz musiał wygenerować swoje dane uwierzytelniające. Będą one używane do uzyskiwania dostępu do interfejsu API Twittera i pobierania danych.

Po wygenerowaniu danych uwierzytelniających możesz rozpocząć analizę. Użyjemy trzech bibliotek R:

  1. igraph , aby utworzyć wykres interakcji.
  2. tidyverse , aby przygotować dane.
  3. rtweet , aby komunikować się z interfejsem Twitter Dev API.

Możesz zainstalować te biblioteki za pomocą funkcji install.packages() . Dla naszych celów założymy, że zainstalowałeś R i RStudio i że masz podstawową wiedzę na ich temat.

W naszym pokazie przeanalizujemy gorącą dyskusję online na temat słynnego argentyńskiego piłkarza Lionela Messiego podczas jego pierwszego tygodnia w klubie piłkarskim Paris Saint-Germain (PSG). Ważne jest, aby pamiętać, że dzięki bezpłatnemu interfejsowi API Twittera możesz pobierać tweety tylko przez siedem dni przed bieżącą datą. Nie będziesz mógł pobrać tych samych danych, które cytujemy, ale będziesz mógł pobrać bieżące dyskusje.

Zacznijmy od pobierania. Najpierw załadujemy biblioteki, następnie utworzymy token autoryzacyjny za pomocą poświadczeń, a na końcu ustawimy kryteria pobierania.

Ten blok kodu szczegółowo opisuje, jak zaimplementować wszystkie trzy kroki:

 ## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")

Uwaga: Zastąp wszystkie tagi między <> informacjami utworzonymi w poprzednim kroku poświadczeń.

Za pomocą tego kodu zapytaliśmy API Twittera o wszystkie tweety (do 250 000), które zawierały słowo „messi” i zostały opublikowane między 8 sierpnia 2021 a 13 sierpnia 2021. Ustaliliśmy limit 250 000 tweetów, ponieważ Twitter wymaga wartości ilościowej i ponieważ liczba jest wystarczająco duża, aby umożliwić ciekawą analizę.

Szybkość pobierania Twittera wynosi 45 000 tweetów na 15 minut, więc pobranie 250 000 tweetów zajęło ponad godzinę.

Na koniec zapisaliśmy wszystkie zmienne kontekstowe w pliku RData, aby móc go przywrócić, jeśli zamkniemy RStudio lub wyłączymy maszynę.

Tworzenie wykresu interakcji

Po zakończeniu pobierania tweety będą znajdować się w tweets.df . Ta macierz dataframe zawiera jeden wiersz na tweet i jedną kolumnę na pole tweeta. Najpierw użyjemy go do stworzenia grafu interakcji, w którym każdy węzeł reprezentuje użytkownika, a krawędzie reprezentują interakcje (retweety lub wzmianki) między nimi. Dzięki tidyverse i igraph możemy stworzyć ten wykres szybko i tylko w jednym stwierdzeniu:

 ## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net

Po wykonaniu tej linii mamy wykres w zmiennej net , który jest gotowy do analizy. Na przykład, aby zobaczyć, ile jest obecnych węzłów i krawędzi:

 summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

Nasze przykładowe dane dają 138 000 węzłów i 217 000 krawędzi. To duży wykres. Moglibyśmy generować wizualizacje za pomocą języka R, gdybyśmy chcieli, ale z mojego doświadczenia wynika, że ​​ich obliczenia zajmują zbyt dużo czasu i nie są tak atrakcyjne wizualnie jak wizualizacje Gephi. Dlatego przejdźmy do Gephi.

Wizualizacja wykresu za pomocą Gephi

Najpierw musimy stworzyć plik, który Gephi może odczytać. To proste, ponieważ możemy wygenerować plik .gml za pomocą funkcji write_graph :

 write_graph(simplify(net), "messi_network.gml", format = "gml")

Teraz otwórz Gephi, przejdź do „Otwórz plik wykresu”, wyszukaj plik messi_network.gml i otwórz go. Wyświetli okno podsumowujące informacje z wykresu. Wybierz Akceptuj. Pojawi się to:

Zrzut ekranu przedstawiający interfejs użytkownika Gephi, z którego użytkownicy mogą otworzyć nowy plik wykresu.
Otwieranie nowego pliku wykresu w Gephi

Nie trzeba dodawać, że nie jest to zbyt pouczające. To dlatego, że nie zastosowaliśmy jeszcze układu.

Układ sieci

W grafie z tysiącami węzłów i krawędzi pozycjonowanie węzłów na grafice ma kluczowe znaczenie. Taki jest cel układów. Umieszczają węzły w pozycjach określonych przez określone kryteria.

W naszym samouczku dotyczącym analizy sieci społecznościowych użyjemy układu ForceAtlas2, który jest standardową opcją dla tego rodzaju analizy. Pozycjonuje węzły, symulując fizyczne siły przyciągania i odpychania między nimi. Jeśli dwa węzły są połączone, będą znajdować się bliżej siebie; jeśli nie są połączone, będą dalej od siebie. Ten układ przedstawia wykres informacyjny pod względem społeczności, ponieważ użytkownicy należący do tej samej społeczności będą zgrupowani, podczas gdy użytkownicy z różnych społeczności będą znajdować się w różnych regionach.

Aby zastosować ten układ do naszego przypadku, przechodzimy do okna Układ (w lewym dolnym rogu), wybieramy ForceAltas 2 i klikamy Uruchom. Kiedy to zrobisz, zobaczysz, że węzły zaczynają się poruszać i tworzyć wiele „chmur”. Po kilku sekundach uzyskasz bardzo stabilny wzór i będziesz mógł kliknąć Stop. Pamiętaj, że automatyczne zatrzymanie może zająć dużo czasu.

Ponieważ jest to algorytm stochastyczny, w każdym przebiegu będziesz mieć nieco inne wyniki. Twój wynik powinien być podobny do tego:

Obraz przedstawiający dane wyjściowe układu ForceAtlas2 w czerni i bieli, co daje wykres bez kolorów i odcieni szarości.
Monochromatyczne wyjście Gephi przy użyciu układu ForceAtlas2

Wykres zaczyna wyglądać atrakcyjnie. Teraz dodajmy do tego trochę koloru.

Wykrywanie społeczności

Możemy pokolorować węzły za pomocą kilku kryteriów; najbardziej standardowym podejściem jest społeczność. Jeśli na naszym wykresie mamy cztery społeczności, będziemy mieć cztery kolory. Dzięki kolorom łatwiej jest zrozumieć, w jaki sposób oddziałują na siebie grupy, biorąc pod uwagę Twoje dane.

Aby pokolorować węzły, najpierw musimy zidentyfikować społeczności. W Gephi kliknij przycisk Modularność w oknie pod zakładką Statystyka — ten przycisk stosuje popularny algorytm grupowania wykresów Louvain, jeden z najszybszych dostępnych algorytmów, uważany za najnowocześniejszy ze względu na jego wysoką wydajność. W wyświetlonym oknie kliknij Akceptuj. Pojawi się kolejne okno, zawierające wykres punktowy społeczności rozłożonych według wielkości. Teraz w każdym węźle mamy nowy atrybut o nazwie Modularity Class, który zawiera społeczność należącą do użytkownika.

Po wykonaniu poprzednich kroków możemy teraz pokolorować wykres według klastrów. Aby to zrobić, w zakładce Wygląd kliknij Zastosuj.

Zrzut ekranu przedstawiający zakładkę „Wygląd” w obszarze roboczym Gephi. Obraz przedstawia zakres kolorów użytych na wykresie.
Używanie wyglądu Gephi do dodania koloru

Tutaj możemy zobaczyć wielkość (pod względem procentu użytkowników) każdej społeczności. W naszym przypadku główne społeczności (fioletowe i zielone) stanowią odpowiednio 11,34% i 9,29% całej populacji.

Przy użyciu obecnego układu i palety wykres będzie wyglądał następująco:

Obraz kolorowego wykresu. Kształt jest identyczny z poprzednim wykresem monochromatycznym, ale kolory pomagają zidentyfikować określone społeczności, z największą zbiorowiskiem (fioletowy) w lewym dolnym rogu i drugą co do wielkości zbiorowością (zielony) w prawym górnym rogu. Między nimi mniejsze społeczności są reprezentowane przez inne kolory, w tym cyjan, pomarańczowy, czerwony i czarny.
Kolorowy wykres pozwala nam łatwo zidentyfikować różne społeczności.

Wykrywanie influencerów na Twitterze

Na koniec chcielibyśmy zidentyfikować głównych uczestników dyskusji, aby zrozumieć np. kto należy do jakiej społeczności. Możemy mierzyć wpływ każdego użytkownika za pomocą różnych właściwości; jednym z nich jest stopień . Wskazuje, ilu użytkowników je retweetowało lub wspomniało.

Aby wyróżnić użytkowników z dużą ilością interakcji, zmienimy rozmiar węzłów za pomocą właściwości Degree:

Zrzut ekranu pokazujący, jak zmienić właściwość Stopień w Gephi, pod tą samą zakładką Wygląd, o której mowa na poprzednich rysunkach. Minimalny rozmiar jest ustawiony na 0,1, a maksymalny na 10.
Zmiana właściwości Degree w Gephi

Wykres będzie teraz wyświetlał elementy mające wpływ jako węzły reprezentowane przez większe koła:

Obraz kolorowego wykresu podobnego do poprzedniego, ale z dodatkiem kółek reprezentujących węzły influencerów. Każda grupa kolorów zawiera kilka takich węzłów.
Kolorowe dane wyjściowe pokazujące influencerów jako większe węzły

Teraz, gdy zidentyfikowaliśmy użytkowników z dużą liczbą interakcji, możemy ujawnić ich nazwy. Aby to zrobić, kliknij czarną strzałkę na pasku u dołu ekranu:

Zrzut ekranu obszaru roboczego Gephi, przedstawiający czarną strzałkę w prawym dolnym rogu interfejsu użytkownika.
Dostęp do konfiguracji etykiet w Gephi

Następnie kliknij Etykiety i konfiguracja. W wyświetlonym oknie zaznacz pole wyboru Nazwa i kliknij Zaakceptuj. Następnie kliknij pole wyboru Węzły. Na wykresie pojawią się małe czarne linie. To są imiona wszystkich użytkowników. Ale nie chcemy widzieć ich wszystkich , tylko te najważniejsze.

Aby je zdefiniować, zmień ich rozmiar według stopnia węzła, korzystając z tego samego okna, które użyliśmy dla rozmiaru węzła. Zwiększyliśmy minimalny rozmiar z 0,1 do 10 i maksymalny rozmiar z 10 do 300.

Po dodaniu nazw wykres staje się znacznie bardziej informacyjny, ponieważ pokazuje, w jaki sposób różne społeczności wchodzą w interakcję z osobami wpływowymi:

Obraz kolorowego wykresu z kółkami przedstawiającymi znaczących użytkowników, z nałożonymi na górze nazwiskami najważniejszych użytkowników. Rozmiar tekstu odpowiada rozmiarowi (wpływowi) każdego użytkownika, a jednymi z największych są ESPNFC w kolorze fioletowym, TrollFootball w kolorze szarym i PSG_inside w kolorze różowym.
Dodanie nazw pozwala nam zobaczyć, jak różne społeczności wchodzą w interakcję z influencerami.

Teraz rozumiemy znacznie więcej na temat tej konkretnej dyskusji na Twitterze. Na przykład włączenie kont takich jak mundodabola i neymarjrdepre przez społeczność zieloną ujawnia jej brazylijskie miejsce. Społeczności pomarańczowy i szary zawierają użytkowników hiszpańskojęzycznych, takich jak sc_espn i InvictosSomos. W szczególności szare i czarne społeczności wydają się być hiszpańskojęzyczne, ponieważ mają użytkowników takich jak IbaiOut, LaScaloneta i popularny streamer IbaiLlanos. Wreszcie, fioletowe i czerwone społeczności wydają się być anglojęzyczne, ponieważ posiadają konta takie jak ESPNFC i brfootball.

Teraz możemy lepiej zrozumieć, dlaczego ci użytkownicy tworzą różne społeczności pod względem socjologii, a nie tylko obliczeń grafowych: mówią różnymi językami! Wszyscy tweetują o Messim i jego nowym zespole, ale sensowne jest, aby hiszpańskojęzyczni częściej komunikowali się z innymi hiszpańskimi użytkownikami niż z portugalskim czy angielskim. Co więcej, możemy również zrozumieć, że chociaż społeczności szare i pomarańczowe mówią po hiszpańsku, robią to z różnych perspektyw. Szara społeczność stosuje bardziej humorystyczne podejście, które wyjaśnia, dlaczego mają ze sobą więcej interakcji niż w przypadku oficjalnych kont piłkarskich lub dziennikarskich.

Uwolnienie potencjału R i Gephi

Gdybyśmy nie używali Gephi do tworzenia wykresów, moglibyśmy użyć biblioteki Ggplot R. Jednak z mojego punktu widzenia ta biblioteka jest znacznie bardziej ograniczona pod względem grafów sieciowych. Nie jest tak dynamiczny jak Gephi, trudniej go skonfigurować, a wynikowy wyświetlacz jest mniej wyraźny.

W dalszej części serii poprowadzimy tę analizę dalej. Przeprowadzimy niektóre analizy tekstowe modelowania tematów, aby zobaczyć, ile mówią użytkownicy i jakie tematy są dla nich interesujące; przeprowadzimy analizę sentymentu, aby sprawdzić, czy są one pozytywne czy negatywne; i zrobimy głębszą analizę wykresów, aby przeanalizować największych wpływowych osób na Twitterze.

Możesz użyć tych kroków, aby przeanalizować nowe dyskusje na Twitterze i zobaczyć, jakie spostrzeżenia możesz uzyskać z wykresów.