2014-01-12

Mapping red-listed rainforest tree species

Rainforest Foundation Norway keeps a red list of tree species. Where do these trees grow?

One of the R packages developed by rOpenSci is rgbif. It's a handy wrapper to the Global Biodiversity Information Facility API. With geolocation data returned by the query, you can plot points on the world map.

Let's start with the list. Instead of using R all the way through, I scraped the HTML table rows with the Google Chrome extension Scraper, and saved data as a spreadsheet on Google Drive. This is the way Scraper works.

As I mentioned in my job blog the other day, one of the many good tutorials out there on using Scraper, is by Jens Finnäs.

Data needs some pruning in this exercise. What you need for the GBIF query, is basically just the Latin names. To make things somewhat simpler, I'll take only the first one mentioned along each species; many have several.

Here is the R code for pruning, and for querying GBIF. The script saves the return data by the tree status, and in two file sets: R data, and GeoJSON. The first ones are used as input for a Shiny web application, where they will be plotted both as an interactive gvisGeoChart by googleVis, and as a static map with the (only slightly modified) gbifmap function from rgbif. The GeoJSON files will be rendered straight from a GitHub Gist. All of this just to demonstrate (foremost to myself!) that there are many ways to plot and serve maps, and that they all have different pros and cons depending on the amount and type of data. The challenge here is that there will be multiple data points on the same geolocation, and the number of different species is rather big too.

Next, the web application. Here is the R code for it, and this is the app itself. The maps served by GitHub: Critically_Endangered, Endangered, Vulnerable, Near_Threatened and Other.

The status Other is named by me. It refers to those rows in the original Foundation table, where no exact two-character status was given.

On the googleVis map, both the size and color of the points reflect the amount of occurrences on that particular location. This is of course repetitive, but I haven't yet find a better solution. Optimally, the color would tell something else, maybe the species. Yet, the tooltip has this information already, so there you are. Note that the country name in the tooltip comes from a yet another scraped file, originating to Wikipedia. Initially, I had in mind fetching the name by querying the acronym against the DBpedia Linked Data, but reverted to scraping. The magnifying glass is a nifty tool of course, but IMHO doesn't add much on the informative side.

The static map gives a quick overview of all species and their location. This works OK when the number is relatively small. However, the more variety there is, the harder it is to discern between different colors. Transparency (alpha) does the best it can to show that indeed there are multiple points on the same spot. With my expanded color palette however, the colors became so elusively light that I was forced to reduce transparency. Although you can customize the gbifmap function, with my limited skills I didn't succeed in passing my own alpha value, so I modified the function accordingly. Note to self: find out the best practise of how this kind of modification should be done.

The GeoJSON maps were a positive surprise. Out of the Gist box, the JavaScript code produces nicely detailed maps, and in hot spots points are clustered. Marker symbols and colors could of course be different across species. Here, I simply use one red park2 marker in all.

2013-03-25

Some Europeana AV resources related to Finnish municipalities as RDF triples

In the previous post, I told how I learned to stop being afraid of Europeana and love SPARQL. As a proof, I gathered statistics on how many video resources there are from different Finnish municipalities. Proportionally, taking into account of the number of inhabitants, the #1 video corner in Finland is Saarijärvi. My Finnish readers, please note the EDIT section towards the end of that posting. For some strange reason I first claimed it to be Helsinki. Sorry about that, Saarijärvi.

BTW, did you know that there is a connection between Saarijärvi and Pamela Anderson? I certainly did not.

What is it that is there?

My so-called research problem with Europeana, nicely summarized by Mikko Rinne, was that in most of the cases, the semantic information about the shooting location of the videos was missing. Therefore, I had to query the name of the municipality around several elements like description, title and subject.

The main contributor of Finnish videos in Europeana is KAVA, National Audiovisual Archive of Finland, in cooperation with European Film Gateway. The videos are digitized newsreels from 1943 to 1964, shown at the Elonet site of KAVA. While perusing the site, I noticed that KAVA is currently growdsourcing metadata about Finnish fiction films. This is a wise move. There is only so much resources to put into this kind of work by KAVA itself. Who knows, maybe my exercise is of some help at some stage, although there are strong caveats e.g. due to the clumsy search logic that returns false positives here and there.

There do exists some spatial data too, enriched by Europeana itself I understand. The most interesting metadata element for me was edm:hasMet with the value of GeoNameID of the municipality. The same element is also used for geolocation coordinates, and Europeana offers a neat interactive map interface built upon them.

How can I find out which GeoNameID belongs to which municipality? Luckily, DBpedia has done the job, see e.g. the resource of Saarijärvi and the property list of owl:sameAs.

Some 8% of municipalities lack the ID, but that's good enough for my purposes. With the list of municipality names, I gathered the IDs by querying the SPARQL endpoint of DBpedia. The names themselves I had downloaded previously from the National Land Survey of Finland via the indispensable R package soRvi. With the IDs at hand, I turned to Europeana again. This time, I was interested in how much geonamed items there were in different categories.

GeoNameID

Europeana resources are divided in four media types: image, sound, text and video. Here I visualize the raw numbers in few separate graphs, roughly based on the number of items. Otherwise it would be difficult to see any nuances between municipalities. The R code of stacked bars is adapted from the Louhos Datavaalit examples. Note that what I did not succeed in doing yet was to sort the bars based on the size of item counts; maybe some misunderstanding from my part on how the factor levels are working.

