Analiza rețelelor sociale în R și Gephi: Săpătură în Twitter
Publicat: 2022-03-11Analiza rețelelor sociale s-a născut în 1934 când Jacob Levy Moreno a creat sociograme, abstracții ale interacțiunilor sociale. Mai exact, o sociogramă este un grafic în care fiecare nod reprezintă o persoană, iar marginile reprezintă interacțiunile dintre ele. Moreno a folosit sociogramele pentru a studia comportamentul unor grupuri mici de oameni.
De ce mic? Pentru că în epoca în care a lucrat, era dificil să obții informații granulare despre un număr mare de interacțiuni personale. Acest lucru s-a schimbat odată cu apariția rețelelor sociale online precum Twitter. În zilele noastre, oricine poate descărca gratuit date voluminoase de Twitter, ceea ce deschide ușa unor analize interesante, conducându-ne la noi înțelegeri despre modul în care ne comportăm și impactul diferitelor comportamente asupra societății.
În această primă parte a seriei noastre de analize a rețelelor sociale, demonstrăm cum să efectuăm unele dintre aceste analize folosind limbajul R pentru a obține și preprocesa datele, iar Gephi pentru a produce vizualizări uimitoare. Gephi este o aplicație open-source special concepută pentru a vizualiza orice fel de rețea. Le permite utilizatorilor să configureze cu ușurință vizualizările prin mai multe criterii și proprietăți.
Descărcarea datelor Twitter pentru analiza rețelelor sociale în R
Dacă nu aveți un cont de dezvoltator Twitter, creați unul și solicitați acces Essential. Apoi, pentru a descărca datele Twitter, creați o aplicație în Portalul pentru dezvoltatori Twitter. Apoi, selectați aplicația dvs. în secțiunea Proiecte și aplicații și accesați fila Chei și jetoane. Acolo va trebui să vă generați acreditările. Acestea vor fi folosite pentru a accesa API-ul Twitter și a descărca datele.
După ce ați generat acreditările, puteți începe analiza. Vom folosi trei biblioteci R:
- igraph , pentru a crea graficul de interacțiune.
- tidyverse , pentru a pregăti datele.
- rtweet , pentru a comunica cu API-ul Twitter Dev.
Puteți instala aceste biblioteci cu funcția install.packages() . În scopurile noastre, vom presupune că ați instalat R și RStudio și că aveți o înțelegere de bază a acestora.
În demonstrația noastră, vom analiza discuția aprinsă online despre renumitul fotbalist argentinian Lionel Messi în prima sa săptămână cu clubul de fotbal Paris Saint-Germain (PSG). Este important să rețineți că, cu API-ul gratuit Twitter, puteți descărca tweet-uri doar cu șapte zile înainte de data curentă. Nu veți putea descărca aceleași date pe care le cităm, dar veți putea descărca discuțiile curente.
Să începem cu descărcarea. Mai întâi, vom încărca bibliotecile, apoi vom crea un token de autorizare folosind acreditările și, în final, vom stabili criteriile de descărcare.
Acest bloc de cod detaliază cum să implementați toți cei trei pași:
## 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")Notă: Înlocuiți toate etichetele dintre <> cu informațiile pe care le-ați creat la pasul anterior de acreditări.
Cu acest cod, am interogat API-ul Twitter pentru toate tweet-urile (până la 250.000) care conțineau cuvântul „messi” și au fost postate între 8 august 2021 și 13 august 2021. Am stabilit o limită de 250.000 de tweet-uri deoarece Twitter necesită un valoarea cantitativă și pentru că numărul este suficient de mare pentru a permite o analiză interesantă.
Rata de descărcare a Twitter este de 45.000 de tweet-uri pe 15 minute, așa că descărcarea a 250.000 de tweet-uri a durat mai mult de o oră.
În cele din urmă, am salvat toate variabilele de context într-un fișier RData pentru a-l putea restaura dacă am închis RStudio sau am oprit mașina.
Crearea graficului de interacțiune
Odată ce descărcarea s-a terminat, vom avea tweet-urile în cadrul de tweets.df . Această matrice de cadru de date conține un rând pe tweet și o coloană per câmp de tweet. În primul rând, îl vom folosi pentru a crea graficul de interacțiune în care fiecare nod reprezintă un utilizator, iar marginile reprezintă interacțiuni (retweet-uri sau mențiuni) dintre ele. Cu tidyverse și igraph, putem crea acest grafic rapid și într-o singură declarație:
## 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 După executarea acestei linii, avem un grafic în variabila net care este gata pentru analiză. De exemplu, pentru a vedea câte noduri și margini sunt prezente:
summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --Eșantionul nostru de date generează 138.000 de noduri și 217.000 de margini. Acesta este un grafic mare. Am putea genera vizualizări prin R dacă am dori, dar din experiența mea, acestea durează prea mult pentru a calcula și nu sunt la fel de atractive vizual ca vizualizările Gephi. Prin urmare, să continuăm cu Gefi.
Vizualizarea graficului cu Gephi
Mai întâi va trebui să creăm un fișier pe care Gephi îl poate citi. Acest lucru este ușor, deoarece putem genera un fișier .gml folosind funcția write_graph :
write_graph(simplify(net), "messi_network.gml", format = "gml") Acum, deschideți Gephi, accesați „Deschideți fișierul grafic”, căutați fișierul messi_network.gml și deschideți-l. Va arunca o fereastră care rezumă informațiile din grafic. Selectați Accept. Acesta va apărea:
Inutil să spun că acest lucru nu este foarte informativ. Asta pentru că nu am aplicat încă un aspect.
Aspect de rețea
Într-un grafic cu mii de noduri și muchii, poziționarea nodurilor în grafic este vitală. Acesta este scopul layout-urilor. Ele plasează nodurile în poziții stabilite de criterii definite.
Pentru tutorialul nostru de analiză a rețelelor sociale, vom folosi aspectul ForceAtlas2, care este o opțiune standard pentru acest tip de analiză. Poziționează nodurile prin simularea forțelor fizice de atracție și repulsie între ele. Dacă două noduri sunt conectate, acestea vor fi mai aproape unul de celălalt; dacă nu sunt conectate, vor fi mai îndepărtate. Acest aspect oferă un grafic informativ în ceea ce privește comunitățile, deoarece utilizatorii care aparțin aceleiași comunități vor fi grupați împreună, în timp ce utilizatorii din comunități diferite se vor afla în regiuni diferite.
Pentru a aplica acest aspect în cazul nostru, navigăm la fereastra Layout (în colțul din stânga jos), selectăm ForceAltas 2 și facem clic pe Run. Când faceți acest lucru, veți vedea că nodurile încep să se miște și să formeze mulți „nori”. După câteva secunde, veți avea un model foarte stabil și veți putea face clic pe Stop. Vă rugăm să rețineți că ar putea dura mult timp pentru a opri automat.
Deoarece acesta este un algoritm stocastic, veți avea rezultate ușor diferite în fiecare rulare. Ieșirea dvs. ar trebui să fie similară cu aceasta:

Graficul începe să pară atrăgător. Acum să-i adăugăm puțină culoare.
Detectarea comunității
Putem colora nodurile folosind mai multe criterii; cea mai standard abordare este cea a comunității. Dacă avem patru comunități în graficul nostru, vom avea patru culori. Prin culoare, este mai ușor să înțelegeți cum interacționează grupurile, având în vedere datele dvs.
Pentru a colora nodurile, mai întâi trebuie să identificăm comunitățile. În Gephi, faceți clic pe butonul Modularitate din fereastra de sub fila Statistici — acest buton aplică algoritmul popular Louvain graph cluster, unul dintre cei mai rapidi algoritmi disponibili, considerat de ultimă generație datorită performanței sale ridicate. În fereastra care apare, faceți clic pe Accept. Va apărea o altă fereastră, care conține un grafic de dispersie a comunităților distribuite după dimensiune. Acum avem un nou atribut în fiecare nod numit Modularity Class, care conține comunitatea deținută de utilizator.
După finalizarea pașilor anteriori, acum putem colora graficul după grupuri. Pentru a face acest lucru, în fila Aspect, faceți clic pe Aplicare.
Aici putem vedea dimensiunea (în termeni de procentaj de utilizatori) a fiecărei comunități. În cazul nostru, principalele comunități (violete și verzi) conțin 11,34%, respectiv 9,29% din totalul populației.
Folosind aspectul și paleta curente, graficul va arăta astfel:
Detectarea influențelor Twitter
În cele din urmă, am dori să identificăm principalii participanți la discuție pentru a înțelege, de exemplu, cine aparține cărei comunități. Putem măsura influența fiecărui utilizator prin proprietăți diferite; unul dintre ei este după gradul lor. Aceasta indică câți utilizatori i-au retweetat sau i-au menționat.
Pentru a evidenția utilizatorii cu multe interacțiuni, vom schimba dimensiunea nodurilor folosind proprietatea Degree:
Graficul va afișa acum influențatorii ca noduri reprezentate de cercuri mai mari:
Acum că am identificat utilizatorii cu un număr mare de interacțiuni, le putem dezvălui numele. Pentru a face acest lucru, faceți clic pe săgeata neagră din bara din partea de jos a ecranului:
Apoi, faceți clic pe Etichete și configurație. În fereastra care apare, bifați caseta de selectare Nume și faceți clic pe Accept. Apoi, faceți clic pe caseta de selectare Noduri. În grafic vor apărea mici linii negre. Acestea sunt numele tuturor utilizatorilor. Dar nu vrem să le vedem pe toate , doar pe cele mai importante.
Pentru a le defini, modificați dimensiunea lor în funcție de gradul de nod folosind aceeași fereastră pe care am folosit-o pentru dimensiunea nodului. Am crescut dimensiunea minimă de la 0,1 la 10 și am mărit dimensiunea maximă de la 10 la 300.
Odată cu adăugarea de nume, graficul devine semnificativ mai informativ, deoarece afișează modul în care diferitele comunități interacționează cu influențatorii:
Acum înțelegem mult mai multe despre această discuție specială pe Twitter. De exemplu, includerea de către comunitatea ecologică a conturilor precum mundodabola și neymarjrdepre dezvăluie locusul său brazilian. Comunitățile portocalii și gri conțin utilizatori vorbitori de spaniolă precum sc_espn și InvictosSomos. În special, comunitățile gri și negre par să fie vorbitoare de spaniolă, deoarece au utilizatori precum IbaiOut, LaScaloneta și popularul streamer IbaiLlanos. În cele din urmă, comunitățile violet și roșu par a fi vorbitoare de engleză, deoarece au conturi precum ESPNFC și brfootball.
Acum putem înțelege mai bine de ce acești utilizatori cuprind comunități diferite în ceea ce privește sociologia și nu numai calculul grafic: vorbesc limbi diferite! Toți postează pe Twitter despre Messi și noua sa echipă, dar are sens ca vorbitorii de spaniolă să interacționeze mai mult cu alți vorbitori de spaniolă decât cu vorbitorii de portugheză sau engleză. Mai mult, putem înțelege că, deși comunitățile gri și portocalii vorbesc spaniolă, o fac din perspective diferite. Comunitatea gri folosește o abordare mai plină de umor, care explică de ce interacționează mai mult între ele decât cu conturile oficiale de fotbal sau de jurnaliști.
Deblocarea potențialului lui R și Gephi
Dacă nu am fi folosit Gephi pentru a grafic, am fi putut folosi biblioteca Ggplot a lui R. Cu toate acestea, din punctul meu de vedere, acea bibliotecă este mult mai limitată în ceea ce privește reprezentarea grafică a rețelei. Nu este dinamic ca Gephi, este mai greu de configurat, iar afișajul rezultat este mai puțin clar.
În restul seriei, vom duce această analiză mai departe. Vom efectua câteva analize de text de modelare a subiectelor pentru a vedea cât de mult vorbesc utilizatorii și ce subiecte îi interesează; vom efectua o analiză a sentimentelor pentru a vedea dacă acestea sunt pozitive sau negative; și vom face o analiză grafică mai profundă pentru a analiza cei mai mari influenți ai Twitter.
Puteți folosi acești pași pentru a analiza discuții noi pe Twitter și pentru a vedea ce informații puteți obține din graficele grafice.
