Maandelijks archief: december 2011

Open Beelden video’s verrijkt met Open Data

Tijdens en naar aanleiding van het Code Camping event van Hack de Overheid van 26 november zijn er meerdere programmeurs, hackers en coders met Open Cultuur Datasets aan de slag gegaan. Jaap Blom ontwikkelde een Open Beelden data mash-up die gemaakt is met o.a. datasets van Open Beelden video’s (Beeld en Geluid), het Rijkmuseum en het Amsterdam Museum. In deze blog het resultaat en een toelichting van de maker.

Voor Beeld en Geluid heb ik in het kader van het initiatief Nederland opent Data de eerste basis voor de hieronder besproken demo gemaakt. De demo laat zien hoe je een video in een verrijkte context kunt afspelen door open databronnen te koppelen aan termen die voorkomen in de spraaktranscripten van de video. Voor het Code Camping event van Open Cultuur Data heb ik de demo uitgebreid met nieuwe datasets.

Basisbeginselen
Het uitgangspunt van deze demo-applicatie was het hergebruik van en koppelen van datasets aan de collectie van Open Beelden die meer dan 1.700 vrij te (her)gebruiken video’s van met name Polygoonjournaals bevat, welke gepubliceerd zijn onder Creative Commons licenties. Aan de basis van de werking van de demo liggen de spraaktranscripten van deze video’s, die zijn geleverd door de spraakherkenningssoftware van X-MI.

Het idee voor de demonstratie ligt in het contextualiseren van bekeken video’s om de kijker zodoende te voorzien van nuttige, leuke en onverwachte achtergrondinformatie over hetgeen er gesproken wordt in het filmpje.

Demo Open Beelden - Open Cultuur Data

Om een voorbeeld te geven: wanneer Philip Bloemendal in het filmpje getiteld ‘Grote delen van Nederland compleet ingesneeuwd’ spreekt over: ‘(…) maar ook op tal van plaatsen in Drenthe (…)’ zal er naast de video in verschillende blokjes informatie verschijnen over Drenthe. Elk blokje vertegenwoordigt informatie verkregen uit een open databron. Voor het eerste prototype waren deze bronnen o.a.: Google Maps en Wikipedia. Ter illustratie: in het geval van het herkende concept ‘Drenthe’ wordt er bij Google Maps ingezoomd op de provincie Drenthe; in het Wikipedia blokje wordt er een artikel over Drenthe getoond.

In het kader van het Code Camping event van Hack de Overheid heb ik twee nieuwe datasets toegevoegd: de collecties van het Rijksmuseum en van het Amsterdam Museum.

Hoe het allemaal werkt
Aan de basis van de werking van de demo liggen dus de Open Beelden video’s en het bijbehorende spraaktranscript, dat wordt gebruik om aan elk gesproken woord uit het filmpje de exacte tijdscode te koppelen.1

Stap 1
Omdat niet elk woord in een zin interessant is en uitleg behoeft, is de eerste stap het eruit filteren van het spraaktranscript op stopwoorden, zoals de lidwoorden, preposities en bijwoorden.

Stap 2
In de tweede stap wordt er op de overgebleven woorden een script losgelaten dat deze tracht te sorteren op ‘belangrijkheid’. In deze berekening wordt gebruik gemaakt van een combinatie van woordscores en de frequentie dat een woord voorkomt in de tekst. Woorden die een hoge score hebben en vaak voorkomen zullen hierdoor het hoogste eindigen in de sortering.

Stap 3
Na deze sortering worden in volgorde van belangrijkheid de woorden gebruikt als zoekvraag voor zowel de GTAA thesaurus (o.a. gebruikt door Beeld en Geluid), als ook voor de Freebase webservice. Deze laatste service van Google biedt een grote collectie onderling gerelateerde concepten met beschrijvingen uit een grote verscheidenheid aan domeinen. Freebase kan gezien worden als een uitgebreide thesaurus met informatie uit een groot aantal verschillende (vak)gebieden.

Wanneer de GTAA of Freebase een concept oplevert, wordt deze in een kandidatenlijst opgenomen. Op deze kandidatenlijst wordt vervolgens een zeer rudimentaire slag gemaakt om de meest onzinnige concepten er uit te filteren (b.v. wanneer het concept uit meerdere woorden bestaat, wordt het niet meegenomen).