The first thing you notice is that text items outnumber all others. As far as I know, they consist mainly of newspaper articles digitized by the National Library of Finland. This is no news (pun not intended). Of all newspapers published in Finland 1771-1900, the Library has already digitized the most.

In the third graph, one municipality stands out: Rauma. Quite a lot of images, even more texts. Interesting. I was born in rural Laitila, located some 30 km SE from Rauma, so of course I was keen on knowing what kind of material Europeana has got in such quantities from such a familiar spot. FYI, Rauma was given town rights in 1442. This small coastal municipality is known of its wooden Old Town, a Unesco heritage site.

Rauma turned out to be two-headed. It was not just my childhood neighbour, Finnish Rauma, but also Norwegian Rauma, established in 1964 and named after Rauma River. The reason for false hits was that the GeoNameID of both places has been saved in all Rauma instances. By mistake, I guess. Anyway, Finland brings texts and Norway images - which is probably just right, Norway is so much more gorgeous.

Under CONSTRUCTion (couldn't resist)

After all Europeana SPARQLing, I decided to try the idea that Mikko had thrown in his blog comment: why not offer links to these resources? Yes, there are false hits - be aware of e.g. Ii, Salo, Rautavaara, Vaala and Kolari for reasons that relate to Finnish language and my REGEX FILTER statements - but the majority should be decent.

Although I've been practising SPARQL queries for some time now, I am a complete newbie when it comes to linked data modeling, RDF and all that jazz. BTW the SPARQL package, contributed by a friend of mine, Tomi Kauppinen, et al. has worked like a charm. So, I ventured along with the help (again) of Bob DuCharme's book and blog. It was actually quite exciting to be able to create new RDF triples with the SPARQL CONSTRUCT statement! Then, when I found rrdf which, out of the box, offers functions to store, combine and save triples, I was ready to try. While at it, I decided to gather data about all AV resources, not just video.

Here they are now, my first RDF triples from my very first in-memory triple store, containing data about Europeana Finnish resources featuring image, sound and video media types. The triples are serialized as RDF/XML and Turtle/N3. RDF/XML was done with the rrdf save.rdf function, and conversion to Turtle/N3 was also easy with the Apache Jena command-line tool rdfcat.

Rauma I left un-tripled - although I could have added an IF function to trap it, and then FILTER out all images and texts.

I would be more than happy if you'd like to comment on anything related to this exercise, especially on the CONSTRUCT part!

The R codes of querying DBpedia and drawing bar charts, and CONSTRUCTing RDF triples.

2013-03-14

Videoita Suomen kunnista Europeanassa

Edellisessä postauksessa tein ensimmäisiä hakuja Europeanan SPARQL-palveluun. Kiitos kuuluu Bob DuCharmelle, jonka selkeillä ohjeilla pääsi alkuun. Sittemmin olen tutkinut Europeanaa lisää. Vallan mainiota, että tällainen yhteiseurooppalainen ponnistus on tehty. Rahaa on käytetty hullumminkin. Antoine Isaac ja Bernhard Haslhofer kirjoittavat artikkelissaan Europeana Linked Open Data – data.europeana.eu (PDF):
Europeana is a single access point to millions of books, paintings, films, museum objects and archival records that have been digitized throughout Europe. The data.europeana.eu Linked Open Data pilot dataset contains open metadata on approximately 2.4 million texts, images, videos and sounds gathered by Europeana. All metadata are released under Creative Commons CC0 and therefore dedicated to the public domain. The metadata follow the Europeana Data Model and clients can access data either by dereferencing URIs, downloading data dumps, orexecuting SPARQL queries against the dataset.
Pilotti tarjoaa runsaasti materiaalia mm. SPARQL-kyselyjen treenaamiseen, ei vähiten siksi että metadatamalli on aika mutkikas. Pakko sanoa, että ilman Bobin virtuaalista kannustusta olisin tuskin tohtinut edes yrittää. Kehittäjät tunnustavat tilanteen konferenssiesitelmässä data.europeana.eu, The Europeana Linked Open Data Pilot (Dublin Core and Metadata Applications 2011, The Hague):
Beyond adding extra complexity to the RDF graphs published, the proxy pattern, which was introduced because of the lack of support for named graphs in RDF, is indeed quite a counter-intuitive necessary evil for linked data practitioners — including the authors of this paper [...] We were tempted to make the work of linked data consumers easier, at least by copying the statements attached to the provider and Europeana proxies onto the “main” resource for the provided item, so as to allow direct access to these statements—i.e., not mediated through proxies. We decided against it, trying to avoid such data duplication. Feedback from data consumers may yet cause us to re-consider this decision. On the longer term, also, we hope that W3C will soon standardize “named graphs” for RDF. This mechanism would allow EDM to meet the requirements for tracking item data provenance without using proxies. (s. 100)

Named graphs -käsitteestä tarkemmin ks. Wikipedia. Kotimainen esimerkki nimettyjen graafien toteutuksesta on Aalto-yliopiston Linked Open Aalto.

Finlandia-katsaus 263

Otetaan esimerkkivideo, Kansallisen Audiovisuaalisen Arkiston (KAVA) Finlandia-katsaus 263 vuodelta 1955. Europeanan RDF-tietovarastossa siitä on tallennettu metatietoa kahteen ore:Proxy -solmuun. Toisessa on datan toimittajan (provider) eli KAVAn antamaa tietoa, toisessa Europeanan. Europeanan solmusta löytyvät mm. kaikki sen tekemät lisäykset (enrichments) alkuperäiseen metatietoon, kuten linkitykset KAVAn kertomasta dcterms:created -vuosiluvusta Semium-sanastolla ilmaistuun aikaan ja dc:spatial -paikannimestä GeoNames-tietokantaan. Datan alkuperätiedot (provenance) ovat ore:ResourceMap -solmussa.

Missä itse video sitten on? Sen selvittämiseksi pitää käydä koontisolmussa. Niitäkin on kaksi: datan toimittajan ore:Aggregation ja Europeanan edm:EuropeanaAggregation. Esimerkkivideon ore:Aggregation -tiedoista selviää videon kotisivu edm:isShownAt ja MP4-tiedosto edm:isShownBy. edm:EuropeanaAggregation kertoo videon sivun Europeanan web-portaalissa edm:landingPage.

soRvi

SPARQL-kyselykielen lisäksi olen jo jonkin aikaa opiskellut R-ohjelmointikieltä. Yksi viime vuosien R-tapauksia Suomessa on ollut avoimen datan työkalupakki soRvi. Päätin kokeilla, miten työskentely sillä sujuu. Tavoite pitää olla: Suomen kartta, jossa väri ilmaisee paljonko Europeanassa on kuntiin liittyviä videoita.

Sorvilla saa kätevästi Suomen kuntien nimet ja kuntarajat. Data tulee Maanmittauslaitokselta (MML). Entä Europeana? Miten nimet on siellä esitetty ja missä? Kahlasin portaalin avulla läpi joukon videoita, ja katsoin metatietoelementtejä sivun lähdekoodissa. Esimerkkivideossa Finlandia-katsaus 263 on useampikin pätkä Helsingistä. Helsinki-sana löytyy perusmuodossa kentistä dc:subject ja dc:description, englanninkielisestä käännöksestä. Muutamissa videoissa näkyi dc:spatial ja sen myötä Europeanan lisäämä GeoNameID. Lisäksi nimi voi esiintyä paitsi varsinaisessa otsikossa dc:title myös vaihtoehtoisessa otsikossa dcterms:alternative (en tiedä miksi).

Suomen kuntien nimissä on runsaasti äännevaihtelua ja taipumista. Syntymäkuntani Laitila ei taivu, mutta nykyinen kotikaupunkini Helsinki taipuu. Kun katsoo kuntaluetteloa, silmissä vilisee lahtia, järviä, lampia, koskia ja jokia. Välissä on kuivaakin maata kuten rantoja, saaria, mäkiä ja niemiä. Taipuvia kaikki.

Rajoitin haut nimen perusmuotoon sillä lisäyksellä, että jos säännöllinen lauseke löytää taipumattomien nimien päätteellisiä muotoja (Oulu, Oulun, Oulussa jne.), hyvä niin. Tällä periaatteella on ilmiselvä kääntöpuolensa. Lyhyet kuten Ii ja Salo tulevat tuottamaan vääriä hakutuloksia sekä Suomesta että muista maista. Ii saa omiensa lisäksi myös Iisalmen ja Iitin videopinnat, mikä on ehkä oikein ja kohtuullista kunnalle, jolla on vain kaksi kirjainta. Salo-kirjainyhdistelmää esiintyy paitsi suomessa myös ainakin tanskassa, ranskassa, katalaanissa ja italiassa.

Tein sen minkä voin ja rajasin haun vain niihin videoihin, joiden dc:language on fi. Tämä päätös tiputtaa kuitenkin tuloksesta pois ulkomaista alkuperää olevat videot jotka todella liittyvät Suomeen ja ne, joissa tätä Dublin Core -elementtiä ei ole annettu. Toisaalta suomenruotsalaisten kuntien hakutulos siistiytyy, sillä oletettavasti haaviin ei näin jää Ruotsin samannimisiä kuntia.

Kartalla

Kuntakartan plottaus absoluuttisilla luvuilla kävi helposti soRvi-blogin esimerkkien avulla. Jouduin tosin jättämään Helsingin kokonaan pois, jotta muut kunnat pääsivät esille. Data vaatisi oikeastaan logaritmisen asteikon; Helsinki poikkeaa niin paljon muista.

Ensimmäisessä kartassa kunnat ilman Helsinkiä, toisessa ne kunnat joihin liittyviä videoita löytyi enintään 20.

Alla matkin suoraan sitä, miten Datavaalit havainnollisti ahkerimpia sosiaalisen median käyttäjiä.

Kärkikolmikko ei yllätä: Helsinki, Turku ja Tampere. Ystävämme Ii yltää 25 ensimmäisen joukkoon. Pääkaupunkiseudun nykyisistä isoista kaupungeista Vantaalla näyttäisi olevan videoita vain muutama. Vantaasta tuli kuitenkin kunnan nimi vasta 1970-luvulla, ja uusimmat Europeanan videot ovat nähtävästi 1960-luvulta. Vantaa viittaakin näissä Vantaanjokeen. Hyvinkään lukua selittää mm. Kone Oyj ja Herlinin suku. Tunisian presidentti Bourgiba vieraili 1960-luvun alussa Herlineillä.

Suhteellista

Seuraavaksi suhteutin videoiden määrän kunnan asukaslukuun. Sorvi tarjoaa valmiin funktion, joka hakee asukasluvut suoraan Tilastokeskuksesta. Vuoden 2013 alusta lukien kuntien määrä väheni vajaalla 20:lla kuntaliitosten myötä. Kunnat ja kuntarajat kuvaavat tässä kuitenkin mennyttä aikaa, vuotta 2012. Lisäsin entisille kunnille asukasmäärän käsin, mutta niiden kuntien lukuun en koskenut, joihin nämä kunnat yhdistettiin.

Nyt erottuvat suuruusjärjestyksessä Vaala, Sund, Kolari, Rautavaara ja Helsinki. Moni on kuitenkin väärä positiivinen. Kai Sundström -nimistä henkilöä videoitiin kahteen otteeseen 1940-luvulla. Näin ollen algoritmini antoi kaksi videopistettä pienelle ahvenanmaalaiselle Sundin kunnalle. Kolarin asema johtuu vain ja ainoastaan otsikoista Kolari Helsingissä. Tapio Rautavaara taas oli 50-luvulla julkisuuden henkilö monella alalla, itse Rautavaaran kunnasta ei videoita löydy. Mutta entä Vaala? Tämä reilun 3000 asukkaan kunta Kainuussa on vanhaa asutusaluetta, mutta sen lisäksi myös sukunimikaima elokuvaohjaaja Valentin Vaalalle.

Sivumennen sanoen opin Wikipediasta, että sana vaala liittyy sekin veteen. Englanninkielinen Wikipedia-artikkeli mainitsee, että se on the phase in a river just before rapids.

Helsinki on siis väkilukuunkin suhteutettuna videoykkönen. Seuraavana tulevat oikeat videokunnat Karjalohja ja Vihanti. Suomi-Filmi videouutisoi näistä kunnista politiikan ja talouden näkökulmasta. Pääministeri Edwin Linkomiehen kesäpaikka oli Karjalohjalla, ja Vihantiin rakennettiin 1950-luvun alussa valtion toimesta rautatie. Outokumpu Oyj perusti Vihantiin sinkkirikastekaivoksen. Kaivos toimi vuosina 1954-1992, tietää Wikipedia ja jatkaa:

Kaivoksen tuotantorakennukset purettiin pari vuotta myöhemmin ja kaivostorni räjäytettiin. Myös kaivokselta Vihannin asemalle vienyt junarata on purettu Vihannin päässä olevaa 1,5 kilometrin pituista vetoraidepätkää lukuunottamatta. Kaivoksen toimistorakennukset säilytettiin. Osa kaivosalueesta on aidattu sortumavaaran vuoksi.

Vihannin kuntaa ei enää ole. Se liitettiin vuoden 2013 alusta Raaheen.

Paikan haku

GeoNames-tietokanta vaikuttaa lupaavalta. Ajattelin jo nyt hyödyntää geonames R-kirjastoa kuntien GeoNameID:n selvittämiseen, mutta en päässyt alkua pidemmälle. Palvelu kyllä vastaa ja palauttaa dataa. Liikaakin, aloittelijalle. Kysely on ilmeisesti rakennettava hyvinkin yksityiskohtaisesti kohdistumaan vain tietyntyyppisiin taajamiin.

Yritin myös ujuttaa SPARQL-kyselyyn soRvin tarjoamia MML:n kuntakoordinaatteja. Europeanan SPARQL-editorissa on valmis esimerkki Time enrichment statements produced by Europeana for provided objects. Se antaa kuitenkin ymmärtää, että metatieto-rikastukset mm. ajalle ja paikalle olisivat toistaiseksi haettavissa vain yleisellä merkkijonohaulla, joten luovutin.

Tuore Europeana Business Plan 2013 kertoo tammikuun tilanteen paikkatiedoista. Ne löytyvät 27.5 prosentissa kaikesta aineistosta.

Paljonko Europeanassa sitten on Suomen GeoNameID:llä <http://sws.geonames.org/660013/> varustettuja RDF-kolmikkoja resurssityypeittäin (image, sound, text, video) ja lähteittäin? Kopioi tästä kysely, liimaa SPARQL-editoriin ja lähetä.

Dataa ja videonauhaa

Linkitetty avoin data on Europeana-pilotti. Datanarkkarille se tarjoaa mahdollisuuden ynnäillä vaikka tilastoja, mutta ne ovat vain sivutuote. Datan päätarkoitus on kypsyttää ideoita verkkopalveluiksi. Liikkuvalla kuvalla ja äänellä on kysyntää. Niitä aiotaankin saada lisää, linjaa Business Plan:

Actively pursue both large and small institutions to contribute AV material through national aggregators or audiovisual projects. AV material currently makes up less than 3% of the database, while research shows that this material gets most attention from end-users. (s. 9)

R-koodi.

EDIT 16.3.: Missä mahtoivat silmäni olla, kun katsoin asukaslukuun suhteutettua tilastoa? En osaa selittää. Oli miten oli, Helsinki ei suinkaan ole videoykkönen vaan Saarijärvi! Lisäksi Vihannin ja Karjalohjan ohittavat Aura, Ruovesi, Halsua ja Tammela. Aura on tosin siinä ja siinä, koska toinen kahdesta videosta liittyy Teuvo Auraan.

2013-02-23

Europeana and Saxon-CE

Time to celebrate! Today is the International Open Data Day, and yesterday Michael Kay tweeted about the open source version of Saxon-CE (XSLT 2.0 in the browser).

Thanks to Bob DuCharme's recent blog post, I managed to query the Europeana SPARQL endpoint on a selection of audio files from Finland. The collection belongs to Svenska Litteratursällskapet i Finland, and it contains interviews of Finland-Swedish people at different ages. The query result is downloaded as XML. With this page you can test how Saxon-CE renders the file in your browser. Have a look at the source code. The XSL file is only slightly modified from the Saxon-CE Book List sample application, and CSS is untouched.

2012-07-09

Millä Suomi twiittaa?

Vielä kerran suomenruotsalaisen ja suomalaisen tweettailun eroista ja yhtäläisyyksistä.

Twitter-klienttien Top4-järjestys on sama, mutta suomenruotsalaisilla Twitter for iPhone on selvästi suositumpi kuin TweetDeck. Suomenkielisten käyttämien klienttien kirjo taas on paljon suurempi. Testaillaanko siellä enemmän uutta? Jaetaan aineistoa enemmän suoraan muista lähteistä? Vertailuaineistojen koko on sama (n. 12000 tweettiä), mutta aineistot eivät ole täysin vertailukelpoisia keskenään, koska suomalaisia on 20 enemmän. Mitä enemmän ihmisiä, sitä enemmän erilaisia klienttejä, luultavasti.

Suomalaisten Top 5:

  1. Twitter.com
  2. Twitter for iPhone
  3. TweetDeck
  4. Twitter for iPad
  5. Tweet Button (suomenruotsalaisilla 8.)

ja suomenruotsalaisten:

  1. Twitter.com
  2. Twitter for iPhone
  3. TweetDeck
  4. Twitter for iPad
  5. Twitter for Android (suomalaisilla 9.)

Pistekaavioiden ulkoasussa on runsaasti toivomisen varaa, mutta yleiskuva erottunee: suomalaiset (PDF) ja suomenruotsalaiset (PDF). R-koodi klienttitiedon hakuun ja käsittelyyn.

2012-07-05

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

2012-06-27

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.

Twitter-listan jäsenet

Edellisessä postauksessa jäin pähkäilemään, miten Twitter-listan kaikkien jäsenten nimet saa poimittua. Keino löytyi, kun vaan malttoi lukea GET lists/members -API-määrittelyä. Avainsana on next_cursor. Koodissa on esimerkkinä ylen-suomitop100-lista, jossa on jo 102 jäsentä.

2012-06-26

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.

2012-06-11

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.

2012-06-05

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.

2012-06-03

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?

2012-03-08

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.

2011-06-13

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.

2011-06-02

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 ;)

