tiistai 24. marraskuuta 2015

Wikidata ja Ylen historiallinen tapahtumakalenteri




Yle on julkaissut tapahtumakalenterinsa tiedot vapaana datana:
https://www.avoindata.fi/data/fi/dataset/yle-arkiston-historiallinen-tapahtumakalenteri

Halusin selvittää, kuinka monta tapathumakalenterissa olevista ihmisistä löytyy wikidatasta.  Tämä on edellytys sille, että tietoja voitaisiin siirtää kalenterista wikidataan.

Data

Ylen kalenteridata näyttää tällaiselta:
  "id": 9234,
  "vuosi": 1945,
  "kuukausi": 6,
  "paiva": 2,
  "tapahtuma": "Kim Brown syntyi",
  "huomautus": "Englantilainen laulaja & lauluntekijä, the Renegades-yhtyeen johtohahmo. Kuoli 11.10.2011.",
  "linkki": "",
  "henkilo": 1,
  "fennica": 0,
  "lahde": "hs 13.10.11",
  "valmis": 1,
  "tallpvm": "4.1.2012",
  "muokkpvm": "4.1.2012"
Aineisto koostuu erillisistä tiedoista, joilla ei ole muuta keskinäistä viitettä kuin henkilön nimi. Henkilöitä koskevat tiedot on merkitty "henkilo" -lipulla, joten aineiston rajaaminen tämän mukaan on ensimmäinen vaihe.

Toiseksi aineistosta pitää kaivaa henkilöiden nimet, sillä nimet eivät ole omana kenttänään vaan ne ovat muotoa "Aleksi Lehtonen syntyi" tai "Ari Vatanen voitti ensimmäisenä suomalaisena ralliautoilun virallisen maailmanmestaruuden".

 

Vaiheet

Prosessi jakautui neljään vaiheeseen.

Konvertointi

Ääkköset näkyivät rumasti kun tiedostoa katseli tekstimuodossa.
Ensiksi piti siis päästää eroon väärästä merkistöstä. Sen jälkeen muunsin tiedoston json-formaattiin, jotta jatkokäsittely olisi helpompaa.

Yhtenäistäminen

Yhtenäisteminen tarkoittaa tässä tapauksessa sitä että yksittäistä henkilöä koskevat tiedot kootaan yhteen. Siis esimerkiksi kaikki Matti Nykästä koskevat huomiot linkitetään Matti Nykäsen alla. Tästä muodostuu Matti Nykäsen tapahtumat. Tätä voisi kutsua myös tapahtumallistamiseksi(?).

Kysely

Seuraavaksi tein kohteesta hakutiedoston json-formaattiin. Tiedosto sisältää hakutermit ja viitteet alkuperäisen aineiston tietoihin. Tähän tiedostoon kirjoitetaan kyselyn tulokset. Näin voidaan tehdä useita hakuja ilman että haetaan samoja tietoja uudestaan ja uudestaan.

  "name": "Alfred Kordelin",
  "response": {
   "head": {
    "vars": [
     "s",
     "label",
     "birth",
     "death"
    ]
   },
   "results": {
    "bindings": []
   }
  },
  "ids": [
   5857
  ],
  "response_count": 0,
  "long_name": 6,
  "new_id": 123
Käytin wikidatan SPARQL-rajapintaa. Kokeilujen jälkeen päädyin kysymään siltä joko suomen- tai englanninkielistä versiota nimestä.

Analyysi

Kun onnistuineita hakuja on saatu tarpeeksi, voi tuloksia analysoida. Anayysissa tutkitaan millaisia vastauksia on saatu tai onko niitä saatu ollenkaan.

henkilöitä: 3071
ei löydy: 314
yksi osuma: 2516
useita osumia: 241


Yli 80 prosenttia kyselyistä tuotti yhden osuman. Se ei tietysti tarkoita että henkilö on oikea, mutta siitä on hyvä jatkaa esimerkiksi syntymä- ja kuolinpäivien (tai vuosien) vertailulla. Mutta entä nuo yli 300 joita ei löytynyt?