Stap 4
In stap 4 wordt elk GTAA en Freebase concept uit de kandidatenlijst gebruikt voor een zoekvraag naar elk van de gebruikte open databronnen, te noemen:

  1. Google Maps (alleen als het concept herkend is als locatie)
  2. Wikipedia
  3. Amsterdam Museum
  4. Rijksmuseum

Als er resultaten gevonden worden, zullen deze gekoppeld worden aan de tijdcode van het gesproken woord uit het spraaktranscript waarmee de uiteindelijke informatie gevonden is.2 3

Stap 5
Als laatste stap communiceer ik de tijdsgecodeerde contextdata terug naar de browser middels een JSON object, wat ik vervolgens gebruik om met Popcorn.js events te genereren. Deze events zijn gekoppeld aan een HTML5 video player en zorgen ervoor dat er tijdens het spelen de juiste (context)informatie getoond word in de verschillende blokjes.

Omdat het verwerken van deze 5 stappen per filmpje gemiddeld zo’n 15-20 seconden duurt, sla ik de resultaten in .json files op. Bij het openen van de demo worden deze files dus ingelezen in plaats van het ‘live’ ophalen van de data (zoals beschreven in de verschillende stappen)

Er is nog een hoop te doen
De demo toont aan wat mogelijk door conceptdetectie (of ook: Named Entity Recognition) in te koppelen aan open databronnen, maar kan in een aantal aspecten nog sterk verbeterd worden:

Verbetering conceptdetectie

De conceptdetectie zoals die is toegepast kan nog sterk verbeterd worden. Zo wordt er in deze demo geen rekening gehouden met concepten die bestaan meer dan één woord, b.v. ‘Amsterdam Museum’ zou in dit geval twee concepten, ‘museum’ en ‘Amsterdam’, opleveren i.p.v. één concept: ‘Amsterdam Museum’.

Verder zou er specialistische Named Entity Recognition (NER) web services, zoals DBpedia Spotlight (vooral goede resultaten voor het Engels) onderzocht moeten worden om de resultaten te verbeteren. Voor de Nederlandse taal blijft het echter nog even zoeken naar een goeie open source NER service.

Selectie relevante bronnen voor de gebruiker

Wat betreft de relevantie voor de getoonde informatie naar de gebruiker toe kan er beter nagedacht worden over de selectie van de contextbronnen. Waarom bijvoorbeeld iemand die een filmpje over ‘Nederlands oudste stoomgemaal’ bekijkt, iets wil weten van een museumstuk ‘Hensbeker van het gezelschap De negenden’ (gevonden op basis van het woord ‘Gorinchem’) is iets om over na te denken.

De demo geeft in ieder geval aan hoe spraaktranscripten van video’s kunnen worden gecombineerd met open databronnen en hoe deze op hierdoor wederzijds gecontextualiseerd worden. In het kader van het Nederland opent Data project wordt deze demo verder uitgewerkt. De voortgang hiervan zal op ook op Open Cultuur Data worden vermeld!

Jaap Blom | Software engineer | Afdeling R&D, Nederlands Instituut voor Beeld en Geluid

Je kunt de demo hier vinden. 4

Voetnoten

  1. Spraakherkenningssoftware is niet perfect, wat betekent dat niet elk woord in een spraaktranscript 100% zal overeenkomen met het woord dat daadwerkelijk in de video wordt uitgesproken.
  2. Voor de collectie van het Rijksmuseum heb ik eerst de hele collectie geharvest uit hun OAI-PMH data provider en geïndexeerd met SOLR. Via Lucene queries is vervolgens de collectie met vrije tekst te doorzoeken. Tijdens het maken van de index liep ik tegen veelal dezelfde slordigheden in de metadatavelden aan als Hay Kranen, die het Virtuele Rijksmuseum maakte.
  3. De collectie van het Amsterdam Museum is op drie verschillende manieren ontsloten: via AdlibOAI-PMH en via een SPARQL endpoint. Voor deze demo heb ik voor de laatste optie gekozen, omdat het niet zoals OAI-PMH eerst gerharvest moet worden, maar direct via de service doorzocht kan worden. Het was sowieso weer goed wat te spelen met het Semantic Web d.m.v. SPARQL queries.
  4. Je kunt de demo het beste bekijken in Google Chrome, Firefox en Safari. Hij werkt niet optimaal in Internet Explorer.