2011-05-22

Kuratointia

HS Open #2


HS Open kakkonen on huomenna, ja sinne olen minäkin menossa. Mielenkiintoinen päivä tulossa! Luupin alla ovat mm. eduskuntavaalit 2011. Rahoittajia löytyi, ehdokkaita oli, vaalit käytiin. Mitä muuta tästä spektaakkelista voi päätellä numeroiden valossa?

Lähdetään liikkeelle datasta.

Keskeistä aineistoa HS Open kakkosen Politiikka-ryhmälle ovat ehdokkaiden ilmoitukset kampanjoiden menoista ja ilmoitukset tukijoista. Arvokasta taustainformaatiota tuovat mm. YLE:n vaalikonetiedot.

Kaksi taulukkoa, kaksi omistajatahoa. Voiko taulukot yhdistää jonkin yhteisen, uniikin sarakkeen avulla? Ei voi, näillä tiedoilla. Mitään Vaaliehdokas-ID -avainta ei ole olemassa. Henkilötunnus tietysti kaikilla ehdokkailla on, mutta sitä ei saa julkaista eikä hyödyntää. YLE:n taulukkorivit (ehdokkaat) on yksilöity ID-numerolla, mutta se on taulukon tuottamisen sivutuote. Ehdokasnumero taas on vaalipiirikohtainen. Puoluerahoitusvalvonnan aineistossa ei ole mitään avainsaraketta. Tarvitaan siis yhteinen nimittäjä.

