vizualizacijakomunikacijskih trendova na druŠtvenim ... · sveuČiliŠte u zagrebu fakultet...

44
SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ţ D I N Asja Stermšek VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM APLIKACIJAMA ZAVRŠNI RAD Varaţdin, 2013.

Upload: others

Post on 03-Nov-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

V A R A Ţ D I N

Asja Stermšek

VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM APLIKACIJAMA

ZAVRŠNI RAD

Varaţdin, 2013.

Page 2: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

SVEUČILIŠTE U ZAGREBU

FAKULTET ORGANIZACIJE I INFORMATIKE

V A R A Ţ D I N

Asja Stermšek

Izvanredni student

Broj indeksa: 35908/2007.

Smjer: Poslovni sustavi

Preddiplomski studij

VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM APLIKACIJAMA

ZAVRŠNI RAD

Mentor:

Doc. dr. sc. Markus Schatten

Varaţdin, Srpanj 2013.

Page 3: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

I

Sadržaj

1. Uvod ........................................................................................................................................ 1

2. Analiza društvenih mreža ........................................................................................................ 2

2.1. Društvene mreže ............................................................................................................... 2

2.2. Analiza društvenih mreža ................................................................................................. 2

2.3. Osnovni koncepti u analizi društvenih mreža................................................................... 2

3. Teorija grafova ........................................................................................................................ 5

3.1. Graf ................................................................................................................................... 5

3.2. Tipovi grafova .................................................................................................................. 6

3.2.1 Neusmjereni graf ....................................................................................................... 6

3.2.2 Usmjereni graf ........................................................................................................... 6

3.2.3 Miješani graf ............................................................................................................. 7

3.2.4 Multigraf .................................................................................................................... 7

3.2.5 Jednostavni graf ......................................................................................................... 7

3.2.6 Težinski grafovi ......................................................................................................... 8

3.3. Susjedni čvorovi i bridovi................................................................................................. 8

3.4. Matrica incidencije ........................................................................................................... 8

4. Razvoj društvenih mreža kroz povijest ................................................................................. 10

4.1. Frigyes Karinthy (1929.) ................................................................................................ 10

4.2. Jacob Moreno (1933.) ..................................................................................................... 10

4.3. Solomonoff i Rapoport (1951.) ...................................................................................... 12

4.4. Erdős i Renyi (1960.)...................................................................................................... 13

4.5. Pool i Kochen (1978.) ..................................................................................................... 13

4.6. Travers i Milgram (1969.) .............................................................................................. 14

4.7. Derek de Solla Price (1965.) ........................................................................................... 14

4.8. De Castro i Grossman (1999.) ........................................................................................ 15

5. Vizualizacija mreža ............................................................................................................... 17

5.1. Softver za analizu društvenih mreža ............................................................................... 17

5.1.1 Gephi ....................................................................................................................... 18

6. Dinamička vizualizacija komunikacijskih trendova na blogovima ....................................... 19

6.1. Prikupljanje podataka pomoću programa pretraživača .................................................. 19

6.2. Eksport u Gephi .............................................................................................................. 22

6.3. Obrada u Gephi ............................................................................................................... 23

6.4. Program za stvaranje prikaza dinamičke vizualizacije ................................................... 23

6.5. Rezultati obrade .............................................................................................................. 24

Page 4: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

7. Zaključak ............................................................................................................................... 28

Literatura ....................................................................................................................................... 29

Prilog – Programski kod aplikacije ..................................... Ошибка! Закладка не определена.

Popis slika i dijagrama

Slika 2.1. Primjer društvene mreže ................................................................................................. 4

Slika 3.1 Primjer grafa (s osam vrhova i devet veza) ...................................................................... 5

Slika 3.2 Usmjereni graf .................................................................................................................. 6

Slika 3.3 Jednostavan graf (ujedno i neusmjereni graf) .................................................................. 7

Slika 3.4 Prikaz matrice incidencije za usmjerene i neusmjerene grafove ..................................... 9

Slika 4.1 Morenova zapažanja o evoluciji grupe .......................................................................... 11

Slika 4.2 Prikaz načina dodjeljivanja Erdősovog broja ................................................................. 16

Slika 6.1 Različiti blogovi na blog.hr servisu ............................................................................... 20

Slika 6.2 Stranica s komentarima ureĎena od strane blog.hr servisa ............................................ 21

Slika 6.3 Pojednostavljeni rad programa pretraživača .................................................................. 21

Slika 6.4 Konačan graf .................................................................................................................. 25

Slika 6.5 Razvoj grafa od početka do kraja video isječka ............................................................. 26

Page 5: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

1

1. Uvod

Tijekom prošlog desetljeća intenzivno se razvio interes za ideju povezanosti modernog

društva. Zahvaljujući tehnološkom napretku koji je omogućio i olakšao daleka putovanja,

globalnu komunikaciju i računalom posredovane interakcije društvene mreže u kojima živimo

intenzivno su se proširile i privukle pažnju mnogih znanstvenika. Znanost koja kvantificira

društvene interakcije razvija se iz potrebe da se istraže podaci koji se kriju unutar njih, te je

danas, analizom i vizualizacijom mreža istraživačima omogućeno prikupljanje informacija iz, do

nedavno, nezamislivo velikih količina podataka.

Ovaj rad bavi se vizualizacijom društvenih mreža, odnosno vizualizacijom komunikacijskih

trendovima na blogovima. Započinje upoznavanjem društvenih mreža općenito te nam

objašnjavajući osnovne pojmove analize mreža i osnove teorije grafova omogućuje detaljnije

upoznavanje s analizom društvenih mreža.

Nadalje se u radu govorio razvoju analize društvenih mreža kroz povijest, te su pritom

spomenuti autori i djela koji suznačajnije utjecali na to da se analiza društvenih mreža pomakne

iz okvira socioloških interesa i formira u zasebnu znanost. Pratimo kako se ideja o društvenoj

meĎupovezanosti pojavljuje meĎu znanstvenicima te kako se s vremenom popularizira i u manje

stručnim krugovima.

Na krajuje objašnjena vizualizacija društvenih mreža te se govori softveru koji je za to

specijaliziran.Spominje se programkoji je korišten za vizualizaciju komunikacijskih trendova na

blogovima u ovom radu te je objašnjeno kako su podaci o komunikaciji pomoću programa

pretraživača prikupljeni, vizualno prikazani i obraĎeni u video.

Kao dodatak radu priložen je i programski kod napisan u Javi, odnosno glavne klase

programa pretraživača, eksportera iz baze podataka u .gexf format datoteke te programa za

stvaranje prikaza dinamičke vizualizacije.

Page 6: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

2

2. Analiza društvenih mreža

2.1. Društvene mreže

Osnovna pretpostavka teorije društvenih mreža jest da su naoko autonomni pojedinci ili

organizacije u stvari utkani u cjelovitu strukturu interakcija i društvene povezanosti[Borgatti,

Mehra, Brass i Labianca, 2009., str 8]. Izraz društvena mreža definiran je kako bi se opisala

društvena struktura koju čine pojedinci ili organizacije povezani jednom ili više tipova

meĎuovisnosti poput prijateljstva, srodstva, zajedničkih interesa, financijskih razmjena,

naklonosti ili nenaklonosti, vjerovanja, znanja ili prestiža.

U svom najosnovnijem obliku društvena mreža je mapa pojedinih veza, poput, na

primjer, prijateljstva, izmeĎu promatranih čvorova. Analizom društvenih mreža promatramo ih

kao mreže sastavljene od čvorova i bridova koji ih povezuju.

2.2. Analiza društvenih mreža

Analiza društvenih mreža bavi se istraživanjem povezanosti unutar skupa promatranih

subjekata. Ključna razlika izmeĎu analize mreža i drugih pristupa društvenim znanostima je

usmjerenost na odnose izmeĎu subjekata više nego na atribute koji pojedine subjekteopisuju.

Analiza društvenih mreža, prema tome, predstavlja drukčiji pristup društvenim fenomenima i

samim time zahtjeva nove metode za prikupljanje i analizu podataka. Zbog toga razvija vlastiti

vokabular za opisivanje društvenih struktura i formalne modele koji opisuju uobičajena svojstva

svih (društvenih) mreža i skupove metoda koje možemo primijeniti na mreže općenito. Formalni

jezik koji se koristi za prezentiranje podataka prikupljenih analizom društvenih mreža je jezik

teorije grafova, pa ćemo se u sljedećem odlomku definirati neke od osnovnih pojmova analize

društvenih mreža i pozabaviti se osnovama teorije grafova.

2.3. Osnovni koncepti u analizi društvenih mreža

Za razumijevanje i raspravljanje o društvenim mrežama potrebno je razumjeti nekoliko

ključnih koncepata koje koristimo u njihovoj analizi. To su pojmovi akter, relacijska veza, grupa,

podgrupa, relacija i mreža, te ćemo ih definirati u nastavku.

Page 7: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

3

Akter (engl. actor). Analiza društvenih mreža bavi se razumijevanjem veza izmeĎu

društvenih entiteta i implikacijama veza meĎu njima. Te društvene entitete općenito nazivamo

akteri, a mi ćemo ih nazivati i čvorovi, vrhovi ili subjekti, ovisno o tome u kojem kontekstu

spominjemo mrežu. Akteri predstavljaju nedjeljive društvene jedinice poput osobe, korporacije

ili nekog drugog definiranog kolektiva. Kao primjer za aktere mogu poslužiti pojedinac, skupina

ljudi, odjel unutar neke korporacije ili čak čitave nacije.

Relacijska veza koju ćemo često nazivati i samo veza uspostavlja povezanost izmeĎu

para aktera. Oni su meĎusobno povezani nekom vrstom društvene veze čija vrsta i raspon mogu

biti poprilično široki. Neki uobičajeni primjeri takvih veza u analizi društvenih mreža su:

Izraženo prijateljstvo ili poštovanje

Transferi materijalnih resursa

Udruživanje ili pripadanje

Ponašajne interakcije

Pomicanja izmeĎu mjesta ili statusa

Formalni odnosi

Fizičke veze

Biološke veze [Wasserman i Faust, 1994., str. 17-18]

