Licentie

CC BY-SA 4.0
3/4/2019

Linked data: entiteiten in je data herkennen

  • Techblog

In 2018 experimenteerden we met linked data en onze krantendatabank Nieuws van de Groote Oorlog. Na eerdere experimenten waarbij een steekproef van onze kranten gelinkt werd aan DBpedia, wilden we nu een stap verder gaan. De metadata van alle kranten op hetarchief.be werden als linked data gepubliceerd en met een concrete use case willen we aantonen wat je met linked data kan doen. Links leggen vanuit de inhoud van de kranten bijvoorbeeld. Rondvraag leidde ons naar de Namenlijst van het In Flanders Fields Museum.

Welke data gaan we koppelen?

De Namenlijst is een databank met meer dan 500.000 namen van gesneuvelden uit de Eerste Wereldoorlog, incl. datum en plaats van geboorte en overlijden, beroep, adres, regiment en dergelijke meer. Die namen wilden we koppelen aan namen die teruggevonden werden in de kranten in ons archief. In de eerste stappen van dit project werd dus onderzocht hoe we het makkelijkst beide databronnen konden koppelen.

De eerste stap: indexeren

Allereerst kozen we ervoor om de namen in de kranten te gaan indexeren om ze makkelijk en snel doorzoekbaar te maken. Een bijkomende complicatie hierbij was de vaak gebrekkige kwaliteit van de OCR-tekst van de kranten. De precisie daarvan is afhankelijk van de kwaliteit en leesbaarheid van het origineel, het lettertype, de kleur en het contrast. Leesfouten in de vorm van vreemde of onverwachte tekens zijn niet ongewoon, maar kunnen het indexeren dus bemoeilijken. Daarom probeerden we drie technieken om dit te omzeilen.

1. NER-tagging

NER-software - kort voor named entity recognition - gaat op zoek naar entiteiten in tekst. De software kan entiteiten herkennen als bijvoorbeeld personen of plaatsnamen. Het minimaliseert de te doorzoeken data. Uit verschillende experimenten kwam NER volgens Stanford naar boven als de beste software voor ons project. Al is taggen met deze NER verre van 100 % accuraat - vooral in combinatie met de fouten in de OCR-tekst. Zo missen we sommige namen doordat die niet als persoon getagd zijn in de tekst, maar bijvoorbeeld als locatie of als object. Daarom gebruikten we NER niet verder in dit project en probeerden we een tweede zoekstrategie.

2. Solr met proximity search

Waar we bij NER-tagging vertrekken van de bestaande teksten in de collectie van Nieuws van de Groote Oorlog, vertrekken we bij deze strategie van de namen uit de namenlijst. Solr - een open source enterprise search - maakt alle data snel doorzoekbaar. Initieel experimenteerden we met Solr omdat deze proximity search ondersteunt. Hierdoor bouw je een grotere tolerantie in voor het herkennen van de namen. Als je zoekt op ‘Jan Janssens’ met een proximity-tolerantie van één woord, zal ook ‘Jan Wilfried Janssens’ herkend worden. Deze functionaliteit leek veelbelovend, maar zorgde uiteindelijk voor te veel vals positieve matches, waardoor we er in dit project toch geen gebruik van hebben gemaakt. We kozen er wel voor om met Solr te blijven werken, aangezien deze veel sneller is dan andere geteste methods zoals o.a. binary search en database queries.

3. Solr zonder proximity search

Eens de kranten geïndexeerd waren in Solr, zochten we in die Solr-index voor elke naam in de Namenlijst in verschillende variaties naar matches in onze kranten. Zo zijn er soms meerdere voor- en achternamen beschikbaar voor dezelfde persoon, alternatieve spellingswijzen en worden er tussennamen gebruikt. Potentiële matches die gevonden worden in de kranten, worden weggeschreven in een relationele database voor verdere analyse.

Veelvoorkomende namen

Die analyse leert ons dat sommige namen - of juister, sommige combinaties van voor- en familienamen - heel vaak voorkomen. Het gaat hier over namen zoals: “Street, James”, “Wagner, Richard”, “Kaiser, Wilhelm”, “Lloyd, George”, “Marx, Karl”, "Hall, Albert”, die voorkomen in de Namenlijst maar ook een bekende tegenhanger hebben. Zo sneuvelde een naamgenoot van Richard Wagner op 20 november 1917 in Henegouwen, maar slaan de vermeldingen in de kranten niet op deze gesneuvelde maar op de ‘bekende’ Richard Wagner. Nadere analyse toonde ons dat hierdoor de kans klein is dat vermeldingen van deze ‘bekende’ gesneuvelden in de krant effectief gelinkt kunnen worden aan de corresponderende namen in de Namenlijst. Daarom werden patronen die al te frequent voorkomen, zoals deze straatnamen of locaties en bekende figuren, verwijderd uit de lijst met potentiële matches. Zo werden er uiteindelijk 152.614 links overgeslagen van 556 veel voorkomende namen.

Resultaat

Met deze acties vonden we 110.000 personen met dezelfde voor- en familienaam in de Namenlijst én in de kranten van Nieuws van de Groote Oorlog (van de 500.000 personen uit de Namenlijst). Bepaalde personen worden meerdere keren gevonden op verschillende kranten. Zo vonden we 1,1 miljoen potentiële links tussen de Namenlijst en de kranten uit Nieuws van de Groote Oorlog. Die links kwamen voor op 102.729 van de 274.924 beschikbare krantenpagina's op de website van Nieuws van de Groote Oorlog (ongeveer 37%).

Let wel: het gaat hier om potentiële links. Dezelfde voor- en familienaam is geen garantie dat het om dezelfde persoon gaat, zoals we zagen bij Richard Wagner. Daarom houden we bij het publiceren van de links met de Namenlijst ook rekening met andere factoren zoals geboortedatum.

We halen de pagina op, even geduld...