DIPLOMOVÁ
PRÁCA
Analýza sociálnych sietí
ANOTÁCIA
Instagram je sociálna sieť a mobilná aplikácia,
ktorá svojim používateľom umožňuje zdieľanie fotografií,
videí a zároveň umožňuje interakciu na týchto príspevkoch.
Cieľom tejto diplomovej práce je analýza sociálnej siete
Instagram pomocou teórie komplexných sietí. Vzťahy jednotlivých
používateľov ako aj ich príspevky a interakciu na nich dokážeme
znázorňovať pomocou teórie grafov, čo nám umožňuje lepšie porozumieť
vlastnostiam, skrývajúcimi sa za týmito vzťahmi. Uvedená analýza môže
byť využitá pri pozorovaní abnormalít v sieti, čo môže viesť k
odhaľovaniu falošných účtov, ktoré sa na sociálnych sieťach vyskytujú
čoraz častejšie.
MENO: Kristína Dvorská
KONTAKT: kristina.dvorska97@gmail.com
ŠKOLITEĽ: RNDr. Damas Gruska, PhD.
Class InstagramReader
Trieda InstagramReader slúži na získavanie všetkých potrebných dát zo sociálnej siete Instagram. Odčítavanie dát sa deje za pomoci knižnice instagrapi. Výsledkami tejto triedy sú súbory potrebné na neskoršiu analýzu.
Z instagramu je možné čítať dáta len ako prihlásený používateľ. Funckia login() za pomoci prihlasovacích údajov umožní prístup na Instagram.
Každý používateľ na Instagrame sa identifikuje unikátnym pk číslom. Do funkcie input_user() používateľ zadá používateľské meno používateľa, ktorého profil chce odčítavať. Funkcia vráti unikátne pk číslo, na základe ktorého sa odčítavajú ďalšie informácie.
Funkcie odčítavajú všetkých followerov a followings na zadanom profile.
Funkcia vytvára slovník vzťahov na danom profile. Z prieniku followerov a followings postupne prechádza jednotlivé profily a deteguje väzby s daným skúmaným profilom. (Každý profil musí prejsť a odčítavať followerov a followings.) Výsledkom je slovník kde v kľúčoch sa nachádzajú používatelia a v hodnotách sa nachádza zoznam používateľov s ktorými je spojený. Vo funkcií je zakomponovaný aj čiastočný zápis týchto vzťahov, aby sme v prípade zablokovania dostali aspoň čiastočné dáta.
Funkcia získava informácie o všetkých príspevkoch zverejnených na danom profile. Z každého príspevku (fotka, video) odčítava polohu používateľa a hashtagy, ktoré boli použíté.
Pri získavaní polohy z príspevku je potrebné špeciálne prehľadávanie unikátneho kódu (pk) príspevku, aby bolo možné vyčítať zemepísnu šírku a dĺžku. Tieto parametre sú potrebné pri vizualizáciu mapy pohybu používateľa.
Trieda obsahuje skupinu zapisovacích funkcií. Funkcie zapíšu požadované údaje do súboru typu JSON a tieto súbory sú využité v ďalšej funkcionalite softvéru.
Class GraphCreator
Trieda GraphCreator slúži na čítanie získaných dát zo sociálnej siete Instagram a ich následnú vizualizáciu do grafovej podoby. Vizualizácia je realizovaná za pomoci knižníc plotly, pyvis, folium a GeoPy. Výsledkami tejto triedy sú grafy v súbore typu .html
V prípade uloží meno používateľa, ktorého grafy chceme vykresliť, a zároveň skontroluje, čí daný priečinok vôbec existuje (teda či boli používateľove údaje odčítané z Instagramu)
Trieda obsahuje skupinu čítajúcich funkcií. Funkcie čítajú požadované údaje zo súboru typu JSON a tieto údaje sú využité na vizualizáciu.
Funkcie z daných údajov (followers, followings, friendships) vytvárajú interaktívne siete. Veľkosť nodičiek je určená na základe stupňa vrchola a následne pomocou škálovania vykreslená do plochy. Mená nodičiek sú unikátne id používateľov určené Instagramom Celý graf TU:
Vytvára frequenčnú tabuľku zo všetkých hashtagov zozbieraných na profile. Z frekvenčnej tabuľky následne vizualizuje graf. Celý graf TU:
Vytvára frequenčnú tabuľku zo všetkých hashtagov zozbieraných na profile. Z frekvenčnej tabuľky následne vizualizuje graf z top 10 najpoužívanejších hashtagov. Celý graf TU:
Program transformuje JSON formát všetkých pozícií do formátu potrebného na vytvorenie mapy. Ďalej sú údaje spracované a vizualizujú, čím získavame prehľad pohybu používateľa priamo na mape. Po kliknutí na konkrétny marker na mape sa zobrazí názov polohy, dátum a čas kedy bolo dané miesto navštívené Celý graf TU:
Všetky polohy z daného profilu sa spracujú do tabuľkového formátu panda dataframe. Vo funkcií prebieha hľadanie konkrétneho mesta ("city") podľa už odčítaných súradníc. Časť sa vyhľadáva pomocou knižnice geopy a pre časť miest, ktoré nezvládne knižnica, je vytvorený samostatný script (viac trieda locationScript)
Všetky polohy z daného profilu sú spracované a následne sú údaje spracované a vizualizované do grafu, ktorý zobrazuje polohy a ich frekvenciu. Na grafe sa nachádzajú informácie ako koľkokrát bola lokalita použitá aj jej percentuálna hodnota. Celý graf TU:
Všetky polohy z daného profilu sú spracované a následne sú údaje spracované a vizualizované do grafu, ktorý zobrazuje najviac používané polohy na profile a ich frekvenciu. Na grafe sa nachádzajú informácie ako koľkokrát bola lokalita použitá aj jej percentuálna hodnota. Celý graf TU:
Z Instagramového profilu odčítavamee konkrétny dátum a čas. Tieto údaje spracujeme do tabuliek a následne z nich vykreslíme histogramy. Na základe týchto údajov a grafov môžeme analyzovať aktivitu používateľa, poprípade objaviť podozrivú aktivitu. Ukážka grafu, ktorý vznikne týmito funkciami TU:
Z Instagramového profilu odčítavame hashtagy, ktoré používatelia pridávajú k fotkám. Tieto tagy sme už vyššie spracovali do tabuliek . V tomto bode ich zobrazujeme ako sieť pričom nám vznikne iná predstava záľub resp. smerovania profilu. Ukážka siete, ktorý vznikne týmto spôsobom: TU:
Class locationScript
Trieda locationScript slúži na nájdenie mesta podľa zemepisnej šírky a zemepisnej dĺžky. V otvorenom Chromedriver-i sa otvorí url adresa Google Maps, zadajú sa súradnice
a následne je odčítané mesto.
Výsledkami tejto triedy sú konkrétne nájdene mestá - odčítané z Google Maps.
Class Graph Analysator
Trieda GraphAnalysator slúži na analýzu sietí, ktoré sme vytvárali v triede GraphCreator. Skúmané metriky
môžeme vydieť v tabuľke nižšie: ako napríklad density, average dergree node atď. Nižšie môžeme pozorovať aj histogram ktorý
predstavuje distribúciu stupňa uzla.
Výsledkami tejto triedy sú konkrétne tabuľky:
Boty ako časové automaty
Na sociálnych sieťach môžeme stretnúť rôzne druhy botov, niektoré nie sú škodlivé vôbec a niektoré príliš - ich cieľom je šíriť falošné správy. Základným cieľom botov je získať čo najväčšiu základňu svojho publika. Ich taktiky môžu byť následovné:
Boty si môžeme predstaviť ako časové automaty. Techniky/taktiky bodov sme namodelovali ako časové automaty prostredníctvom programu UPAAL. Konkrétne ukážky:
Na prvom obrázku vidíme časový automat bota, ktorý používateľa sleduje určitú dobu a potom ho sledovať prestane
Na druhom obrázku vidíme časový automat predtsavujúci bota, ktorý používateľa sleduje určitú dobu olajkuje mu nejaký počet príspevkov a potom ho sledovať prestane
Na tretiom obrázku vidíme časový automat predtsavujúci bota, ktorý používateľa sleduje určitú dobu okomentuje mu nejaký počet príspevkov a potom ho sledovať prestane
Na poslednom obrázku vidíme kombináciu predchádzajúcich botov.