YLE:n aineistossa on mainittu ehdokkaista sukunimi ja kutsumaetunimi. Puoluerahoitusvalvonnan datassa taas sukunimi ja kaikki nimet, joista jokin on todennäköisesti kutsumanimi. Riittäisikö etu- ja sukunimen yhdistäminen avaimeksi? Ehkä ei, sillä kaimoja saattaa olla. Puolueen lyhenteen lisääminen perään olisi kai jo aika varmaa? Harmi, että lyhenne löytyy vain rahoitusdatasta, ei YLE:ltä.

Ajatus: lähes jokaisella ehdokkaalla vaikutti tällä kerralla olevan oma vaali-web-domain. Olisiko jonkun jossakin kannattanut tallentaa se?

Käytin yhteisen avaimen muodostamisen yrittämiseen useita tunteja. Lopputulos: ei tullut avainta, mutta tulipa kokemusta datan siivoamis- ja esitystyökaluista Google Refine ja Google Fusion Tables. Ynnä hämmennystä ja lievää manailua Google Docs -hipsuista ja muista yllätyksistä.

Google Refine


Google Refine (entinen Freebase Gridworks) on näpsäkkä työkalu. Esimerkiksi data.gov.uk on käyttänyt sitä omissa yhdistetyn avoimen datan hankkeissaan. Jeni Tennisonilta löytyy selkeäsanainen esitys aiheesta. Googlen pari omaa esittelyvideota kannattaa katsoa. Niillä pääsee hyvin alkuun.

