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ä.

Ei kommentteja:

Lähetä kommentti