Top twittrare

Här är svenskfinlands bästa twittrare, meddelade Yle X3M idag. Fint! För jämförelsens skull bedrev jag nu lite hembakad text mining också med tweeps av de här 80 personer. Urvalets storlek är detsamma som förr: 200 per person.

AFAIK så finns det ingen officiell Twitter list. Därför kunde jag inte direkt använda den gamla koden utan måste först plocka ut namn ur den ovannämda websidan.

Klustren ser en smula olika ut här än i den finska. Med mina helt amatörmässiga 3D text mining glasögon kan jag urskilja en aning mera variation i ordförråd. Men, det kan helt enkelt bero på hur det svenska språket är uppbyggt (och hur R och dess tm paket manipulerar text), och inte säga någonting alls om våra inhemska, svenskspråkiga Twitter-vänner. Artiga och vänliga tweeps här också.

Två personer tycks vara särskilt flitigt refererade, vilket tyder också på aktivt personligt twittrande: Peppe Öhman (peppepeppepeppe) och Sandra Eriksson (sandraeeriksson).

Keskiraskas louhinta

Eiliseen verrattuna levyn nurkalla on nyt melkein 50 kertaa isompi otos, reilut 20000 tweettiä. Jokaiselta listan jäseneltä 200, hänen omalta aikajanaltaan. GET statuses/user_timeline -API-määrittely lupaa maksimiksi 3200 per nenä, mutta silloin mukana voivat olla (paluuformaatista riippuen) myös ns. natiivit retweettaukset. Annoin ne tulla mukaan.

En viitsinyt koputella tweetkattoa, vielä. Pöytäkoneella oli jo tekemistä tämänkin tekstikorpuksen käsittelyn kanssa. Erityisen hidas oli stopwordien poisto-operaatio.

Käyttäjänimistä on jäljellä enää listan perustaja Niku Hooli, mikä ei yllätä; lista on uusi juttu, ja siitä ja sen perustajasta on tietysti (re)tweetattu paljon. Sitä en sen sijaan ymmärrä, miksi the keikkuu edelleen mukana ja huipulla, vaikka lisäsin sen stopword-listaan. Täytyy joskus kaivella lisää.

Tuloksesta voi varovaisesti piirtää kuvaa yhteisöstä, jonka aktiivisimmat sanankäyttäjät ovat kohteliaita, kilttejä ja ajan hermolla. Sosiaalisen median käytäntöjen ammattilaisia.

Koodinpätkästä puuttuu louhintaosuus. Se on sama kuin ennenkin.

Tekstinlouhintaa SuomiTop100-listalla

Yle uutisoi juhannuksen alla: Tutustu heihin – 100 kiinnostavaa suomalaista Twitterissä. Amatöörilouhijalle tällainen kotimainen Twitter-ryhmä tarjoaa mukavan tutkimuskohteen. Mitä sanoja top-tweettajat käyttävät? Minkähän takia? Missä yhteydessä?

Blogista Heuristic Andrew löytyi selkeä ohje juuri tähän, tekstin louhintaan Twitteristä R:n avulla.

Hankalinta on saada tarpeeksi louhittavaa. Kohtuullisella hikoilulla sain koottua listalta reilut 500 tweettiä. En juuri tunne Twitterin API:a, joten saatoin hyvinkin olla väärän lähteen äärellä. Olisiko statuspäivitykset pitänyt sittenkin kerätä listan sijaan jäsenten omalta aikajanalta? Harkitsin tätä. Idea kuivahti alkuunsa siihen, että en pystynyt poimimaan rajapinnan kautta listan kaikkia jäseniä vaan vain 20. Joistakin foorumikirjoituksista jäi itämään epäilys, että tämä olisi API:n rajoitus. Luultavammin rajat ovat kuitenkin näiden korvien välissä. No, hyvä että materiaalia on edes jonkin verran.

R-koodin seasta löytyy kommentteja työn etenemisestä ja havaintoja tuloksista. Silmiinpistävää on sanaston heterogeenisuus. Esiin nousevat oikeastaan vain Twitter-kommunikoinnin säätimet, sanat joilla osoitetaan mistä oma teksti on peräisin. Aineisto on lisäksi monikielistä, joka vähentää sanojen toistumistiheyttä näin pienessä otoksessa.

Kuten Heuristic Andrew, minäkin tein ryhmittelyanalyysin (cluster). Sen kuvaus on puumainen dendrogrammi. Mitä ylempänä oksa on, sitä enemmän on sen lehvästössä olevien sanojen esiintymisiä. Lähekkäin ja saman punaisen kehyksen sisällä olevat oksat kertovat siitä, että niiden sanoilla on tiettyä yhteyttä toisiinsa. Kehyksiä on tässä seitsemän, kokeilin pienempääkin. Oikeaan laitaan syntyi nyt hieman turhankin iso kaatoluokka.

Dendrogrammin lukeminen on työlästä, koska niskaa pitää kääntää 90 astetta vasempaan. Epäilemättä löytyy tapa, jolla kääntyy graafi, ei pää.