Rahasummia tullaan laskeskelemaan ja vertailemaan. Niiden on siis syytä olla tietotyypiltään samanlaisia. Annoin Refinen lukufasetin (numeric facet) käydä läpi kaikki ne Puoluerahoitusvalvonnan taulukon sarakkeet, joissa oli rahasummia. Suurin osa oli tekstityyppiä, mutta joukossa oli myös numeerista dataa.


Valtavirrasta poikkeavat taulukon solut editoidaan. Kaikille tekstityypi, klik, done. Tällainen "masterdatan" muokkaaminen ei tietysti ole riskitöntä.


Taulukkolaskentaohjelmistot tarjoavat monenlaista vipstaakia datan sisäänlukuvaiheessa. Kokeilin, miten vahingossa mukaan livahtaneet hipsut ja ylimääräiset tyhjät merkit pystyy poistamaan. Pystyy, helposti.


Google Refine Expression Language (GREL) ymmärtää säännöllsiä lausekkeita. Alla poistetaan Etunimet-sarakkeen soluista lopun tyhjät merkit ja sulkeva hipsu.


Google Fusion Tables


Pinserissä oli muutama viikko sitten mainio salapoliisitarina iPhone-paikkadatasta. Siitä luin ensimmäistä kertaa näistä fuusiotauluista. Kätevä apu datan kääntelyyn ja katseluun eri kanteilta. Ja jos mukana on paikkatietoa - kuten Pinserin tapauksessa - ne esitetään automaattisesti karttanäkymässä. Taulukkoon voi tallentaa näkymiä, ja näkymiin edelleen suodatuksen ja ryhmityksiä.