Grupe. Analiza mreža ne bavi se samo skupinama povezanih društvenih entiteta. U širem

smislu, moć analize leži u mogućnosti da se modeliraju odnosi unutar sustava aktera. Sustav se

sastoji od veza unutar članova neke grupe. Kao definiciju grupe koristit ćemo skup svih aktera na

kojima ćemo analizirati veze. Grupa se, prema tome, sastoji od konačnog broja aktera koji se

zbog konceptualnih, teoretskih ili empirijskih razloga tretiraju kao konačan skup subjekata na

mreži koju mjerimo. Ograničenje na konačan broj aktera proizlazi iz analitičkih razloga. Iako bi

se, u teoriji, pojedina grupa mogla sastojati od veza meĎu akterima čiji bi broj mogao biti

neograničen bilo bi nemoguće analizirati podatke prikupljene u takvoj mreži.

Podgrupe. Čest je slučaj da se unutar grupe na mreži formiraju u manje podgrupe koje su

sastavljene od bilo kojeg podskupa aktera i svih veza meĎu njima. Pronalaženje i proučavanje

podgrupa koristeći odreĎene kriterije važan je segment u analizi društvenih mreža.

Relacija je skup veza unutar članova grupe. Na primjer, skup prijateljskih veza izmeĎu

dvoje djece u razredu ili skup formalnih diplomatskih veza izmeĎu dvije države nacije su veze

Page 8: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

4

koje definiraju relacije.Važno je naglasiti da se relacija odnosi na skup svih veza zadane vrste

koje mjerimo na parovima aktera iz odreĎenog skupa aktera. Veza sama po sebi postoji samo

izmeĎu odreĎenog para aktera.

Društvena mreţa. Sada kada imamo definirane pojmove poput aktera, grupe i relacije

možemo detaljnije definirati socijalnu mrežu. Društvena mreža, prema tome, sastoji se od

konačnog skupa ili skupova aktera i relacije ili relacija meĎu njima. Prisutnost relacija ključno je

svojstvo koje definira društvene mreže.[Wasserman i Faust, 1994., str. 19-21]

Kao primjer društvene mreže promotrimo sliku 2.1. koja prikazuje komunikaciju putem

e-maila izmeĎu 436 zaposlenika Hewlett-Packard istraživačkog laboratorija.Čvorovi, ovdje

prikazani crvenom bojom, predstavljaju zaposlenike te poznate kompanije povezane linijama

koje predstavljaju e-mailove koje su razmijenili.

Slika 2.1. Primjer društvene mreţe [Easley i Kleinberg, 2010., str. 3]

Page 9: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

5

3. Teorija grafova

Grafovi su centralni element promatranja teorije grafova. Riječ graf u ovo smislu prvi je

put upotrijebio James Joseph Sylvester 1878. godine.

Graf je objekt koji nam na apstraktan način prikazuje neki skup elemenata čiji su parovi spojeni

vezama. U jeziku teorije grafova te povezane objekte nazivamo čvorovima ili vrhovima, a veze

koje ih sparuju bridovima. Tipično su grafovi prezentirani na način da točke prikazuju čvorove, a

ravne crte ili zakrivljene linije prikazuju veze [Gross i Yellen, 2003., str. 20].

3.1. Graf

Graf je ureĎeni par G=(V,E) gdje V predstavlja skup čvorova (engl. vertex), a E skup

bridova (engl. edge), za koje vrijedi E ⊆[V]2 pod pretpostavkom da E ∩ V = 0 [Diestel, 2005.,

str. 2].

Broj čvorova V kod grafa G predstavlja red grafa G. Grafove reda 0 ili 1 nazivamo

trivijalnima. Kako za potrebe rada na društvenim mrežama ne bi imalo smisla raditi s praznim ili

trivijalnim grafovima, takvim se grafovima nećemo baviti u ovom radu. Slikom 3.2. prikazujemo

jedan uobičajeni primjer grafa sa osam čvorova i devet veza kojim su vrhovi grafa meĎusobno

povezani.

Slika 3.1Primjer grafa(s osam vrhova i devet veza)

Jedno od ključnih svojstava koje nam je važno za analizu društvenih mreža je radili se o

usmjerenom ili ne usmjerenom grafu pa, iako ćemo razliku preciznije definirati kasnije,

objasnimo je sada primjerom. Ukoliko graf prikazuje skup ljudi okupljenih na nekom

neformalnom druženju ili zabavi, i povlačimo brid izmeĎu svako dvoje ljudi koji su se na toj

Page 10: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

6

zabavi rukovali, onda se radi o neusmjerenom grafu, jer, zaista, ako se osoba A rukovala s

osobom B onda vrijedi i obrnuto, zbog čega je ta veza simetrična. Ako pak veza predstavlja

činjenicu da li osoba Apoznaje osobu B, onda će se raditi o usmjerenom grafu jer ovakva vrsta

povezanosti nije nužno simetrična. I zaista, ako osoba A zna za osobu B nije nužan slučaj da

osoba B zna za osobu A.

3.2. Tipovi grafova

3.2.1 Neusmjereni graf

Kod ovakvog grafa bridovi nemaju orijentacije, što znači da nisu zadani ureĎenim parom

čvorova koje spajaju, već samo skupom dvaju čvorova {vi, vj}.

3.2.2 Usmjereni graf

Usmjereni graf ili digraf je ureĎeni par D=(V,A) gdje ve predstavlja skup čvorova, a

ureĎene parove iz skupa čvorova koje nazivamo usmjerenim bridovima. Brid a = (x,y) smatra se

usmjerenim od x do y; y je direktni sljedbenik x, a x je direktni prethodnik y. Brid koji

označavamo s (y,x) nazivano invertirani brid (x,y). Jednostavan prikaz usmjerenog grafa koji se

sastoji od tri vrha i tri usmjerene veze možemo vidjeti na slici 3.2.

.

Slika 3.2 Usmjereni graf

Page 11: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

7

3.2.3 Miješani graf

Miješani graf je graf u kojem su neki bridovi usmjereni, a neki ne, a piše se kao

usmjerena trojka G=(V,E, A) gdje je V skup čvorova, E predstavlja skup neusmjerenih bridova,

dok A predstavlja skup ureĎenih parova iz skupa čvorova, odnosno usmjerene bridove.

3.2.4 Multigraf

Petlje (refleksivne veze) su bridovi, usmjereni ili neusmjereni, kojima je početni i završna

točka isti čvor. One mogu, ali i ne moraju biti dozvoljene ovisno o primjeni. Izraz multigraf

označava da je riječ o grafu u čijem su prikazu dozvoljeni višestruki bridovi, te slučaj kada su

dozvoljene i petlje.

3.2.5 Jednostavni graf

Ako nije naznačeno drukčije, kada se spomene graf pretpostavlja se da je riječ o

jednostavnom grafu. To je neusmjereni graf u kojem nema petlji i nema više od jedne veze

izmeĎu dva čvora. Kod jednostavnog para svaki je brid zadan parom različitih čvorova. Kod

ovakvih grafova s n čvorova, svaki čvor ima broj veza manji od n. Slikom 3.3. prikazujemo

jedan jednostavan graf s tri vrha.

Slika 3.3 Jednostavan graf (ujedno i neusmjereni graf)

Page 12: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

8

3.2.6 Težinski grafovi

Postoje slučajevi kada je potrebno pojedinom bridu dodijeliti odreĎenu (brojčanu)

vrijednost. One mogu predstavljati, na primjer, cijene, udaljenosti, kapacitete ili slično. Tada

govorimo težinskim grafovima. Težina grafa je suma vrijednosti dana svakom pojedinom bridu.

3.3. Susjedni čvorovi i bridovi

Čvorovi vi i vj su susjedni ako su povezani zajedničkim bridom, a bridovi ei i ej su,

analogno tome, susjedni ako imaju zajedničku krajnju točku odnosno zajednički čvor. Na

temelju susjednih čvorova i bridova izraĎujemo matricu incidencije [Biggs, 1993., str. 7].

3.4. Matrica incidencije

Neka je graf G definiran skupom čvorova {v1, v2,...,vn} i skupom bridova {e1, e2,...,em}.

Za svaki i, j (1 ≤ i ≤ n, i 1 ≤ j ≤ n) definiramo:

aij = 1, 𝑎𝑘𝑜 𝑝𝑜𝑠𝑡𝑜𝑗𝑖 𝑣𝑒𝑧𝑎 𝑖𝑧𝑚𝑒đ𝑢 𝑛𝑗𝑖ℎ

0, 𝑎𝑘𝑜 𝑣𝑒𝑧𝑎 𝑛𝑒 𝑝𝑜𝑠𝑡𝑜𝑗𝑖

Matrica A = [aij] predstavlja matricu incidencije grafa G [Barabási, 2012., str. 30].

Računalni programi koriste matrice incidencije za pohranu informacija o susjednim

čvorovima i bridovima te na temelju toga crtaju zadani graf. Matrice usmjerenih i neusmjerenih

mreža ponešto se razlikuju, kao što to vidimo u dolje navedenom primjeru. Kada govorimo o

matrici susjednosti za usmjerene mreže potrebno je napomenuti da:

Aij= iznosi 1 kada postoji veza koja kreće od čvora j prema čvoru i;

Aij = iznosi 0 ako čvorovi i i j nisu povezani jedan s drugim.

Matrica incidencije za neusmjerene mreže ima dvostruko definirane veze. Na primjer,

veza izmeĎu čvora v1 i čvora v2 prikazan je kao A12 i jednak je 1, a isto vrijedi i za A21 koji

takoĎer označava vezu izmeĎu čvorova v1 i v2 i iznosi 1 [Barabási, 2012., str. 31].

Prema tome, matrice incidencije za usmjerene grafove biti će simetrične. Ipak, kada je

riječ o matricama susjednosti za usmjerene grafove, to neće biti slučaj, kao što vidimo na slici

3.4.

Page 13: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

9

Slika 3.4 Prikaz matrice incidencije za usmjerene i neusmjerene grafove[Barabási, 2012.,

str. 32]

Page 14: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

10

4. Razvoj društvenih mreža kroz povijest