Tämän harjoituksen pohjalta ei pysty sanomaan juuri mitään siitä, mitä, miten ja miksi Suomi twiittaa. Joitakin arvailuja voi esittää. Saattaa olla, että sanonnat (quote) ja lainaukset (via) ovat melko yleisiä. Mahdollisesti jotkut listan jäsenet ovat suositumpia viittauksen kohteita kuin muut. Jälkimmäinen päätelmä on itse asiassa tavallaan louhinnan sivutuote; samalla kun kaikki välimerkit siivottiin pois, lähti myös käyttäjänimen edestä @-merkki, jolloin henkilöä kuvaavasta nimestä tuli ns. tavallinen sana.

Excelistä R:n kautta Google Motion Chart -palloiksi

Yleisten kirjastojen monipuolisia tilastolukuja vuodesta 1999 lähtien löytyy avoimena datana mm. Helsinki Region Infoshare -sivuston kautta. Tilastoja julkaistaan sekä Excel-tiedostoina että XML-muodossa. Miten sujuu R:ltä Excel? Sitä piti testata.

Kirjoitin auki huomioita kommenteiksi itse R-koodiin.

Datan lukeminen Excel-muodosta oli yllättävän vaivatonta, kiitos R:n kehittyneiden kirjastojen. Kirjastotilastotkin ovat sisällöltään melko hitaasti muuttuvaa, mikä helpotti. Ainoa varsinainen isompi pulma tuli eteen Excel-funktioiden muodossa. Jokaisen taulukon lopussa on summafunktio. Sekään ei olisi ongelma, ellei viimeisen rivin numero vaihtelisi taulukosta toiseen. Kuntia yhdistetään, taulukot elävät. Eikä tämäkään olisi kompastuskivi, elleivät taitoni XLConnect-kirjaston käyttäjänä olisi niin heppoiset. En nähtävästi sittenkään osannut kertoa sille:”Jos kohtaat funktion, kulje ohi ja sano, ettet nähnyt mitään.”

Kehittämisehdotus tilastojen koostajalle: voisiko summarivi olla taulukon alussa? Esimerkiksi aina rivillä 1. Se ei ehkä näyttäisi yhtä hyvältä tai loogiselta kuin taulukon lopussa, mutta selkeyttäisi datan jatkokäsittelyä. Itse data otsikkoineen voisi alkaa aina samalta riviltä, vaikka viidenneltä. Lisäksi: vuosiluku omassa sarakkeessaan olisi mukava bonus! Tosin, ymmärrän hyvin, että jos sarakkeita aletaan lisäämään, se saattaa muuttaa tilastojen keräysprosessia. Vuosiluku kun nyt kuitenkin käy ilmi sekä tiedoston nimestä että taulukon alusta.

Google Motion Chart kirjastotilastoista olisi vieläkin mielenkiintoisempi, jos siinä olisi mukana kirjaston lisäksi muitakin elämänmuotoja. Hieno esimerkki löytyy Tiedonlouhintaa-blogista: viimeisimpien vaalien tuloksia voi tarkastella vaikkapa siltä kantilta, mikä on kunnan työttömyysaste.

Turku vs Helsinki – Vaski vs Helmet

Pääkaupunkiseudun Helmet-kirjastoissa kaunokirjallisuus on irroitettu muusta luokituksesta. Siksi tällä shakkilaudalla sarake 8x on valkoinen aina luokkaan 86 asti. Siitä alkaa kirjallisuustiede.

Helsingin ja Turun ympäristöjen välillä on havaitsevinaan pientä eroa; mm. etiikkaa ja estetiikkaa (17-17.5), uskontoa (2x), yleistä yhteiskuntatiedettä (30) ja tilastotiedettä (31) on enemmän Helsingissä kuin Turussa. Erot voivat tosin syntyä aineistomäärien absoluuttisista määristä. Suhteellisia osuuksia kuvio ei kerro.

Helmet-kirjastojen kaunokirjallisuuden kielikohtaiset pääluokat eivät kerro kaikkea. Esimerkiksi espanjan alta löytyy myös portugalinkielinen kirjallisuus (7.8). Mikähän on syynä siihen, että kokoelmissa on italiaksi ja espanjaksi vähemmän näytelmiä (x.3) kuin muissa ns. isoissa kielissä?

Vaski-datan two-by-two -dentograafista erottaa jo jotenkuten, miten tietokirjallisuus on jakautunut.

Vaski-kirjastojen luokat shakkilaudalla

Uusimmassa The Code4Lib Journal -lehdessä oli artikkeli dentograafeista, ja se innosti testaamaan samaa johonkin kotimaiseen aineistoon. Varsinkin, kun R-opiskelu on sopivassa (alku)vaiheessa, jolloin kaikki naulat näyttävät siltä, että niitä pitää kumauttaa nimenomaan R-merkkisellä vasaralla.

Turun seudun Vaski-kirjastojen bibliografinen data on ollut avoimesti saatavilla viime vuoden syyskuusta lähtien. Samasta aineistosta on jo ehditty tehdä mielenkiintoisia verkostograafeja.