Aleksander vai Alexander?

Nimi on kehno ihmisen tunniste. On samoja nimiä, eri tavalla kirjoitettuja samoja nimiä (esim. aksenttimerkit), väärin kirjoitettuja nimiä (Bertrand Russel) ja sitten on vielä kuninkaalliset.  Esimerkiksi Ylen kalenteridatassa on "Anne, englannin prinsessa". Tässä muodossa wikidatasta ei löydy mitään. Sen sijaan "Prinsessa Anne" löytyy.

Myös aksenttimerkit aiheuttava omat ongelmansa. Kalenterissa osassa nimissä on aksenttimerkit ja osassa ei. Salvador Dali ja Edith Piaf ovat kalenterissa ilman aksenttia mutta näiden henkilöiden wikidatan suomenkielinen label on aksentin kanssa. Siksi haku ei löydä kyseisiä taitelijoita.

Lisäksi on vielä kielivalinta. Wikidata on aidosti monikielinen ja siksi myös henkilöiden nimillä voi olla useita eri kieliasuja kielen mukaan. Esimerkiksi aiemmin mainittu prinsessa Anne on suomennettu nimi Princess Annelle. Tosin haun kannalta tällä on merkitystä lähinnä SPARQL -hakujen kannalta.

Google ratkaisuksi?

Entä jos syötetään "Anne, englannin prinsessa" Googlen hakuun? Jo vain, ensimmäinen osuma on wikipedian sivu "Anne (prinsessa)". Wikipedian sivun kautta taas voidaan löytyy prinsessa Annen wikidatakohde!

En tehnyt ohjelmallista google-hakua, vaan tein suppean testin käsin. Mutta näyttää siltä, että kattavin hakualgoritmi näyttää menevän mutkan (Google) kautta.

Loppujen kohdalla on tehtävä sitä, mitä kukaan ohjelmointitaitoiseksi itseään kutsuva ei halua tehdä eli käsineditointia. Otetaan siis listaus niistä nimistä, joista ei löytynyt tietoa minkään haun avulla ja tutkitaan ovatko hakutermit järkeviä ja jos on, niin miksi mitään ei löytynyt (kirjoitusvirhe, ei wikipediasivua jne.)

Entä useat osumat?

Nopean katsauksen perusteella useita osumia tuli koska henkilöillä oli useita syntymä- tai kuolinpäiviä (wikidatassa tämä on mahdollista, niin kuin olla pitääkin). Moni nimi myös tuotti useampia henkilöitä, kuten esimerkiksi Aarre Merikanto.

Johtopäätös

Pelkkien nimien avulla tietojen yhdistäminen on hankalaa ja vaatii jossain vaiheessa perinteistä käsityötä. Paras algoritmi näyttäisi olevan Googlen kautta wikipediaan ja sieltä wikidataan.Kaiken kaikkiaan tehtävä ei ole triviaali. Teknisen värkkäämisen lisäksi tarvitaan myös aika lailla tietoa, jotta tiedot kohtaavat oikeat henkilöt silloin kun erehtymisen vaara on.

Tekniikkaa

Merkistömuunnos iconv-ohjelmistolla:
iconv -f WINDOWS-1252 -t UTF-8 Yle-tapahtumat.csv > Yle-tapahtumat-utf8.csv  

Tein kokeilut javascriptillä nodejs-ympäristössä. Wikidatahaut tein wikidatan sparql -apin kautta seuraavalla kyselyllä:

PREFIX wd: <http://www.wikidata.org/entity/> 
PREFIX wdt: <http://www.wikidata.org/prop/direct/> 

SELECT DISTINCT ?s ?birth ?death WHERE {
    ?s wdt:P31/wdt:P279* wd:Q5  .

    { ?s ?label "Eubie Blake"@en }
    UNION
    { ?s ?label "Eubie Blake"@fi }
    
    OPTIONAL { ?s wdt:P569 ?birth }
    OPTIONAL { ?s wdt:P570 ?death }
}