Iako se značajniji interes za društvene mreže javlja tek u zadnjoj polovini prošlog

stoljeća, početci njihova razvoja zabilježeni su mnogo prije, ali ne kao znanost već kao interesno

područje ondašnjih sociologa. U ovom radu spomenut ćemo neke važnije autore i radove koji su

postavili temelje znanosti društvenih mreža te značajnije utjecali na njihov razvoj.

4.1. Frigyes Karinthy (1929.)

Prvi objavljeni tekst o društvenim mrežama nije bio znanstveni članak, već kratka priča

pod imenom „Lanci“ u djelu „Sve se promijenilo“ autora Frigyes Karinthyja, izdana 1929.

godine. U svom djelu „Lanci“ ovaj maĎarski autor iznosi stav da se svijet smanjuje, ali ne u

fizičkom smislu već u onom socijalnom. Tvrdi da su ljudi sve povezaniji kroz meĎusobna

poznanstva i da se na temelju tih prijateljstava formira gusta mreža prijateljstva i dovodi do

svjetske meĎupovezanosti. Predlaže da je, zahvaljujući tome, svakoga na Zemlji moguće

povezati kroz najviše pet meĎupoznanstava. Tu tvrdnju podupire time što u djelu opisuje kako je

njega samoga, kroz maksimalno pet poznanika, moguće povezati s bilo kojim dobitnikom

Nobelove nagrade. TakoĎer, s obzirom da poznatije osobe poput Nobelovaca imaju mnogo

poznanstava i društveno su utjecajniji, tvrdi da se na isti način može povezati i s bilo kojim

radnikom u Fordovoj tvornici.

Tek dvadeset godina kasnije Milgram provodi svoj eksperiment malog svijeta čime

Karinthy potvrĎuje kako je bio znatno ispred svog vremena kad je tvrdio da je promjenjiva

priroda ljudskih poznanstava posljedica društvenih istraživanja, razbijanja geografskih

ograničenja i razvoja novih tehnologija koje nam omogućuju da ostanemo u kontaktu iako smo

udaljeni tisućama kilometara [Newman, Barabási i Watts, 2005., str. 10].

4.2. Jacob Moreno (1933.)

Moreno 1933. godine izdaje članak koji proučava dinamiku društvenih interakcija meĎu

grupama ljudi, čime zaslužuje titulu centralne ličnosti koja postavlja temelje moderne znanosti

društvenih mreža. Članak se smatra prvijencem na području analize društvenih znanosti, a

proučava interakcije izmeĎu učenika unutar pojedinog razreda od vrtićke generacije do osmog

Page 15: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

11

razreda osnovne škole. Svakomdjetetu dano je na izbor da odabere suučenika s kojim bi željelo

nastaviti ići u razred i pored koga bi željelo sjediti.

Analizom prikupljenih podataka Moreno nam je uspješno prikazao evoluciju grupe te

otkrio da se unutar razreda kriju komplekse strukture koje su se bitno razlikovale od onoga što bi

se o grupi na prvi pogled moglo zaključiti. Osim toga izdvojio je i pojave različitih oblika

interakcije meĎu učenicima; neki od njih bili su potpuno izolirani, neki formirali parove, trokute

ili čak ulančane veze, a neki su bili dovoljno popularni da su bili centar zvjezdane

formacije.kako možemo vidjeti na slici 4.1.

Slika 4.1 Morenova zapaţanja o evoluciji grupe [Moreno, 1934., str. 30-42]

Page 16: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

12

Osvrnimo se ukratko na Morenova zapažanja o evoluciji grupe. Zanimljivo je primijetiti

kako u grupi od 21 dječaka i 14 djevojčica prvog razreda ima relativno velik broj „zvijezda“

odnosno popularnije djece koji na sebe privlače velik broj veza, te velik broj prijateljstava

izmeĎu različitih spolova, dok pronalazimo mali broj parova. Već u trećem razredu osnovne

škole na jako sličnom uzorku možemo primijetiti kako se broj „zvijezda“ i prijateljstava izmeĎu

različitih spolova značajno smanjuje, kao što vidimo na donjem dijelu slike 4.1,te se taj trend

nastavlja sve do osmog razreda osnovne škole gdje ponovno vidimo da se formiraju prijateljstva

izmeĎu različitih spolova, iako u znatno manjem broju. Zanimljivo je kako se u istom razdoblju

stabilno povećava broj parova, odnosno uzajamnih prijateljstava i povezanosti s djecom iz drugih

razreda, što sa socio-emotivnog stajališta pokazuje kako se s razvojem ličnosti produbljuju

prijateljstva i šire interesi.

Izradom ovih dijagrama Moreno otkriva jedan novi pojam koji nam kasnije, točnije 1934.

godine, detaljnije objašnjava u svojoj knjizi pod nazivom „Who shall survive?“ (Tko će

preživjeti?).Riječ je o pojmu sociometrija koji u svojoj knjizi opisuje kao metodu za

kvantitativnu analizu socijalnih i interpersonalnih odnosa unutar grupe. Ona je eksperimentalna

tehnika koja mjeri društveno ponašanje, odnosno socijalno-emotivneodnose unutar promatrane

skupine. Naglasak se daje odnosima baziranim na meĎusobnom privlačenju, indiferentnosti ili

odbijanju izmeĎu članova skupine, na osnovu kojih se uspostavlja emocionalna struktura grupe.

4.3. Solomonoff i Rapoport (1951.)

Ova dva znanstvenika 1951. godine prvi put sistemski definiraju komponentu koju danas

nazivamo nasumični graf. Njihov rad važan je ne samo zbog toga što nam prvi put predstavljaju

nasumične grafove već i zato što prikazuje jedno od ključnih osobina modela, a to je pojava koja

se javlja ako se brojčvorova i bridova povećava, tada mreža doseže točku u kojoj se naglo

mijenja iz velikog broja nepovezanih dijelova u jedan veliki povezani graf koji u današnjoj

terminologiji zovemo divovska komponenta. Tako postavljaju temelje za mnoga buduća otkrića i

modernu analizu društvenih mreža.

Iako se u tekstovima često može pronaći da su divovska komponenta i nasumični graf

otkriće Erdősa i Renyija iz 1960. godine, nedvojbeno je da su Solomonoff i Rapoport mnoge

ključne pronalaske otkrili gotovo desetljeće ranije. Ipak, Erdős i Renyi u svojim istraživanjima

otišli su dalje od Solomonoffa i Rapoporta te zadržali viši nivo stručnosti [Newman, Barabási i

Watts, 2005., str. 11-12].

Page 17: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

13

4.4. Erdős i Renyi (1960.)

Vjerojatno najvažniji tekst za razvoj analize društvenih mreža je tekst Erdősa i Renyia iz

1960. godine koji se bavi evolucijom strukture nasumičnih grafova kako se povećava broj veza

meĎu čvorovima.

Unatoč ranim doprinosima Solomonoffa i Rapoporta, teorija o nasumičnim grafovima

doživljava pravi uzlet tek kasnih 50ih i ranih 60ih godina kada se na tu temu pojavljuje nekoliko

važnih radova i to gotovo simultano. Ipak, meĎu njima, najutjecajnijim pokazali su se radovi

Paula Erdősa i Alfreda Renyia koji se danas smatraju začetnicima moderne teorije o nasumičnim

grafovima. Dva autora su kroz period od 1959. do 1968. godine izdali 8 znanstvenih radova koji

su postavili temelje istraživanja mreža za sljedećih nekoliko desetljeća. Jedan od tih radova,

izdan 1960. godine najvažniji je od njih jer se bavi evolucijom strukture nasumičnih grafova

povećavanjem broja veza meĎu čvorovima. Osim toga dokazuju da se, kada se dovoljno bridova

doda na graf, mnoga važna svojstva pojavljuju iznenadno, a ne postepeno kako bi intuitivno

očekivali [Newman, Barabási i Watts, 2005., str. 12].

4.5. Pool i Kochen (1978.)

Iako je Milgram daleko poznatiji po svojim istraživanjima na temu eksperimenta malog

svijeta, rad Poola i Kochena, napisan godinama ranije, ali objavljen tek 1978. godine, prvi put u

znanstvenim terminima definira fenomen poznat kao efekt malog svijeta. Ova dva znanstvenika

u svom radu podižu pitanja koja će još godinama biti predmet istraživanja znanstvenika tog

područja. Njihov članak započinje skupom pitanja o čovjekovom statusu u mreži i ta pitanja

danas definiraju polje društvenih mreža. Ta pitanja su sljedeća:

1) Koliko ljudi pojedina osoba iz mreže poznaje? Koji je broj veza pojedine osobe u mreži?

2) Kako su te veze rasporeĎene? Koja im je prosječna vrijednost, koliko iznosi najmanji a

koliko najveći broj veza pojedine osobe?

3) Kakvi pojedinci imaju najveći broj poznanstava? Jesu li te osobe najutjecajnije u mreži?

4) Kako su točno kontakti organizirani? Kakva je struktura mreže?[Newman, Barabási i

Watts, 2005., str. 15]

Ipak, najbitnija pitanja postavljaju prilikom proučavanja interakcija izmeĎu dvoje ljudi

unutar mreže. Istražuju koja je vjerojatnost da se dvoje nasumično odabranih pojedinaca iz

mreže poznaje. Nadalje proučavaju kolika je vjerojatnost da imaju zajedničkog prijatelja ukoliko

Page 18: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

14

se inicijalno ne poznaju, te koji je najkraći put u lancu poznanika koji povezuje dvije nasumično

odabrane osobe. Tako postavljaju temelje za proučavanje pojave koja se u suvremenoj teoriji

društvenih mreža naziva efekt malog svijeta.

4.6. Travers i Milgram (1969.)

Premda je ideja o društvenim mrežama 50ih i 60ih godina prošlog stoljeća postajala sve

popularnijom u sociološkim krugovima, upravo ih je Milgram osvijestio i meĎu manje stručnim

krugovima svojim eksperimentom malog svijeta. Jedno od njegovih najranijih i najpoznatijih

istraživanja o ovom eksperimentu objavljeno je 1967. godine, ali značajnija djela i eksperimenti