Lähdin liikkeelle Vasken MARCXML-muotoisista tiedostoista, ja hyvin suoraviivaisesti. Poimin niistä kaikista samat kentät XSLT-muunnoksella (välittämättä siitä oliko niitä kyseisessä tietueessa tai ei), ja muunsin näin saadun XML:n edelleen yhdeksi isoksi CSV-tiedostoksi. Kirjastoluokaksi valitsin useasta vaihtoehdosta sen, mitä Turku käyttää.

Lopputuloksessa on paljon NA-arvoisia tyhjiä kenttiä ja kokonaisia rivejä. Ne olisi luultavasti järkevä siivota pois jo ennen seuraavaa vaihetta, mutta koska otin opiskelun kannalta, poistin ne vasta R-ohjelmassa.

Tämä sakkilauta-dentograafi näyttää vain luokituksen kaksi ylintä tasoa. X-akselilla on kymmenluku, y-akselilla ykkösluku. Risteyskohdan ruudun väri kertoo, paljonko tätä aineistoa on. Mitä tummempi, sitä enemmän. Kirkkaimpana tähtenä taivaalla loistaa kertomakirjallisuus, mutta paljon himmeämpi ei ole musiikki (ks. verkko-YKL -pääluokat).

Tietokirjallisuuden luokitus on hienosyisempää eivätkä erot siksi juuri näy näin yleisellä tasolla. Siihen tarvitaan William “dentograafi” Dentonin esimerkin mukaisesti two-by-two -shakkilauta. Jotakin voi silti päätellä jo tästäkin; taustasta erottuvat mm. oikeustiede (33), lääketiede (59) ja liiketaloustiede (69). Liekö seudun yliopistojen vaikutusta?

Tweettien uusiokäyttöä

Twitter on uutisvälineeni nro 1, lähes. Niinpä suosikkejakin tulee tallennettua usein. Säilön linkkejä kiinnostaviin juttuihin. Ne tuppaavat kuitenkin unohtumaan, koska eivät ole mukana uutissyötteissä, joita taas käyn läpi GReaderilla. Yhteys puuttuu. Twitterin OAuth-autentikointi on pelottanut sen verran, etten ole tarttunut toimeen.

Tällä viikolla satuin katsomaan tallenteen YUIConf 2011 -konferenssista. Siinä YQL engineer Paul Donnelly demoaa, miten YQL-konsolinäkymässä saa rakennettua oikeanlaisen REST-kyselyn Twitteriin siten, että ohjelmointirajapintaan pääsee käsiksi. Pelkällä Yahoo Pipesilla tämä ei onnistu, koska se ei tue OAuthia.

YQL-konsolilla homma on helppo, kunhan vaan on ensin hankkinut tarvittavat avaimet ja tokenit. Ne saa Twitteriltä, rekisteröit vain jonkin sovelluksen.

Videolla YQL-osuus alkaa n. 20 minuutin paikkeilla.

Hae esiin Data tables -osiosta twitter.favorites, klikkaa konsolin response-laatikon oikeaan ylänurkkaan ilmestyvää painiketta – ja saat eteesi lomakkeen, johon avaimet ja tokenit kopioidaan. Itselläni meni tuon painikkeen äkkäämiseen tovi; videosta ei saa ihan selvää, mihin kohtaan Paul sormellaan osoittaa.

Kun testi menee läpi, konsolin alalaidasta voi kopsata valmiin kyselyn. Se Yahoo Pipesin Fetch data -moduuliin, ja siitä sitten RSS-syötteen peruskentät kuntoon ja siirto GReaderiin.

HelMet API ja sivutus

Harjoittelu jatkuu. Tämä versio näyttää, miten useampisivuisen hakutuloksen saa listattua yhteen ja samaan tauluun. Mitään kovin massiivisia hakuja ei näin kannata tehdä. Varmempi ja miksei käyttäjäystävällisempikin tapa toteuttaa sama asia on antaa sivukohtaiset tabit, jota klikkaamalla kyseinen sivu haetaan. Samaan tapaan siis kuin mitä API:n oma Search-sivu tarjoaa.

Demohaku on tarkoituksella niin nirso, että se olettaa kirjailijan nimen esiintyvän sellaisenaan author-kentässä. Jos näin ei ole, listalta tipahtaa. Näin kävi esimerkiksi teokselle Carnets : mai 1935 – février 1942, jonka author-kentän lopussa on tyhjä merkki. Tosielämässä ylimääräiset blankot otetaan tietysti huomioon.

Helatorstain HelMet-API

Tulipa mukavaan saumaan tuo HelMet API -julkaisu. Sain uraauurtavaa, kotimaista materiaalia jQueryn ja JSON(P):n alkeiden opiskelulle. Joten, pientä juhlameininkiä, onhan helatorstai ja kaikki: omistan tämän ensimmäisen tekijähakuyritelmäni pitkän linjan internet-aktiiville, Kari A. Hintikalle! Toivottavasti kirjoituskäsi on pian taas kunnossa, ja tekeillä oleva Vertaisaika etenee mallikkaasti. Terveisiä myös muille kirjoittajille: Tuija-kaimalle ja Annelle. Pääsette demohenkilöiksi sitten kun nimekkeitä on enemmän 😉