Näytetään tekstit, joissa on tunniste #SuomiTop100. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste #SuomiTop100. Näytä kaikki tekstit

tiistai 26. kesäkuuta 2012

Twiittien kertomaa: #Juhannusjuna

Päivitys 28.6. klo 20:30: Twiittien aikaleimatietoja oli tulkittu väärin, koska ne olivat GMT+0 aikaa eivätkä Suomen aikaa. Tämä on korjattu tekstiin, mutta jaettu data on edelleen GMT+0.

Sain hyvää palautetta edellisestä viestistäni #SuomiTop100-ilmiö ja osittain sen myötä päädyin tällä kertaa tutkimaan #juhannusjuna Twitter-keskustelua.

Juhannusjuna oli Yleisradion tuotanto, joka seurasi juhannusyönä 2012 Helsinki-Rovaniemi-junan matkaa suorana televisiossa, radiossa ja netissä. Lähestys oli 13 tunnin mittainen ja se televisioitiin Suomen lisäksi myös Saksaan, Ranskaan sekä Norjaan. Tuotanto noudatti ns. Slow TV -formaattia, joka määritelmänsä mukaan seuraa maratoonin omaisesti arkipäiväistä tapahtumaa suorana alusta loppuun.

Tarkoituksenani oli ilmentää Juhannusjunan tekijöille heidän pyynnöstään #juhannusjuna-hashtagin alla käytyä keskustelua.

Teknisen toteutuksen kuvaus


Twitter-rajapinta eli API on hyvin monipuolinen ja helppokäyttöinen. Rajapinnan kautta on mahdollista hakea kaikki Twitter:ssä muutenkin julkisesti saatavilla oleva data (tietyin rajoituksin). Esimerkiksi search-metodi mahdollistaa viimeisimpien twiittien hakemisen hakuehtoihin perustuen. Rajapinta on laajasti dokumentoitu ja tarjolla on myös runsaasti esimerkkejä siitä miten rajapintaa kutsutaan.

Normaalisti rajapintoja käytetään ohjelmallisesti, mutta koska Twitter:n osalla kyse on REST-rajapinnasta on kyselyitä mahdollista tehdä myös suoraan selaimen avulla. Esimerkiksi yksittäinen #juhannusjuna-hashtagin sisältävä twiitti ja sen tiedot on mahdollista hakea syöttämällä selaimen osoiteriville kysely:
http://search.twitter.com/search.json?q=%23juhannusjuna&rpp=1,

missä q=%23juhannusjuna rajaa hakua niin, että haetaan vain twiitit joissa on sana #juhannusjuna ja rpp=1 rajaa tulosten määrän yhteen sivua kohden (results per page). Kuten huomataan erotellaan useat parametrit osoiterivillä &-merkillä. Huomioitavaa on myös, että risuaita (#) on merkittävä osoiterivillä sen koodatussa muodossa "%23", koska sillä on erityismerkityksensä URL-osoitteissa.

Rajapinta palauttaa JSON-muotoista dataa, jota on helppo tulkita koneellisesti. Ihmiselle Twitter:n palauttama vaste on hankalalukuista etenkin, koska tietoja ei ole rivitetty. Vaste on kuitenkin mahdollista kopioida esimerkiksi JSONLint-nimiseen palveluun, joka muuntaa datan helpommin luettavaan muotoon (joskin edelleen on kyse koodista).

Kuten sanottua on rajapintoja usein mielekästä käsitellä ohjelmallisesti. Itse kirjoitin yksinkertaisen, n. 10 riviä pitkän, Python-koodipätkän, jonka avulla hain kaikki #juhannusjuna sekä #midsummertrain -aiheiset twiitit Twitter-rajapinnasta (n. 1600 kpl) ja tallensin ne MondoDB -tietokantaan. Lokiikaltaan kyse on siis hyvin suoraviivaisesta ohjelmasta, joka hakee twiittejä rajapinnasta yksi kerrallaan ja tallentaa uudet vielä hakemattomat twiitit lokaaliin tietokantaan, josta niiden käsittely ei enää riipu Twitter:stä.

Tulokset


#SuomiTop100-hashtagin tapauksessa kiinnostavia näkökulmia olivat se ketkä asiasta keskustelivat ja miten he linkittyivät toisiinsa sekä toisaalta millaisia lopulliselle listalle päässeet olivat Twitter-käyttäjinä. #Juhannusjuna:n tapauksessa kiinnostavia kysymyksiä taas olivat etenkin se milloin twiittejä lähetettiin, koska kyse oli suorasta lähetyksestä sekä se ketkä olivat aktiivisimpia keskustelijoita. Slow TV:n luonteesta johtuen (pitkä yön yli kestävä lähetys) erityisen kiinnostavaa ajallisesti oli se miten twiitit jakautuivat tunneittain yön aikana.