nastaju tek nakon ostvarivanja suradnje s Jeffreyem Traversom. Ovaj je znanstvenik ponovio

Milgramove eksperimente i podupro tvrdnje detaljnijom i opsežnijom kvantitativnom

analizom.Članak u kojem su Milgram i Travers koautori, izdan 1969. godine, jasno i detaljno

objašnjava na koji su način proveli eksperiment malog svijeta.Sudionicima eksperimenta poslan

je formular i od njih je zatraženo da, nakon što ispune svoje podatke, isključivo preko svojih

poznanika dostave taj formular osobi koja je unutar njega odreĎena. Svaka sljedeća osoba trebala

je učiniti isto i tako sve dok formular ne dosegne svoje odredište.

Eksperiment je završio s 29% uspješnosti, odnosno 64 lanca, od ukupnih 294, uspješno su

dostavile formular na njegovo odredište. Duljina lanaca varirala je od 1 do 11, dok je prosječna

vrijednost iznosila 5.2, te je na temelju tog izračuna odreĎen pojam šest stupnjeva meĎusobne

udaljenosti. Diskutabilno je koliko su precizno sudionici eksperimenta samostalno pronašli

najkraći put. U stvarnosti, oni su prosljeĎivali formulare poznatoj osobi za koju su mislili da je

najbliža odredišnoj, ali lako se moglo dogoditi da je postojao neki drugi poznanik koji je, bez

njihovog znanja, bio direktno povezan s osobom koja je bila krajnje odredište. Stoga bi realna

meĎusobna udaljenost izmeĎu sudionika mogla biti i manja nego li je to eksperimentom

prikazano [Newman, Barabási i Watts, 2005., str. 16].

4.7. Derek de Solla Price (1965.)

Otprilike u isto vrijeme kada je Milgram razvijao eksperiment malog svijeta, Price se

posvetio svome radu koji društvenim mrežama pristupa na malo drukčiji način. On je proučavao

jednu od najstarijih informacijskih mreža, mrežu citiranja unutar znanstvenih časopisa, u kojoj

Page 19: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

15

svaki čvor predstavlja časopis a usmjerena veza od prvog čvora prema drugom označava da prvi

časopis citira drugog u svojoj bibliografiji.

Čini se da je Price bio prvi koji je sagledao uzorak citiranja kao mrežu i koji je

prezentirao detaljnu statističku analizu prikazane mreže. Zahvaljujući Eugeneu Garfieldu koji je

sastavio bazu podataka citata, i Priceu koji ih je prezentirao u svojoj analizi, kvaliteta podataka o

citatima znatno se poboljšala, što je rezultiralo time da i velik broj novijih istraživanja postane

kvalitetnijima [Newman, Barabási i Watts, 2005., str. 17].

4.8. De Castro i Grossman (1999.)

Posljednji u nizu povijesnih ličnostiza koje senavodi da su značajno utjecali na razvoj

znanosti društvenih mreža su autori De Castro i Grossman jer njihov rad sažima ideju koje su se

mnogi matematičari dotakli, ali je nikada nisu formalno istražili. Riječ je o Erdősovom broju,

tako nazvanom u čast maĎarskog matematičara Paula Erdősa, kojeg smo spomenuli ranije i koji

slovi za jednog od najproduktivnijih autora matematičkih radova. Erdősov broj je način

opisivanja suraĎivačke djelatnosti i godinama je bio popularna tema ležernih okupljanja u

matematičkim krugovima, a De Castro i Grossman su mu dali formalno značenje.

Broj se definira na sljedeći način: Kako bi mu bio dodijeljen Erdősov broj, autor mora

napisati znanstveni rad u suradnji s autorom koji ima konačan Erdősov broj. Sam Paul Erdős ima

Erdősov broj 0.Kako je za života napisao oko 1500 matematičkih članaka, uglavnom u suradnji s

drugim autorima, imao je 504 izravnih suradnika i to su ljudi s Erdősovim brojem 1. Autori koji

su suraĎivali s njima,ali ne i sa samim Erdősom, imaju Erdősov broj 2, a to je skupina od6 593

čovjeka. Dalje, analogno tome, oni koji su suraĎivali s ljudima koji imaju Erdősov broj 2, ali ne i

sa samim Erdősom ili bilo kime tko ima Erdősov broj 1, imaju Erdősov broj 3 i tako dalje. Osoba

koja ne sudjeluje ni u jednom takvom lancu suradništva koje ga povezuje s Erdősom ima

nedefiniran ili beskonačan Erdősov broj [Oakland University, 2010].

Page 20: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

16

Slika 4.2 Prikaz načina dodjeljivanja Erdősovog broja

S porastom interesa za društvene mreže Erdősov broj se pomaknuo od matematičke

anegdote u ozbiljniju znanstvenu studiju. Na ovaj način demonstriran je još jedan prikaz efekta

malog svijeta, u kontekstu znanstvene zajednice.

Page 21: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

17

5. Vizualizacija mreža

Nakon što prikupimo podatke o mreži koju promatramo potrebno ih je prezentirati na

načina koji je razumljiv kako bi sproveli rezultate analize. U tu svrhu koristimo vizualizaciju

društvenih mreža. Iako se vizualizacija može sprovoditi ručno, zbog velikog broja podataka to bi

u većini slučajeva bilo nemoguće zbog čega se istraživač odlučuje za neki od mnogobrojnih

softvera za vizualizaciju ovisno o prirodi i svrsi istraživanja koje provodi.

Tipični reprezentanti podataka o mreži su grafovi formirani u obliku mreže koji se

najčešće sastoje od jako velikog broja čvorova i veza. Sukladno tome, nisu lako čitljivi vizualni

prikazi i nije ih moguće intuitivno interpretirati. Zbog toga se koriste različite forme ne bi li se ti

kompleksni grafovi učinili što jasnijima i razumljivijima, kako čitatelju tako i samom

istraživaču. Prezentiranjepodataka izvršava se pomoću prikazivanja čvorova i veza izmeĎu njih u

različitim rasporedima. TakoĎer je moguće poslužiti se bojama koje opisuju svojstva pojedinih

čvorova, te veličinom i drugim naprednim opcijama prikazati vrijednosti odreĎenog čvora u

odnosu na ostale u mreži .

5.1. Softver za analizu društvenih mreža

Vizualno prikazivanje društvenih mreža važno je za razumijevanje prikupljenih podataka

i za provoĎenje rezultata analize. Vizualizacija se često koristi kao dodatna ili čak samostalna

metoda za analizu podataka. Softver za analizu društvenih mreža koristi se za prepoznavanje,

prezentiranje, analiziranje, vizualiziranje ili simuliranje čvorova i bridova iz različitih tipova

ulaznih podataka, uključujući i matematičke modele društvenih mreža. Korisno je što se izlazni

podaci mogu spremati na vanjskim datotekama što olakšava rad s jako velikim količinama

podataka koje je ponekad potrebno prikazati. Alati za analizu mreža omogućuju istraživačima da

proučavaju mreže svih veličina, od onih malih, poput obitelji ili projektnih timova, do jako

velikih poput, na primjer, Interneta ili širenja bolesti. Različiti alati pružaju matematičke i

statističke procedure koje se mogu primijeniti na modelu mreže. S obzirom na to što želimo

prikazati, alati za vizualizaciju mreža koriste se za promjenu izgleda, boja, veličina i drugih

svojstava prikaza mreže [Hogan, Carrasco i Wellman, 2007., str. 116].

Mnogo je primjera softvera za analizu mreža, te je velik broj njih specijaliziran za

odreĎeno područje istraživanja. U ovom radu korišten je Gephi, o kojem ćemo nešto više reći u

nastavku.

Page 22: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

18

5.1.1 Gephi

Gephi je jedan od mnogobrojnih primjera softvera za analizu i vizualizaciju društvenih

mreža. Točnije, on je platforma za interaktivnu vizualizaciju i istraživanje svih vrsta mreža i

složenih sustava, dinamičnih i hijerarhijskih grafova, te ga mogu koristiti svi oni koji žele

istraživati i razumjeti grafove. Prilikom korištenja ovog programa korisnik aktivno mijenja

dobiveni prikaz, manipulira strukturu, boje i oblike kako bi prikazao, ili pak uvidio, svojstva

mreže, koja u početku možda nisu bila vidljiva. Koristi 3D render engine za prikaz velikih mreža

u realnom vremenu i za ubrzavanje istraživanja podataka. Fleksibilna i multi-tasking arhitektura

omogućava mu rad s kompleksnim skupovima podataka i prikaz vrijednih vizualnih rezultata.

Ovo je besplatan program koji se može pokrenuti na bilo kojem sustavu koji podržava Javu 1.6 i

OpenGL[Gephi Team, 2008].

Page 23: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

19

6. Dinamička vizualizacija komunikacijskih trendova na blogovima

Za potrebe ovog rada odabranje prikaz komunikacije izmeĎu blogova kroz vrijeme. Svi

blogovi su sa stranice blog.hr, a pod komunikacijom razumijevamo komentare koje si ostavljaju.

Podaci o komentarima i pripadajućim blogovima prikupljaju se pomoću programa pretraživača i

spremaju u bazu podataka. Jednom prikupljeni podaci eksportiranisu u Gephi datoteku te je

pomoću Gephi alata za vizualizaciju napravljen njihov vizualni prikaz. Cilj je bio, u obliku

videa, prikazati kako se komunikacija na blogovima razvijala kroz vrijeme. Kako Gephi nema

mogućnost izrade videa, dodatnim malim programom napravljen je niz slika te su one spojene u

video kojim je prikazana komunikacija izmeĎu prikupljenih blogova.

6.1. Prikupljanje podataka pomoću programa pretraživača

Podaci o komunikaciji izmeĎu blogova prikupljeni su s blog.hr servisa, koji je jedan od

starijih servisa za blogging u Hrvatskoj. Kratko ćemo se osvrnuti na strukturu blog stranica koje

se na njemu nalaze. Pojedina blog stranica sastoji se od zapisa od strane korisnika, koje

nazivamo blog postovima, i komentara na pojedini zapis. Iako blog.hr servis pruža nekoliko