Tein YLE:n vaalikonedatalle näkymän, jossa ovat ehdokkaista vain perustiedot kuten nimi, ikä, sukupuoli, puolue jne. Suodatin jäljelle vain ne rivit, jotka liittyvät valittuihin ehdokkaisiin. Ryhmitys keskimääräisen iän ja puolueen mukaan.


Erilaisten näkymien ja ryhmittelyjen määrittely data-aineistolle lähestyy pivot-taulujen filosofiaa. Excel ja OpenOffice Calc ovat tunteneet ne jo pitkään, ja aivan hiljattain niille tuli aito tuki myös Google Docsiin. Olen yksi heistä, joille pivotointi on vielä varsin vierasta. Tony Hirstin maanläheinen blogaus on auttaa alkuun.

Paikkatiedosta puheenollen, leikittelin jonkin aikaa ajatuksella, että saisin ennen HS Openia käsiini jonkin eduskuntavaaliehdokkaan, jolla olisi ollut iPhone mukana vaalityössä. Grand Plan: oletetaan, että hän olisi halukas antamaan Tieteen käyttöön viimeisen vaalityöviikkonsa paikkadatan. Oletetaan edelleen, että hän olisi liikkunut nimenomaan omassa vaalipiirissään iPhonensa kanssa. Miltä näyttäisi visualisointi, jossa olisivat mukana hänen liikkeensä ja hänen kyseisessä vaalipiirissä saamansa äänet? Voisiko tästä vetää minkäänsortin johtopäätöksiä vaalityön vaikutuksista äänestyskäyttäytymiseen? No, vastaus on tietysti että ei voi :) mutta sormiharjoitteluna se olisi ollut mukava. Terveiset ja kiitokst Jyrki Kasville, joka tuli ensimmäisenä mieleen, kun mietin keneen ottaa yhteyttä. Hän oli tehnyt vaalityötä Eduskunnan Nokia E90:n kanssa, koska siinä oli työpaikan kalenteri. Muita en tähän hätään ehtinyt saada kiinni.

Google Docs


Suurin osa tästä aurinkoisesta viikonlopusta meni Google Docsin kanssa mähkiessä. Kuvittelin näet voivani rakentaa sen avulla puuttuvan lenkin rahoitusdatan ja YLE:n vaalikonedatan välillä.

Olin muodostanut Google Refine'n transform-vivulla molempiin taulukoihin ylimääräisen apusarakkeen HloID, ehdokkaan sukunimi ja ensimmäinen etunimi. Tavoite: kopioida sen avulla YLE-taulun ID myös toiseen tauluun. Silloin minulla olisi kunnon avain.

Lopulta onnistui, edes osittain (mutta ei oikealla aineistolla, josta kohta lisää), kiitos ahkeran googlaamisen ja ystävällisten Google Docs -foorumin vakioauttajien.