Onnistuin tallentamaan twiittejä ajalta 18.6. - 26.6. yhteensä hieman vajaa 1600 kpl:tta. Tässä luvussa olivat mukana #juhannusjuna ja #midsummertrain hashtagin sisältäneet twiitit. Yhteensä hashtagejä käytti 318 käyttäjää ja heitä oli kaikilta kielialueilta, joilla lähetys näkyi (FR: 2, EN: 150, NO: 5, DE: 5, SV: 18, DE: 3, IN: 2, FI: 1388). Huomioitavaa on, että kielialue määritellään siitä mitä kieltä käyttäjä käyttää palvelussa eli suuri osa EN-kielikoodin omaavista twiittaajista on varmasti suomalaisia.

Aktiivisin twiittausjakso koettiin juhannusjunan lähdön aikaan kun 19:00-20:00 välisenä aikana Twitter:iin lähetettiin yhteensä 401 juhannusjuna-aiheista twiittiä. Iltaa ja yötä myöden twiittien määrät tippuivat ensin 268:een tunnissa ja sitten 171:een tunnissa. Kuitenkin vielä aamulla klo 01:00-02:00 välillä hashtagit keräsivät 86 twiittiä, joka on keskimäärin enemmän kuin yksi twiitti minuutissa. Koko data on saatavilla tästä .csv-muodossa (avattavissa Excelissä).

Aktiivisimmaksi twiittaajaksi ylsi @MikaPirhonen 173:lla juhannusjuna-aiheisella twiitillään. Kakkoseksi kipusi @digikim ennen Juhannusjunan virallista Twitter-tiliä @Juhannusjuna. Lähetettyjen twiittien keskiarvo käyttäjää kohden oli 4.9 (1573/318). Twiittimäärien mediaani oli 1 eli suurin osa käyttäjistä lähetti vain yhden #juhannusjuna tai #midsummertrain -aiheisen twiitin. Koko data on saatavilla tästä .csv-muodossa.

Lisäys 27.6.2012 klo 11:30:

Twitterissä heräsi kysymys siitä ovatko mukana myös retwiitit. Tutkittuani dataa selvitin, että kyllä ovat ja eniten retwiittejä eli 12 sai @Iirorantala:n twiitti:
@IiroRantala: Spread this link of #juhannusjuna #midsummertrain. The show is available world wide live from a night train in Finland. Starts in one hour.
Kakkoseksi twiittien suosituimmuudessa retwiittien osalta pääsi @TuomasEnbuske, jonka twiittiä:
@TuomasEnbuske: Don't tell mamassa on kuulemma tänä iltana todellinen #juhannusjuna.
jaettiin edelleen 6 kertaa. Suurin osa twiiteistä aiheilla #juhannusjuna ja #midsummertrain ei saanut yhtään retwiittiä, koska vain 82 twiittiä 1573:sta jaettiin eteenpäin kerran tai useammin ja suurin osa näistäkin twiitattiin uudelleen vain kertaalleen.

Ps. jos sinä olet kiinnostunut oman hashtagisi takana käytävästä keskustelusta, mutta tämän toteuttaminen tuntuu ylitsepääsemättömältä ota yhteyttä esimerkiksi Twitterissä niin katsotaan mitä voimme tehdä. Kannattaa kuitenkin ottaa huomioon, että Twitteristä on mahdollista hakea vain n. 1500 viimeisintä twiittiä ja maksimissaaan 6-8 päivän takaa.

Tässä viestissä jaetut datasetit ovat lisensoitu Nimeä-Tarttuva (CC BY-SA) ja data on tarkoituksenmukaisesti jätetty visualisoimatta, jotta datan käyttöönottaminen olisi siten mielekkäämpää kun pääsee tekemään tyhjältä pöydältä.

maanantai 25. kesäkuuta 2012

#SuomiTop100-ilmiö

Keskiviikkona 20.6. suomalaisessa Twitterissä alkoi kuohua (Kuva 1). Niku Hooli ja Antti Hirvonen olivat Foreign Policy -lehden esimerkin innoittamina ryhtyneet joukkoistamalla keräämään listaa 100:sta suomalaisesta tai Suomessa vaikuttavista Twitter-aktiivista.