unaprijed sastavljenih izgleda, odnosno predložaka, sam izgled stranice, broj postova na stranici i

navigacija blogom odreĎeni su od strane korisnika što rezultira velikim brojem raznolikih

stranica. Ipak, stranica s komentarima na pojedini post odreĎena je od strane blog.hr servisa,

jednaka je za sve blogove, a možemo joj pristupiti preko linka koji se u pravilu nalazi na kraju

svakog blog posta. Slikom 6.1. prikazujemo izgled nekoliko vrlo različitih blog stranica koje

smo pronašli na spomenutom servisu.

Page 24: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

20

Slika 6.1 Različiti blogovi na blog.hr servisu

Struktura blogova usmjerila je dizajn programa pretraživača. Prikupljanje podataka

napravljeno je tako da proces obrade jednog bloga generira dodatne blogove za obradu. Početni

blog odabran je nasumično meĎu trenutno predstavljenim blogovima na stranicama blog.hr-a.

Cilj je bio prilikom obrade bloga pronaći sve blog postove i sve komentare koji se na njemu

nalaze. Kako se struktura blog stranice uvelike razlikuje od bloga do bloga, program pretraživač

pomoću nekoliko jednostavnih pravila prolazi kroz sve dostupne stranice koje pripadaju

pojedinom blogu. Srećom, kako smo već spomenuli, svi blogovi imaju link na stranicu s

komentarima na pojedini blog post. Struktura ove stranice odreĎena je blog.hr servisom uvelike

olakšavajući prikupljanje podataka iz komentara. Na slici 6.2. možemo vidjeti izgled stranice s

komentarima koja je jednaka za sve blogove.

Page 25: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

21

Slika 6.2 Stranica s komentarima ureĎena od strane blog.hr servisa

Program pretraživač je napisan u Javi. Koristi jsoup za parsiranje HTML-a (engl.

Hypertext Markup Language), te activejdbc za komunikaciju s MySQL bazom. Prilikom rada

prolazi kroz zadani blog prikupljajući sve stranice koje mu pripadaju, na taj način prikupljajući i

sve dostupne komentare. Prilikom skupljanja komentara, kako je već spomenuto, prikupljaju se i

novi blogovi za obradu. Pojednostavljeni prikaz rada programa pretraživača prikazan je slikom

6.1.

Slika 6.3 Pojednostavljeni rad programa pretraţivača

Rad programa pretraživača ukratko se može opisati na sljedeći način:

Ima li u bazi podataka u tablici blogova neobrađenih blogova?

Obradi prvi neobrađeni blog

Učitaj URL bloga

Obradi stranicu

Pronađi sve valjane linkove i upiši ih u tablicu link_todo

Pronađi sve komentare

Koji je blog autor komentara?

Ako taj blog ne postoji u tablici blogova dodaj ga

Dodaj komentar u tablicu komentara

Ima li valjanih linkova u tablici link_todo?

Page 26: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

22

Obradi stranicu

Zapiši da je blog obrađeni i vrati se na početak

Započinjemo s petljom koja se izvršava dok u tablici blogova ima neobraĎenih blogova.

Prilikom svake iteracije te petlje iščita se URL (engl. Uniform Resource Locator) jednog

neobraĎenog bloga te se taj blog krene obraĎivati. Pritom se učita navedeni URL, te se na njemu

obavlja pronalaženje linkova i komentara. Kroz proces pronalaženja linkova učitana stranica se

pregledava za linkove koji ispunjavaju odreĎene uvjete, a ti su da pripada blogu kojeg

obraĎujemo ili da vodi na stranicu s komentarima. Ukoliko link ispunjava jedan od ovih uvjeta i

pritom nije već zapisan u link cache tablicu, dodaje se u tablicu link _todo. Postoji poseban

slučaj kada pronaĎeni link vodi na neki drugi blog. Tada ga zapisujemo u tablicu blogs odnosno

zapisujemo ga za buduću obradu. Nakon pronalaženja linkova na stranici se izvršava

pronalaženje komentara. Proces pronalaženja komentara traži specifične HTML elemente koji

odgovaraju strukturi komentara na stranici s komentarima odreĎenima od strane blog.hr servisa.

Nakon što pronaĎemo komentar, podatke o njemu upisujemo u tablicu komentari (comments).

Isto tako, ukoliko pronaĎemo neki blog s kojim se dosada nismo susreli i njega zapisujemo u

tablicu blogova za buduću obradu. Time završavamo pronalaženje komentara. Nakon obrade

ovog prvog URL-a ulazimo u drugu petlju koja se izvršava dok god ima još linkova u tablici

link_todo. Ukoliko ima, učita se URL iz link_todo i ponovno se na njemu izvršava pronalaženje

linkova i pronalaženje komentara. Zatim se taj link izbriše iz tablice list_todo. Završetkom ove

petlje prazni se link_cache te se blog navodi kao obraĎen.

6.2. Eksport u Gephi

Kako bi vizualno prikazali podatke o komunikaciji meĎu blogovima prikupljene pomoću

programa pretraživača, bilo je potrebno podatke spremljene u bazu podataka pretvoriti u format

razumljiv Gephi programu. To je .gexf format datoteke. Eksportiranje se obavlja tako da se šalje

upit u bazu podatakakojim se učitavaju svi zapisani blogovi, te stvaraju čvorovi počevši od

onoga kojem je datum nastajanja najstariji. Nakon toga eksporter prolazi kroz sve komentare iz

baze i zapisuje ih kao vezeu .gexf formatu. Na taj način nastaju novi čvorovi i veze izmeĎu njih.

Veze izmeĎu blogova dodaju se na način da gledamo postoji li već veza izmeĎu čvora i i čvora j.

Ukoliko veza ne postoji dodajese. Ako je veza postojala prije, tada se mijenja težina tako da ae

povećava za jedan i zapisuje vrijeme kada se težina veze izmeĎu blogova promijenila. Na kraju

svi podaci se ispisuju u .gexf formatu datoteke.

Page 27: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

23

6.3. Obrada u Gephi

Nakon pripreme u .gexf format podaci se mogu učitati u Gephi alatu za vizualizaciju. Naš

rad u Gephiju biti će spremljen kao Gephi projekt te će se taj oblik kasnije koristiti prilikom

stvaranja videa kojim je vizualno prikazana komunikacija kroz vrijeme. Prikupljeni podaci dalje

su obraĎivani ne bi li iz njih dobili što više informacija. Tako su za naš graf izračunati dodatni

atributi kao što su modularnost (engl. modularity) i blizina centriranosti (engl. closeness

centrality). Modularnost nam omogućuje lakše raspoznavanje podgrupa unutar grafa

dodavanjem različitih boja, pa su prikazani čvorovi različito obojani u boje skupine kojoj

pripadaju na osnovu izračuna modularnosti. Mjerom blizine centriranosti odreĎuje se veličina

čvora i to na način da što je neki blog veći označava da ima veći broj kratkih veza, odnosno da je

bolje povezan s drugim blogovima. Ove vrijednosti dodijeljene su pojedinom čvoru od samog

početka prikaza i ne mijenjaju se dalje kroz vrijeme. S druge strane, veze koje spajaju čvorove

mijenjaju se s obzirom na podatke zapisane u .gexf datoteci, te na grafu možemo vidjeti vrijeme

kada nastaju i promjene njihove težine ukoliko do nje dolazi. Osim postavljanja ovih vrijednosti,

učinjene su još neke dodatne male izmjene ne bi li naš graf bio pregledniji, pa je tako

pozadinapostavljena u crnu boju i omogućena je transparentnost veza.

6.4. Program za stvaranje prikaza dinamičke vizualizacije

Gephijeve mogućnosti za obradu dinamičkih grafova, u inačici koja je korištena u

vrijeme pisanja rada (0.8.2.-beta) su ograničene. Sam Gephijev modul za vizualizaciju nema

mogućnost izrade videa, i premda je moguće prikazati razvoj dinamičkog grafa unutar Gephijeve

radne površine, preciznost i kvaliteta prikaza su mnogostruko manji nego kada se koristi

Gephijev modul za vizualizaciju. Kako bi prikaz bio kvalitetan, iskorišten je taj Gephijev modul

kako bi se izgenerirao slijed od velikog broja slika koje su kasnije spojene u video.U realizaciji

je korištengephi toolkit library pomoću kojeg je moguće programski pristupiti svim

mogućnostima koje Gephi pruža. Za potrebe ovog rada korištena je nestabilnainačica (gephi-

toolkit-0.9-20130429.180226-105-all.jar) zbog nekoliko neispravnosti u aktualnoj stabilnoj

inačici. Program koji generira slike vizualizacije radi na jednostavan način; na početku se učitava

već pripremljeni Gephi projekt, postavlja se početni i krajnji datum vizualizacije, te radni datum

na početni datum. Pokreće se petlja koja će se izvršavati sve dok je radni datum raniji od

krajnjeg. Unutar petlje graf se filtrira na period od početnog datuma do radnog. Zatim se izvodi

50 iteracija algoritma za rasporeĎivanje – force atlas 2 – pri svakoj iteraciji izgenerira se .png

sličica prikaza grafa. Na kraju petlje radni datum se pomiče unaprijed za dan te se petlja

Page 28: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

24

ponavlja. Jednom kada je proces gotov izgeneriran je slijed sličica koji prikazuje razvoj grafa u

intervalima od jednog dana pri čemu je jedan dan predstavljen s 50 sličica.

6.5. Rezultati obrade

Rezultat obrade prikupljenih podataka jest graf koji prikazuje kako se komunikacija

izmeĎu blogova mijenjala kroz period od 19.05. 2004. do 08.04.2013. Sadrži ukupno 11 152

čvora povezanih s 38 599 veza. Svaki čvor predstavlja jedan blog, a njegova veličina odreĎena je

vrijednosti blizine centriranosti koji sam Gephi izračunava za svaki pojedini čvor. Veza

predstavlja komentar izmeĎu dva bloga, a težina veze označava koliko je puta prvi blog ostavio

komentar na drugi blog. Što je veći broj komentara to će veza izmeĎu dva bloga biti deblja. Boja