torstai 19. marraskuuta 2015

Ken Burns effect with Blender VSE

I made an exhibition video to Vantaa City Museum to their current exhibition about river Vantaa (Vantaanjoki). I was given texts, images of paintings, some photographs and an old map. Three videos was needed: the main video with texts and images, and two ambience videos - that were projected to ceiling - consisting just Ken Burns effects.

Video editing and Blender

I haven't made video editing recently, although I have even taught that several years ago. Back then I was using Adobe Premiere. Now I'm on Linux (Debian) so I had to search new tools for videoediting.

First I tried shortly OpenShot and Natron. Basically, Openshot was just too simple and Natron too complex, although Natron was very interesting. I made some test with OpenShot but I had problems with jerky motion in Ken Burns effects.

I ended up to using Blender.  I was familiar with the user interface of Blender but I wasn't sure about the usefulness of Blender's VSE (Video Sequence Editor).

 

VSE

I needed several Ken Burns effects so making those was my main concern. I found out that it is possible to add transform strip over existing strip. At transform strip there are position and scale values that can be animated. So, I had a Ken Burns effect.

But making those with adjusting sliders was quite impractical. It would have been so much easier to transform and scale strips by dragging them with the mouse.

But hey, it's Blender! Surely there must be some nice trick for this. And there was: vse transform tool. And BUM! Making Ken Burns effects was easy and fun.

 

Making Ken Burns effect with VSE

Shortly: add transform strip (T) to a image strip, drag and scale image strip in preview window where ever you like, add keyframes to position and scale properties of the strip, move to the end frame of the effect and do same there. Done!


I used Gimp for making transparencies and other image editing needs. Texts I made also with Gimp. I saved texts in Gimp's own xfc format and then exported as png images. Things go smoothly when one uses the final presentation resolution from the very beginning. It is important to know the final presentation resolution in a very early stage so that you don't have remake any of your image files.

 

Conslusion?

I learnt that VSE is a really capable tool for this kind of work. At least, If you know the user interface already. Otherwise there is some work to do with the basics of Blender.




PS. at 1.35 my son throws a stone to the river. He was getting bored while I was filming the ripples of the water...


perjantai 6. marraskuuta 2015

WIkidata ja Munch

"Edvard Munch - Melancholy (1894-96)" by Edvard Munch -
The Athenaeum: pic. Licensed under Public Domain via Wikimedia Commons - https://commons.wikimedia.org

Kaikki tietävät Edvard Munchin teoksista ainakin Huudon, sen "pää kenossa, kädet poskilla ja suu auki" -kuvan (itse asiassa maalauksia on useita). Mutta mitä muuta Wiki-maailmasta löytyy Munchin teoksista?

Wikidatasta löytyy Munchin teoksia 1799 (6.11.2015).

Kaikki Edvard Munchin teokset


Mutta wikipedia-artikkeleita löytyy vain 22:sta teoksesta! Huuto-teoksesta löytyy artikkeli peräti 56:lla kielellä.

wd:Q471379
The Scream
56
wd:Q1989780
Madonna
15
wd:Q2267579
The Sick Child
8
wd:Q3432673
Puberty
4
wd:Q1683743
Vampire
4
wd:Q17041052
Melancholy
3
wd:Q3208135
Dance of Life
3
wd:Q3929351
The Girls on the Bridge
3
wd:Q3955717
Evening on Karl Johan Street
3
wd:Q18891111
The Kiss
3


Munchin teokset, joista löytyy wikipedia artikkeli

Entä Munchin maalausten kuvia? Niin kauan kuin commonsdata ei ole käytettävissä, ei oikein ole fiksua tapaa etsiä kuvia wikidatan avulla. Kuvia kuitenkin on Commonssissa toista sataa:

https://commons.wikimedia.org/wiki/Category:Paintings_by_Edvard_Munch