@suomitrendit on suosittuja suomalaisia hashtageja twiittaava Twitter-tili. (Kuva 1) 

Nopeasti, aiheesta hashtagilla #SuomiTop100 keskustelleiden keskuudessa, kasvoi tarve ilmentää ilmiötä visualisoinnin keinoin ja keskiviikkoiltapäivällä sainkin useampia vihjailuja (1, 2, 3) asiaa koskien. Sinällään ongelma oli, etten ennen ollut kerännyt Twitteristä dataa hashtageihin perustuen, joten jouduin hieman improvisoimaan lähtiessäni toteuttamaan tarvetta täyttävää visualisointia. Aikaisemmat Twitter-pohjaiset visualisointini ovat perustuneet yksittäisten Twitter-tilien seuraajien ja seurattavien visualisointiin. Sain kuitenkin nopeasti aikaan ensimmäisen version #SuomiTop100-hashtagin maininneiden käyttäjien keskinäisestä verkostosta (Kuva 2).

Verkostossa on 66 solmua (keskustelijaa) ja 744 yhteyttä (seuraa tai on seurattavana). (Kuva 2)

Verkostossa ovat siis mukana #SuomiTop100-hashtagin Twitterissä maininneet henkilöt, eivät listalla olleet tai sinne päätyneet, joskin toki osa asiasta keskustelijoista listalle myös päätyi. Toteutus oli kuitenkin siinä määrin nopeasti kasattu, että en ehtinyt huomioimaan mm., että versioon tulivat mukaan vain hashtagin 100 viimeisintä twiittiä eikä data siten ollut täydellistä.

Mitä tästä kuvassa 2 näkyvästä verkostosta pystyttiin kuitenkin jo näkemään oli, että aiheesta keskustelleiden verkosto on hyvin tiheä. Näytti siis siltä, että asiasta keskusteltiin ns. kaveriporukassa toisensa tuntevien ihmisten kesken. Sain kuitenkin siinä määrin palautetta ihmisiltä, jotka olivat asian maininneet, mutta eivät verkostosta löytyneet, että keskiviikkoiltana toteutin twiittien hakuskriptistä parannetun version.

Torstaina 21.6. aamulla julkaisin päivitetyn toteutuksen #SuomiTop100-hashtagin maininneiden verkostosta. Tällä kertaa luulen saaneeni mukaan todella kaikki asiasta keskustelleet ja heidän väliset yhteydet. Ainakin datan määrä kasvoi merkittävästi ja näytti oikeammalta twiittien määrään nähden (>500). Verkoston rakenteeseen tämä päivitys ei kuitenkaan juuri tuonut muutosta. Edelleen näytti siltä, että asiasta kiinnostuneet eli asiasta keskustelleet ovat myös kiinnostuneet keskenään toisistaan (Kuva 3).

Verkostossa on 284 solmua (keskustelijaa) ja 10556 yhteyttä (seuraa tai on seurattavana).  (Kuva 3)

Kuvissa 2 ja 3 näkyvien verkostojen rakenteen ja värityksen merkitystä on kuvattu mm. aikaisemmassa viestissäni: "Twitter-verkostoanalyysia Gephi:llä". Lyhyesti kuvattuna ihmiset asettuvat verkostossa lähelle niitä ihmisiä, jotka seuraavat toisiaan ja värit on asetettu verkostosta matemaattisesti tunnistettujen ryhmittymien mukaan. Solmun eli henkilöä kuvaavan pallon koko määräytyy sen mukaan miten keskeinen hän on verkoston kannalta. Latasin myöhemmin torstaina myös interaktiivisen version kuvassa 3 nähtävästä verkostosta ja annoin hakemani datan verkostomuodossa (.gexf) jatkokäsiteltäviksi siitä kiinnostuneille.

Torstaina iltapäivällä lopullinen lista julkistettiin YLE Uutisten toimesta. Laskin, että listalle päätyneistä ihmisistä 13% (37/284) osallistui aiheeseen liittyvään keskusteluun. Aiheesta keskustelleet löytyvät oheisesta .csv-tiedostosta, joka on mahdollista avata esimerkiksi Excelissä. Keskustelleet, jotka päätyivät myös listalle löytyvät tästä Google Fusion Tables -taulukosta.