koju odreĎeni blog nosi predstavlja pripadanje pojedinoj podskupini. Tu vrijednost nazivamo

modularnost, a izračunava je sam program. Konačan graf sa svim pripadnim česticama prikazan

je na slici 6.3.

Page 29: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

25

Slika 6.4 Konačan graf

Rezultat dinamičke obrade komunikacijskih trendova meĎu blogovima je video isječak

kojim je prikazano kako se komunikacija razvijala kroz period od 19.05.2004. do 01.09.2006.

Razlog vizualizacije ovako skraćenogprikaza jest taj što je već i pri ovom isječku od otprilike

dvije godine, obrada podataka vremenski i memorijski poprilično zahtjevna, te je za prikaz ovih

28 mjeseci bilo potrebno dulje od jednog dana za obradu. Na ovaj način prikazan je usmjereni

graf koji se sastoji od 2 896 čvorova povezanih s 6 002 veze. I ovdje pojedini čvor predstavlja

blog čija je veličina odreĎena blizinom centriranosti koja je, kao i modularnost kojom je

odreĎena boja koja označava pripadnost skupini, konstantna za cijeli graf te se navedene

vrijednosti ne mijenjaju tijekom video prikaza. Promjene možemo vidjeti na debljinama veza

tako da pojedina veza postaje deblja kako se povećava broj komentara izmeĎu blogova. Razvoj

grafa od početnog do krajnjeg datuma video isječka možemo vidjeti na slici 6.4.

Page 30: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

26

Slika 6.5 Razvoj grafa od početka do kraja video isječka

Page 31: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

27

Već na prvi pogled uočavamo kako su pojedini blogovi formirali podgrupe.One su, radi

zornijeg prikaza, označne različitim bojama i predstavljaju povezanost unutar sebe. Ovdje je

važno napomenuti kako je formiranje podgrupa na prikazan način dijelom posljedica načina

prikupljanja podataka. Naime, od ukupnog broja čestica na cijelom grafu, potpuno ih je obraĎeno

samo 168. Prilikom obrade svakog pojedinog bloga čitaju se komentari koji mu pripadaju i u

listu blogova koje je tek potrebno obraditi zapisujemo blog koji šalje komentar. Dakle, blogovi

koji šalju komentare, ukoliko se nisu već ranije pojavili, u tom trenutku dospijevaju u bazu

podataka što znači da će biti prikazani na grafu, ali još nisu obraĎeni u punom smislu, s toga ne

znamo koji su blogovi njima ostavili komentare. Rezultat je da potpuno obraĎeni blogovi prema

sebi privlače velik broj onih koji su na njih komentirali, ali koji nisu obraĎeni u punom smislu, te

na taj način formiraju podgrupe koje možemo vidjeti na slici 6.4. Ipak, blogovi oko kojih se

formira podgrupa predstavljaju popularnije blogove meĎu onim obraĎenima.

Page 32: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

28

7. Zaključak

Za potrebe ovog rada odabran je prikaz komunikacije izmeĎu blogova kroz period od 2004.

do 2013. godine.

Počevši s 19.05.2004. godine, s blog.hr servisa, pomoću programa pretraživača, prikupljeni

su komentari, odnosno podaci o autoru bloga koji komentira i vremenu komentiranja, te su ti

podaci spremljeni u bazu podataka.Iz baze podataka su eksportirani u Gephi datoteku, vizualno

prikazani u Gephiju te je dio njih obraĎen u konačan video prikaz. Kao početni blog nasumično

je odabran jedan od trenutno predstavljenih na stranicama blog.hr-a te se novi blogovi za obradu

pronalaze u komentarima. Ovaj način prikupljanja podataka u konačnici se pokazao manjkavim

zbog toga što finalna vizualna reprezentacija koja prikazuje graf od ukupno 11 152 čvora formira

podgrupe u čijem se centru nalaze blogovi koji su potpuno obraĎeni, odnosno oni blogovi čiji su

komentari u potpunosti pročitani. Ti blogovi na sebe privlače velik broj onih koji su na njih

komentirali, te iako su se blogovi koje nalazimo u centrima podgrupa filtrirali kao popularniji

meĎu obraĎenima, nije moguće tvrditi da su upravo oni najkomentiraniji blogovi upravo zbog

toga što se meĎu neobraĎenim blogovima možda kriju blogovi na koje je ostavljen znatno veći

broj komentara.

Iako su podaci o komunikacijskim trendovima prikupljeni za period od gotovo osam godina,

dinamička obrada prikazuje podatke za tek nešto više od dvije godine, točnije od 19.05.2004. do

1.09.2006. godine. Razlog tome je što je već i pri ovom, relativno malom vremenskom isječku

obrada podataka prilično zahtjevna te je za nju bilo potrebno dulje od jednog dana. Ipak, na

prikazanom isječku jasno vidimo kako pojedini blogovi nastaju, izmjenjuju komentare i s

vremenom formiraju podgrupe te nagovještavaju kako bi izgledao dinamički prikaz

komunikacijskih trendova za cjelokupan broj prikupljenih podataka.

Page 33: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

29

Literatura

1. Barabási A. L., Network Science, PDF Version, November 2012., dostupno na

http://barabasilab.com/networksciencebook

2. Biggs N. (1993). Algebric Graph Theory, Second Edition, Cambridge University Press

3. Borgatti S. P., Mehra A., Brass D. J, Labianca G. (2009). Network analysis in the social

sciences. Science, 323(5916):892–895

4. Diestel R. (2005). Graph Theory, Third edition. Soringer-Verlag Heidelberg

5. Easley D., Kleinberg J. (2010). Networks, Crowds, and Markets: Reasoning about a

Highly Connected World, Cambridge University Press

6. Gephi Team, (2008). dostupno na https://launchpad.net/gephi

7. Gross J.L., Yellen J. (2003). Handbook of Graph Theory, CRC Press

8. Hogan B., Carrasco J., Wellman B. (2007). Visualizing Personal Networks: Working

with Participant-Aided Sociograms

9. Moreno J. (1934).Who shall Survive, Nervous and mental disease publishing co.

10. Newman M., Barabási A. L., Watts J. D. (2005). The Structure and Dynamics of

Networks, Princeton University Press

11. Oakland University, (2010). The Erdős Number Project, dostupno na

http://www.oakland.edu/enp/thedata/

12. Wasserman S., Faust K.(1994). Social network analysis: Methods and applications,

Cambridge University Press

Page 34: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

30

Prilog – Programski kod

Work.java

1 package info.asy;

2

3 import info.asy.model.Blog;

4 import info.asy.model.Comment;

5 import info.asy.model.LinkCache;

6 import info.asy.model.LinkToDo;

7 import org.apache.commons.codec.digest.DigestUtils;

8 import org.apache.commons.validator.routines.UrlValidator;

9 import org.javalite.activejdbc.Base;

10 import org.javalite.activejdbc.Model;

11 import org.jsoup.Connection;

12 import org.jsoup.Jsoup;

13 import org.jsoup.nodes.Document;

14 import org.jsoup.nodes.Element;

15 import org.jsoup.select.Elements;

16

17 import java.io.IOException;

18 import java.text.ParseException;

19 import java.text.SimpleDateFormat;

20 import java.util.Date;

21 import java.util.List;

22 import java.util.Locale;

23

24 import static java.lang.System.out;

25

26