=QUERY('Sheet2'!A:C,"SELECT C WHERE A CONTAINS """&A361&""" ")

Tässä ollaan työkirjan lakanalla Sheet1, B-sarakkeen (tuleva ID) solussa B361. Samalla rivillä, A-sarakkeessa, on HloID. Saman työkirjan lakanasta Sheet2, sarakkeesta A, etsitään vastaavaa merkkijonoa. Jos löytyy, saman rivin sarakkeesta C haetaan arvo soluun B361.

QUERY-lauseke on tallennettu ensimmäiselle datariville. Solun oikeasta alanurkasta kiinni, ja lausekkeen kopiointi taulukon kaikille riveille. Suhteellinen viittaus A-sarakkeen soluun kasvaa samalla automaagisesti.

So far so good. Mutta. Varsinainen taulukko on niin iso, että Google Docs ei suostukaan lukemaan sitä samaan työkirjaan. No, tämän ei pitäisi olla ongelma, sillä myös kokonaan toisesta työkirjasta voi hakea, ainakin teoriassa.

=QUERY(IMPORTRANGE("0AvfW9KgU1XzhdHJSRFFwSGR3YWR6MVl3X0ZVWkhibUE","Sheet1!A:C"),"SELECT C WHERE A CONTAINS """&A361&""" ")

Pitkä älämölö on työkirjan yksilöivä avain. Sen näkee URL:sta.

Ei onnistunut. Google Docs oli joko sitä mieltä, että C-saraketta ei ole tai että hittiä ei löydy. Joissakin ohjeissa lakana ympäröitiin yksinkertaisilla hipsuilla, toisissa ei. Joissakin käytettiin puolipistettä välimerkkinä, toisissa pilkkua.

Nyt te varmaan sanotte, että "miksi ihmeessä mokoma vaiva, tauluthan voi yhdistää simppelisti tällä tavalla..." ja näytätte. Jään odottamaan.

EDIT 23.5: Järjestäjät olivat tehneet paljon duunia datan eteen. Aineisto oli siististi kantatauluissa, kanta LAMP-palvelimella ja palvelin Amazonilla. Kiitos tämän, päivän annista tuli hyvä. Porukassa oli osaajia monelta alalta, ja nopea protoilu sujui. Lahjakasta väkeä!

2010-06-13

Metadatasta matikka

Viime viikkojen virkistäviä uutisia oli HelMet-kirjastojen bibliografisen datan julkaiseminen MARCXML-muodossa.

Luettelointityön yksityiskohtaisuus ja huolellisuus on hämmästyttävää. Miten dataa sitten voisi hyödyntää? Kirjastot.fi-keskustelussa Mace Ojala visioi:

Tällaista datadumppia voisi käyttää esim. kirjoitusvirheiden etsimiseen HelMet -tietokannasta. Tai vaikkapa kaivellakseen kirjoittajien ja asiasanojen välisiä yhteyksiä; miten HelMet-kirjastojen luettelointidata kuvailee vaikkapa Aleksis kiven tuotantoa kokonaisuutena? Tätä voisi vertailla vaikkapa siihen miten muut kirjastot saman aineiston sisältöä kuvailevat. Tai voi kaivaa vaikkapa eri kirjastoluokkiin luokittelemiemme teosten jakauman eri vuosille. Tai vertailla vaikkapa miten kirjastoluokat ovat sidoksissa toisiinsa lisäluokkien kautta. Tätä dataläjää voi käyttää myös vaikkapa etsiäkseen muita tapoja kuvailla tällaista aineistoa kuin kirjastojen käyttämä MARC21, pyrkien vaikkapa Open Linked Dataan.

Ensi alkuun pitää saada jokin tolkku MARC-kentistä.

Sormiharjoituksena tein muutaman tiedoston sisällöstä XSLT2-muunnoksen CSV- ja HTML-formaattiin. Valitsin englanninkielistä kaunokirjallisuutta tältä vuosikymmeneltä. Poimin mukaan kirjailijan, kirjan nimen, julkaisuvuoden ja ISBN-numeron sekä muodostin suoran linkin HelMet-tietokantaan, ohjeen mukaan. Käsiteltävät tiedostot on listattu kokoomatiedostossa libdata.xml. Lopputulokset tässä ja tässä.

2010-05-23

Väitöskirjat

Suomalaisista yliopistoista valmistui vuonna 2009 reilut 1600 uutta tohtoria. Olen siitä omituinen, että tykkään vilkuilla minkälaisia väitöskirjoja on ilmestynyt. Suurin osa kovasta tieteestä menee yli hilseen (onko kukaan väitellyt hilseestä?), mutta mukaan mahtuu silti sadoittain potentiaalisesti mielenkiintoisia, tuoreita tutkimuksia.

Väitöstilaisuuksista ja uusista väitöskirjoista tiedotetaan yliopistojen verkkosivuilla. Lehdistötiedotteissa, osana yleis-, ajankohtais- tai tiedeuutisia, tapahtumakalenterissa, uusissa julkaisuissa. Tiedottaja on yleensä joko yliopiston viestintä, julkaisuyksikkö tai kirjasto. Väitösuutisista kiinnostuneen kansalaisen on oltava kärppänä, mistä mitäkin löytyy ja milloin.

Reilu vuosi sitten tein tukun RSS-syötteitä Yahoo!Pipesilla niiden yliopistojen väitöksistä, jotka eivät sitä itse tarjoneet. Melko työlästä. Yliopiston julkaisujärjestelmästä (tai sen puutteesta) riippuen tiedote putkahtaa ilmoille eri tekniikoilla tuotettuna ja vaihtelevan muotoisena. Olennaisten tietojen poimiminen HTML-sivulta on pikkutarkkaa puuhaa, eikä mikään takaa että logiikka toimii enää ensi viikolla.

Kävin nyt uudestaan läpi kaikki putket. Muutoksia tuli pal-jon. Ei mikään ihme. Yliopistoja on tällä välin yhdistelty, järjestelmiä uusittu, sivuja siirrelty, leiskoja muutettu.

Kaikkien syötteiden liittäminen yhteen ja samaan tekee lopputuloksesta raskaan, joten jaoin ne viiteen pakettiin. Maantiedettä mukaillen etelästä pohjoiseen: pääkaupunkiseudun, Turun, Tampereen yliopistot sekä Lappeenrannan, Jyväskylän, Vaasan ja Itä-Suomen, Oulun ja Lapin yliopisto.

Helsingin yliopiston E-thesis -palvelun mittavasta syötetarjonnasta ovat mukana vain keskustakampus ja Kumpula. Yksi on joukosta poissa: entinen TKK eli nykyinen Aalto-ylipiston Teknillinen korkeakoulu. Syötteet ovat HTTPS-protokollan takana, ja Yahoo!Pipesilta ei löydy tukea sille. Varsinaisesti. YQL-kyselykielen ja Fetch Data -modulin avulla protokollarajoitetta voi tosin yrittää kiertää. En saanut temppua onnistumaan TKK:lla, Jyväskylässä (RSS) sen sijaan kyllä. Tiedä sitten, mikä ero tuossa on...

Jo hyvissä ajoin ennen väitöstilaisuutta väitöskirjan metatiedot on tallennettu digitaaliseen, määrämuotoiseen formaattiin. Työn on tehnyt yliopiston kirjasto. Metatieto on saman tien päivitetty paitsi paikalliseen tietokantaan myös Kansalliskirjaston Linda-yhteistietokantaan. Harmi vain, että tähän metatietoon ei ole toistaiseksi tarjolla avointa ohjelmointirajapintaa. Jos osaa ja viitsii, Lindan hakuliittymästä voi tietysti riipiä haluamansa tiedon screen scraping -tekniikoilla. Kotitarpeita ajatellen koodaus menee kuitenkin överiksi.

Kuinka ollakaan, tiedot väitöskirjoista leviävät myös Suomen rajojen ulkopuolelle. Isoimpia toimijoita ovat WorldCat ja Google Scholar. Molemmat tarjoavat API:n. Molemmat rajoittavat API:n käytön to qualifying institutions, mitä se sitten käytännössä tarkoittaakaan. Tiedän, että Google Scholarilla on paljon ystäviä, koska se on ajan tasalla. Vaikka sieltä ei välttämättä löydykään muuta kuin englanninkielistä aineistoa - kuten Jyrki Ilva E-thesis -palvelusta huomautti jo vuonna 2006 - suomenkieliset väitöskirjat alkavat olla harvinaisuus.

Leena Saarinen kirjoitti maaliskuussa Kansalliskirjaston Digitaalinen kirjasto -blogissa myönteiseen sävyyn Julkinen data -julkaisusta otsikolla Askel kohti avointa julkisdataa. Tämä lupaa hyvää. Nyt ei kun yhdessä toivomaan, ettei tarvitse odottaa liian kauan.

2010-04-18

Taulukko tietokantana

Ulkomaan luontoretkillä on tullut tavaksi pitää listaa nähdyistä eläinlajeista. Taulukkoon nimi englanniksi ja latinaksi (jos tiedossa), paikka ja mahdollinen kommentti. En ole mikään listafriikki, mutta kirjaaminen helpottaa lajien ja tapahtumien muistamista.

Listoihin saattaa olla mielenkiintoa muillakin, joten olen muokannut niistä HTML-version verkkoon (sivun lopussa). Työnantaja on ollut joustava ja sallinut kohtuullisen määrän privaattia aineistoa webbipalvelimellaan. Se päivä on kuitenkin lähellä, että materiaali on syytä siirtää muualle. Webhotelli on mietinnässä muistakin syistä, mutta väliaikaisratkaisuna Google Docs on houkutteleva vaihtoehto.

Tony Hirst kertoo mainion havainnollisessa blogissaan, miten julkiseen Google-taulukkoon voi tehdä kyselyjä Google Visualisation API -kyselykielellä aivan kuin taulukko olisi verkossa oleva tietokanta. Kieli muistuttaa SQL-kyselykieltä. Tulosjoukon saa JSON-, CSV- tai HTML-muodossa.

Alkuperäiset taulukot ovat läppärillä Excel-tiedostoina. Toin Perun matkan lakanan Import-toiminnolla Googlelle, ja aloin leikkiä hakukielellä:

- kaikki lajit, jotka näin Manu Wildlife Centerissä (MWC)
. Ei aakkostusta, ja taulukon sarakkeille A-D ymmärrettävämpi label

- kultapyrstöt (oropendola) aakkosjärjestyksessä

- kaikki rivit ensimmäistä lukuunottamatta, koska sen ensimmäisessä solussa ovat yhtenä pötkönä paikkalyhenteiden selitykset

So far so good, mutta vielä riittää duunia. Ensimmäisellä rivillä oleva tieto pitää saada käyttöön, samoin linkit latinalaisesta nimestä Wikipediaan.

2010-04-11

Tvleffat-putki päivittyi

Muutama vuosi sitten tein tulevien TV-elokuvien syötteen telkku.com -palvelun perusteella. Kun äsken tweettasin illan Beat the Devil -leffasta, kävin pitkästä aikaa katsomassa, miltä putken alkupää näyttää. Ja kas, sieltähän löytyy nyt myös joistakin elokuvista linkki www.imdb.com-sivuille. Kopautin putkea, ja nyt linkki valuu mukana. Jos sinulla on sattumalta jatkotilaus putkesta, päivitä se syötelukijassasi.