Myös muut olivat aktivoituneet asian tiimoilta ja tehneet analyysia ilmiöstä. Mm. MikroPC:stä tuttu Ossi Jääskeläinen oli rakentanut PHP-ohjelman, jolla hän oli hakenut listalle päätyneiden numeeriset metatiedot (twiittejä, seuraajia, seurattavia, listojen jäsenyyksiä, omia listoja). Ossi tarjosi datan .csv-muodossa vapaasti käytettäväksi ja tästä innoittuneena aktivoiduin myös tämän osalta tekemään hieman visualisointityötä.

Toteutin D3.js kirjaston tarjoamaan Parallers Coordinates esimerkkiin perustuen visualisoinnin, jonka avulla on mahdollista tutkia korreloivatko #SuomiTop100-listalla olevien numeeriset ominaisuudet, jollain tavalla. Onko esimerkiksi niin, että twiittauksien määrä on suoraan verrannollinen käyttäjän seuraajien määrään tai ovatko käyttäjät, jotka itse käyttävät listoja todennäköisimpiä myös itse päätymään niille. (Kuva 4)

Suurin hajonta lopullisen #SuomiTop100 listan jäsenissä syntyy numeerisesti twiittien määrässä. Avaa visualisointi. (Kuva 4)

Kuten kuvasta 4 nähdään muutamat käyttäjät sokaistavat visualisoinnin melko tehokkaasti. Esimerkiksi Heikki Kovalaisen yli 150 000 seuraajaa on Suomen tasolla siinä määrin poikkeuksellinen määrä, että muut vain n. 1000 seuraajaa omaavat eivät erottaudu akselilla. Olisi ollut mahdollista toteuttaa hieman monipuolisemmat ominaisuudet omaava toteutus visualisoinnista, mutta päädyin helpompaan ratkaisuun ja poistin datasta manuaalisesti nämä muumat käyttäjät (@Haloefekti, 94 502 twiittiä @H_Kovalainen, 154 445 seuraajaa; @ptarkkonen, 108 793 seurattavaa), jotka omaavat suurimmat ääriarvot. Tällä ei kuitenkaan merkittävää vaikutusta ollut vaan data ilmentyi edelleen visualisoinnissa samankaltaisesti eikä kovinkaan merkittäviä korrelaatioita numeeristen ominaisuuksen välillä löytynyt. Listalle päätyneet suomalaiset Twitter-vaikuttajat ovat numeroiden valossa hyvin samankaltaisia. (Kuva 5)

Vaikka listalta poistetaan äärimmäisimmät käyttäjät ei data esiinny juurikaan erilaisempana. Avaa visualisointi. (Kuva 5) 

Toteuttamani verkostovisualisoinnit #SuomiTop100-hashtagin maininneista keskustelijoista aiheutti myös muutamia epäselvyyksiä. Visualisoinnin luultiin olevan tehty lopulliselle listalle päätyneiden keskinäisestä verkostosta (1, 2, 3). Tätä väärinkäsitystä jouduin oikomaan muutamaankin otteeseen ja lisätäkseni hämmennystä toteutin nyt jälkikäteen myös verkoston tästä listalle päätyneiden keskinäisestä verkostosta (Kuva 6). Verkosto löytyy myös interaktiivisena versiona ja data on saatavilla .gexf-muodossa.

Listalle päätyneet ovat keskenään tiiviisti verkostoituneita Twitterissä. (Kuva 6)

Kuten kuvassa 3 nähtävä #SuomiTop100-aiheesta keskustelijoiden verkosto on kuvassa 6 nähtävä lopulliselle listalle päätyneiden verkosto hyvin tiivis. Ainoastaan, pääosin urheilijoista ja urheiluvaikuttajista koostuva, joukko vasemmalla erottuu selkeästi omaksi saarekkeekseen. Yhteensä kuvassa 6 nähtävässä verkostossa on 100 solmua ja 3296 yhteyttä. Verkoston keskeisin henkilö on Tuija Aalto, joka myös seuraa eniten verkostossa olevia henkilöitä (96). Tuija myös kiinnostaa, koska 99:stä mahdollisesta häntä seuraa 64 verkoston jäsentä. Muut verkoston keskeisimmät henkilöt ovat järjestyksessä Mikael Jungner, Jyrki Kasvi ja Mikko Hyppönen.

Tässä oma näkökulmani #SuomiTop100-ilmiöön, joka vavisutti mielipiteitä näin juhannuksen alla puolesta ja vastaan.

Tässä viestissä jaetut datasetit ovat lisensoitu Nimeä-Tarttuva (CC BY-SA).