27 public class Work {

28

29 final int timeout = 10000; //timeout za spajanje na stranicu

30 final int fairPlayTime = 500; //koliko cekat izmedju dva dohvacanja

31 int retryLimit = 5; //koliko puta ce se pokusat spojit

32

33 List<Blog> blogs;

34 UrlValidator validator = new UrlValidator();

35

36 public void doStuff(){

37 Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/surfer_crawl",

"root", "cellar");

38

39 //ispisi sve neobradjene

40 blogs = Blog.find("processed = ?", false);

41 for(Blog blog : blogs){

42 out.println("unprocessed blog..." + blog.getString("url"));

43 }

44 //kreni obradjivat

45 int processedBlogCount = 0;

46 while(!Blog.find("processed = ?", false).isEmpty()){

47 processedBlogCount++;

48 Blog blog = (Blog) Blog.findFirst("processed = ?", false);

49 out.println("- - - N O V I B L O G - - -");

50 out.println("Obradjuem blog..." + blog.getString("url") + "\nkoji je

" + processedBlogCount + " obradjeni blog...");

51 obradiBlog(blog);

52 }

53 Base.close();

Page 35: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

31

54 }

55

56 private void obradiBlog(Blog blog){

57 String blogUrl = blog.getString("url");

58 if(crawlPage(blogUrl, blog)){

59 while(LinkToDo.findFirst("") != null){

60 Model currentLink = LinkToDo.findFirst("");

61 crawlPage(currentLink.getString("url"), blog);

62 currentLink.delete();

63 }

64 blog.set("processed", true).saveIt();

65 clearLinkCache(blog);

66 LinkToDo.deleteAll();

67 }

68 else {

69 blog.set("error", true).saveIt();

70 out.println("Nije bilo moguce pristupiti blogu: " + blogUrl +

71 "\n napravit cu pauzu od 10 min i zatim pokusat sa slijedecim blogom...");

72 try {

73 Thread.sleep(600000);

74 } catch (InterruptedException e) {

75 e.printStackTrace();

76 }

77 }

78 }

79

80

81 private boolean crawlPage (String pageUrl, Blog blog){

82 String blogUrl = blog.getString("url");

83 out.println("\tCrawling page..." + pageUrl + "\n\ton blog..." + blogUrl);

84 //mali wait kako ne bi slali previse upita na blog.hr

85 try {

86 Thread.sleep(fairPlayTime);

87 } catch (InterruptedException e) {

88 e.printStackTrace();

89 }

90

91 Document page = null;

92 int retry = 0;

93 while (page == null && retry <= retryLimit){

94 try {

95 page = getPage(pageUrl);

96 } catch (IOException e) {

97 retry++;

98 out.println("Could not read page... retrying " + retry);

99 if (retry == retryLimit){

100 out.println("All retries have failed.");

101 out.println("Skipping page...");

102 return false;

103 }

104 }

105 }

106 extractLinks(blog, page);

107 extractComments(blogUrl, page);

108 return true;

109 }

110

111

112 private void extractComments(String blogUrl, Document page) {

113 Elements listComment = page.select("li[id^=comment]");

114 for(Element comment : listComment){

Page 36: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

32

115 String fromBlog = null;

116 Date date;

117

118 out.println("\t\tComment:");

119 Element author = comment.select("a[href^=http]").first();

120 if (author == null){

121 out.println("\t\t\tNo author! Skipping...");

122 continue;

123 }

124 fromBlog = author.attr("href");

125 // provjerit ce je li blog s blog.hr i je li je validan url

126 // ovako izbjegava anonimne i ne-blog.hr komentare

127 if (!fromBlog.contains("blog.hr")){

128 out.println("\t\t\tBlog does not originate from blog.hr!");

129 continue;

130 }

131 else if (!validator.isValid(fromBlog)){

132 out.println("\t\t\tUrl is not valid! url:" + fromBlog );

133 continue;

134 }

135 out.println("\t\t\tfrom blog:" + fromBlog);

136 out.println("\t\t\tauthor: " + author.text());

137

138 String ispodPosta = comment.select("p.ispodposta").first().text();

139 try {

140 date = new SimpleDateFormat("dd.MM.yyyy. (HH:ss)",

Locale.ENGLISH).parse(ispodPosta);

141 out.println("\t\t\t date:" + date);

142 } catch (ParseException e) {

143 out.println("Could not parse date...");

144 continue;

145 }

146 addCommentToDatabase(fromBlog, blogUrl, date);

147 }

148 }

149

150 private void extractLinks(Blog blog, Document page) {

151 String blogUrl = blog.getString("url");

152 int currentDepth = blog.getInteger("depth");

153 Elements links = page.select("a[href]");

154 for (Element link : links) {

155 String href = link.attr("href");

156 if (validator.isValid(href)) {

157 if (!isLinkInCache(blog, href)) {

158 if (href.contains(blogUrl.replace("http://", ""))) {

159 LinkToDo.createIt("url", href);

160 } else if (href.contains("blog.hr/komentari")) {

161 LinkToDo.createIt("url", href);

162 } else if (href.contains("blog.hr/print") ||

href.contains("www.blog.hr") || href.contains("mailto:")) {

163 //linkOstali.add(link);

164 } else if (href.contains("blog.hr")) {

165 //bilo koji blog.hr url pretvorit u http://imebloga.blog.hr

166 out.println("\t\tHREF:" + href);

167 String[] splitHref = href.split("//");

168 String blogSubstring = href;

169 if (splitHref[1].contains("/")) {

170 /*ukoliko ima nastavak url npr. nekiblog.blog.hr/nesto/nesto.hr

171 izvuc samo nekiblog.blog.hr */

172 blogSubstring = href.substring(0, href.indexOf("/",

href.indexOf("//") + 2));

Page 37: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

33

173 }

174 out.println("\t\tBLOG from href:" + blogSubstring);

175 addBlogToDatabase(blogSubstring, currentDepth + 1);

176 }

177 }

178 }

179 }

180 }

181

182 private Document getPage (String url) throws IOException{

183 out.println("Reading url " + url);

184 Connection soupCon = Jsoup.connect(url);

185 soupCon.timeout(timeout);

186 return soupCon.get();

187 }

188

189

190 private void addBlogToDatabase(String url, int depth){

191 if(Blog.find("url = ?", url).isEmpty()){

192 Blog.createIt("url", url, "processed", false, "error", false,

"depth", depth);

193 out.println("\tAdded blog " + url + " to database table blogs.");

194 }

195 else {

196 out.println("\tBlog " + url + "is already in the database table

blogs.");

197 }

198

199 }

200

201 private boolean isLinkInCache(Blog blog, String link){

202 if(LinkCache.find("md5 = ?", DigestUtils.md5Hex(link)).isEmpty()){

203 LinkCache.createIt("blog_id", blog.get("id"), "md5",

DigestUtils.md5Hex(link));

204 return false;

205 }

206 return true;

207 }

208

209 private void clearLinkCache(Blog blog) {

210 LinkCache.delete("blog_id = ?", blog.get("id"));

211 }

212

213 private void addCommentToDatabase(String fromBlog, String toBlog, Date date){

214 out.println("\t\t\tAdding comment to database from: " + fromBlog + " to:"

+ toBlog);

215 Model fromBlogFromDb = Blog.first("url = ?", fromBlog);

216 if (fromBlogFromDb == null){

217 out.println("fromBlog is not valid (no hits in db!)");

218 return;

219 }

220 Object fromBlogId = fromBlogFromDb.get("id");

221 Object toBlogId = Blog.first("url = ?", toBlog).get("id");

222 Comment.createIt("from_blog", fromBlogId, "to_blog", toBlogId, "date",

date);

223 }

224 }

ExportToGEXF.java

1 package info.asy.export;

Page 38: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

34

2

3 import info.asy.model.Blog;

4 import info.asy.model.Comment;

5 import it.uniroma1.dis.wiserver.gexf4j.core.Edge;

6 import it.uniroma1.dis.wiserver.gexf4j.core.EdgeType;

7 import it.uniroma1.dis.wiserver.gexf4j.core.Gexf;

8 import it.uniroma1.dis.wiserver.gexf4j.core.Graph;

9 import it.uniroma1.dis.wiserver.gexf4j.core.Mode;

10 import it.uniroma1.dis.wiserver.gexf4j.core.Node;

11 import it.uniroma1.dis.wiserver.gexf4j.core.data.*;

12 import it.uniroma1.dis.wiserver.gexf4j.core.dynamic.TimeFormat;

13 import it.uniroma1.dis.wiserver.gexf4j.core.impl.GexfImpl;

14 import it.uniroma1.dis.wiserver.gexf4j.core.impl.StaxGraphWriter;

15 import it.uniroma1.dis.wiserver.gexf4j.core.impl.data.AttributeListImpl;

16

17 import java.io.File;

18 import java.io.FileWriter;

19 import java.io.IOException;

20 import java.io.Writer;

21 import java.util.ArrayList;

22 import java.util.Calendar;

23 import java.util.Date;

24 import java.util.List;

25

26 import org.apache.commons.validator.routines.UrlValidator;

27 import org.javalite.activejdbc.Base;

28 import org.javalite.activejdbc.LazyList;

29 import org.javalite.activejdbc.Model;

30 import org.joda.time.DateTime;

31

32 public class ExportToGEXF {

33

34 int nodeCount = 0;

35 int edgeCount = 0;

36

37 public void export(String fileName){

38 Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/surfer_crawl",

"root", "cellar");

39

40 List<Comment> allComments = Comment.findBySQL("SELECT * FROM comments

ORDER BY date ASC;");

41 List<Blog> allBlogs = Blog.find("processed = true");

42

43 Gexf gexf = new GexfImpl();

44 Calendar date = Calendar.getInstance();

45

46 gexf.getMetadata().setLastModified(date.getTime()).setCreator("Asy")

47 .setDescription("Prikaz blogova");

48

49 Graph graph = gexf.getGraph();

50 graph.setDefaultEdgeType(EdgeType.DIRECTED).setMode(Mode.DYNAMIC)

51 .setTimeType(TimeFormat.DATE);

52

53 AttributeList attrList = new AttributeListImpl(AttributeClass.EDGE);

54 attrList.setMode(Mode.DYNAMIC);

55 graph.getAttributeLists().add(attrList);

56 Attribute attWeight = attrList.createAttribute("weight",

AttributeType.FLOAT, "weight");

57

58 System.out.println("Found " + allBlogs.size() + " blogs...");

59 int currentBlog = 0;

Page 39: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

35

60 for (Blog blog : allBlogs) {

61 System.out.println("Blog " + ++currentBlog);

62 List<Comment> listaKomentara = Comment.find("to_blog = ?",

blog.getInteger("id")).limit(1).orderBy("date ASC");

63 if (listaKomentara.isEmpty()){

64 continue;

65 }

66 DateTime prviKomentar = new

DateTime(listaKomentara.get(0).get("date"));

67 createNode(graph, blog.getString("url"), prviKomentar.toDate());

68 }

69

70 UrlValidator validator = new UrlValidator();

71

72 int currentComment = 0;

73 System.out.println("Found " + allComments.size() + " comments...");

74 for (Comment comment : allComments) {

75 System.out.println("Current comment:" + ++currentComment);

76 String fromNode = ((String)

(Blog.findById((comment.get("from_blog"))).get("url")));

77 String toNode = ((String)

(Blog.findById((comment.get("to_blog"))).get("url")));

78 if (validator.isValid(fromNode)) {

79 DateTime commentDate = new DateTime(comment.get(("date")));

80

81 if (findNode(graph, fromNode) != null) {

82 System.out.println("Node exists! " + fromNode);

83 } else {

84 System.out.println("Creating new node...");

85 createNode(graph, fromNode, commentDate.toDate());

86 }

87

88 if (findEdge(graph, findNode(graph, fromNode), findNode(graph, toNode)) != null)

{

89 Edge edge = findEdge(graph, findNode(graph, fromNode),

findNode(graph, toNode));

90 AttributeValueList edgeAtributi = edge.getAttributeValues();

91 AttributeValue dynWeight =

edgeAtributi.get(edgeAtributi.size() - 1);

92 DateTime datum = new DateTime(dynWeight.getStartValue());

93

94 int currentWeight = Integer.decode(dynWeight.getValue());

95 currentWeight++;

96

97 if (datum.getYear() == commentDate.getYear() && datum.getMonthOfYear() ==

commentDate.getMonthOfYear()

98 && datum.getDayOfMonth() == commentDate.getDayOfMonth()) {

99 System.out.println("Same date attribute detected!");

100 dynWeight.setValue("" + currentWeight);

101 } else {

102 AttributeValue newWeight =

edgeAtributi.createValue(attWeight, "" + currentWeight);

103 newWeight.setStartValue(commentDate.toDate());

104 }

105 } else {

106 Edge edge = findNode(graph, fromNode).connectTo("" +

edgeCount, findNode(graph, toNode));

107 edge.setEdgeType(EdgeType.DIRECTED);

108 AttributeValue dynWeight =

edge.getAttributeValues().createValue(attWeight, "1");

109 dynWeight.setStartValue(commentDate.toDate());

Page 40: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

36

110 edgeCount++;

111 }

112

113 } else {

114 System.out.println("Url is malformed, skipping " + fromNode);

115 }

116 }

117

118 Base.close();

119

120 StaxGraphWriter graphWriter = new StaxGraphWriter();

121 File f = new File(fileName);

122 Writer out;

123 try {

124 out = new FileWriter(f, false);

125 graphWriter.writeToStream(gexf, out, "UTF-8");

126 System.out.println(f.getAbsolutePath());

127 } catch (IOException e) {

128 e.printStackTrace();

129 }

130 }

131

132 private Node createNode(Graph graph, String label, Date date){

133 Node newNode = graph.createNode("" + nodeCount);

134 newNode.setLabel(label);

135 newNode.setStartValue(date);

136 nodeCount++;

137 return newNode;

138 }

139

140 private Node findNode(Graph graph, String nodeName){

141 for(Node node: graph.getNodes()){

142 if(node.getLabel().equals(nodeName)){

143 return node;

144 }

145 }

146 return null;

147 }

148

149 private Edge findEdge(Graph graph, Node fromNode, Node toNode){

150 for(Edge edge : graph.getAllEdges()){

151 if(edge.getSource().equals(fromNode) && edge.getTarget().equals(toNode)){

152 return edge;

153 }

154 }

155 return null;

156 }

157 }

158

DynamicGephi.java

1 package info.asy.pictury;

2

3 import org.gephi.dynamic.api.DynamicController;

4 import org.gephi.dynamic.api.DynamicGraph;

Page 41: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

37

5 import org.gephi.dynamic.api.DynamicModel;

6 import org.gephi.filters.api.FilterController;

7 import org.gephi.filters.api.Query;

8 import org.gephi.filters.api.Range;

9 import org.gephi.filters.plugin.dynamic.DynamicRangeBuilder;

10 import org.gephi.filters.spi.FilterBuilder;

11 import org.gephi.graph.api.Graph;

12 import org.gephi.graph.api.GraphController;

13 import org.gephi.graph.api.GraphModel;

14 import org.gephi.graph.api.GraphView;

15 import org.gephi.io.exporter.api.ExportController;

16 import org.gephi.io.exporter.preview.PNGExporter;

17 import org.gephi.io.importer.api.ImportController;

18 import org.gephi.layout.plugin.AutoLayout;

19 import org.gephi.layout.plugin.forceAtlas2.ForceAtlas2;

20 import org.gephi.layout.plugin.forceAtlas2.ForceAtlas2Builder;

21 import org.gephi.preview.api.PreviewController;

22 import org.gephi.preview.api.PreviewModel;

23 import org.gephi.project.api.ProjectController;

24 import org.gephi.project.api.Workspace;

25 import org.joda.time.DateTime;

26 import org.openide.util.Lookup;

27

28 import javax.imageio.ImageIO;

29 import java.awt.*;

30 import java.awt.image.BufferedImage;

31 import java.io.File;

32 import java.io.IOException;

33 import java.net.URISyntaxException;

34 import java.nio.file.Files;

35

36 public class DynamicGephi {

37

38 final Font consolasFont = new Font("Consolas", Font.PLAIN, 12);

39 int fileCount = 0;

40

41

42 public void run(){

43 //pokreni projekt - workspace

44 //dijelovi ovog koda su adaptirani sa gephi toolkit wikija

45

46 ProjectController pc =

Lookup.getDefault().lookup(ProjectController.class);

47 pc.newProject();

48

49 if (pc.getCurrentProject() != null) {

50 pc.closeCurrentProject();

51 }

52 try {

53 File file = new

File(getClass().getResource("/resource/limitGephi1.gephi").toURI());

54 pc.openProject(file).run();

55 } catch (URISyntaxException e) {

56 e.printStackTrace();

57 }

58

59 Workspace workspace = pc.getCurrentWorkspace();

60

61 //kontoleri i model

62 ImportController importController =

Lookup.getDefault().lookup(ImportController.class);

Page 42: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

38

63

64 //graph

65 GraphModel graphModel =

Lookup.getDefault().lookup(GraphController.class).getModel();

66

67 DynamicController dc =

Lookup.getDefault().lookup(DynamicController.class);

68 PreviewModel model =

Lookup.getDefault().lookup(PreviewController.class).getModel();

69

70 DynamicModel dynamicModel= dc.getModel();

71 DynamicGraph dynGraph =

dynamicModel.createDynamicGraph(graphModel.getGraph());

72 getDynamicInfo(dynamicModel, dynGraph);

73

74 DateTime startDatum = new DateTime(2004, 5, 19, 0, 0);

75 DateTime endDatum = new DateTime(2013, 4, 9, 0, 0);

76 DateTime curDate = startDatum;

77

78 FilterController filterController =

Lookup.getDefault().lookup(FilterController.class);

79 FilterBuilder[] builders =

Lookup.getDefault().lookup(DynamicRangeBuilder.class).getBuilders();

80 DynamicRangeBuilder.DynamicRangeFilter dynamicRangeFilter =

(DynamicRangeBuilder.DynamicRangeFilter) builders[0].getFilter();

81 Query dynamicQuery = filterController.createQuery(dynamicRangeFilter);

82 filterController.add(dynamicQuery);

83

84

85 while(curDate.isBefore(endDatum)) {

86 dynamicRangeFilter.setRange(new Range(startDatum.getMillis(),

curDate.getMillis()));

87 GraphView view = filterController.filter(dynamicQuery);

88 Graph filteredGraph = graphModel.getGraph(view);

89 System.out.println("filter range: " +

startDatum.toString("dd.MM.YYYY.") + " - " + curDate.toString("dd.MM.YYYY."));

90 System.out.println("filteredgraph info: \nEDGE COUNT:" +

filteredGraph.getEdgeCount()

91 + "\nNODE COUNT:" + filteredGraph.getNodeCount());

92 layoutGraph(graphModel, workspace, startDatum, curDate);

93 curDate = curDate.plusDays(1);

94 }

95 }

96

97 private void getDynamicInfo(DynamicModel dynamicmodel, DynamicGraph dynGraph) {

98 System.out.println("\tDa li je dynamic?" +

dynamicmodel.isDynamicGraph());

99 System.out.println("\tDynamic edges?" + dynamicmodel.hasDynamicNodes());

100 System.out.println("\tMIN: " + dynamicmodel.getMin() + " MAX:" +

dynamicmodel.getMax());

101 System.out.println("\tHIGH:" + dynGraph.getHigh());

102 System.out.println("\tLOW:" + dynGraph.getLow());

103 System.out.println("\tINTERVAL:" + dynGraph.getInterval());

104 System.out.println("\tNORMAL graph info: \n\tEDGE COUNT:" +

dynGraph.getUnderlyingGraph().getEdgeCount()

105 + "\n\tNODE COUNT:" +

dynGraph.getUnderlyingGraph().getNodeCount());

106 }

107

108 private void layoutGraph(GraphModel graphModel, Workspace workspace, DateTime

startDatum, DateTime curDatum) {

Page 43: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

39

109 //vrti force atlas

110 System.out.println("Running forceAtlas");

111 ForceAtlas2 atlas2 = new ForceAtlas2Builder().buildLayout();

112 atlas2.setGraphModel(graphModel);

113 atlas2.setOutboundAttractionDistribution(true);

114 atlas2.setScalingRatio(2.0);

115 atlas2.setGravity(1.0);

116 atlas2.setThreadsCount(3);

117 atlas2.setJitterTolerance(1.0);

118 atlas2.setBarnesHutOptimize(false);

119 atlas2.setAdjustSizes(false);

120 atlas2.setLinLogMode(true);

121 AutoLayout.DynamicProperty dissuadeHubsProperty =

AutoLayout.createDynamicProperty("forceAtlas2.distributedAttraction.name",

Boolean.TRUE, 1f);

122 atlas2.initAlgo();

123 for (int i = 0; i <50 && atlas2.canAlgo(); i++) {

124 atlas2.goAlgo();

125 exportGraph(workspace, startDatum, curDatum);

126 }

127 atlas2.endAlgo();

128 }

129

130 private void exportGraph(Workspace workspace, DateTime startDatum, DateTime

curDatum) {

131 ExportController ec = Lookup.getDefault().lookup(ExportController.class);

132 PNGExporter pngExporter = (PNGExporter)ec.getExporter("png");

133 pngExporter.setWorkspace(workspace);

134 pngExporter.setWidth(1920);

135 pngExporter.setHeight(1080);

136 System.out.print(".");

137 File file = new File("imgs/test" + fileCount++ + ".png");

138 try {

139 ec.exportFile(file, pngExporter);

140 } catch (IOException e) {

141 e.printStackTrace();

142 }

143

144 //cekanje jer ponekad ne stigne pristupit upravo eksportiranom png-u

145 while(!Files.isReadable(file.toPath())) {

146 System.out.println("File could not be read, will wait 100ms and try

again...");

147 try {

148 Thread.sleep(100);

149 } catch (InterruptedException e) {

150 e.printStackTrace();

151 }

152 }

153 try {

154 BufferedImage image = ImageIO.read(file.toURI().toURL());

155 Graphics g = image.getGraphics();

156 g.setFont(consolasFont);

157 g.drawString("Vizualizacija 1 - Asja Stermsek", 10, 10);

158 g.drawString(startDatum.toString("dd.MM.YYYY.") + " - " +

curDatum.toString("dd.MM.YYYY."), 10, 24);

159 g.dispose();

160 ImageIO.write(image, "png", file);

161 } catch (IOException e) {

162 e.printStackTrace();

163 }

164 }

Page 44: VIZUALIZACIJAKOMUNIKACIJSKIH TRENDOVA NA DRUŠTVENIM ... · sveuČiliŠte u zagrebu fakultet organizacije i informatike v a r a Ţ d i n asja stermšek vizualizacijakomunikacijskih

40

165 }

166