Vierdaagse Linked Open Data Live!
..en we zijn live! Neem een kijkje op http://www.vierdaagselod.nl/ Je ziet archiefstukken uit het Regi...
Hoi Allemaal,
ik ben momenteel pogingen aan het wagen om een grote set aan plaatsnamen te linken aan Geonames. Het betreft een set van ongeveer 1,3 miljoen plaatsnamen, waarvan ruim 30.000 unieke.
Nu valt op dat unieke nog wel het een en ander af te dingen. De data is afkomstig uit een crowdsourcingsproject en er kunnen verschillende dingen gebeurd zijn:
twee keer invoer fout overgenomen vanuit de bron
plaatsnaam in de bron fout geschreven
plaatsnaam niet over alle bronnen heen genomen consequent geschreven
Die eerste twee lijken redelijk beperkt voor te komen, en het eerste is natuurlijk sowieso reden voor aanpassing van onze data. Ik denk dat er al met al ongeveer 25.000 plaatsnamen écht uniek zijn.
Het matchen doe ik met behulp van OpenRefine en een plugin daarop waarmee de api van GeoNames wordt bevraagd. Dat kostte even om een en ander geïnstalleerd te krijgen, en daarna ook nog wel even om de beperkingen te leren kennen.
Zo blijkt bijvoorbeeld dat als ik alle 30.000 plaatsen ga matchen ( 'reconcilen'), dat ik nauwelijks twee procent aan matches krijg. Neem ik een subset van enkele honderden plaatsnamen, dan krijg ik percentages hoog in de negentig procent. Om het vreemder te maken: 'Amsterdam' als onderdeel van de set van 30.000 wordt niet gematcht, maar als onderdeel van een kleinere set wel.
Ik loop bij het matchen tegen een aantal zaken aan:
ik moet -vooraf- een keuze maken uit de verschillende varianten
ik krijg meerdere opties terug vanuit Geonames en heb geen idee welke de correcte is
ik krijg helemaal geen suggestie vanuit Geonames
ad. 1 Het betreft hier plaatsnamen waarvan de spelling onvoldoende gestandaardiseerd lijkt of waarvan de spelling in de loop der tijd gewijzigd is. Plaatsnamen met koppeltekens zijn heel vervelend, maar de in dit bestand veel voorkomende plaatsnamen in voormalig Nederlands-Indië vormen getalsmatig ook een heel groot probleem. Voor dit soort werk is OpenRefine overigens wel erg fijn.
ad. 2 Dit komt relatief vaak voor, en meestal lijkt de eerste suggestie van GeoNames wel aanvaardbaar, maar in veel gevallen - zeker bij de Indische - heb ik echt geen idee.
Ook is de informatie in de bron soms gewoon niet goed genoeg om een keuze te maken. Wordt met "Zwaluwe" Lage Zwaluwe of Hoogte Zwaluwe bedoeld? En wat is "Zoeterwoude" precies? Een aparte plaats, of Zoeterwoude-Dorp dan wel Zoeterwoude-Rijndijk?
ad. 3 Dit komt zowel voor bij de Indische plaatsnamen, maar ook bij allerlei verdwenen Nederlandse plaatsnamen (Hof van Delft, Ambt Almelo)
De problemen zijn niet allemaal echt op te lossen, dus het is vooral een kwestie van keuzes maken en kijken of er aanvullende methodieken te gebruiken zijn.
Waar ik nu naar op zoek ben, zijn in ieder geval twee bronnen:
- een overzicht van verdwenen Nederlandse plaatsnamen, inclusief een matching aan de huidige plaatsnaam
- een overzicht van Indische plaatsnamen, bij voorkeur inclusief zo veel mogelijk spellingsvarianten, en een mapping naar de moderne schrijfwijze.
Die eerste is vooral bedoeld voor ontbrekende matches, die tweede is vooral bedoeld om de door GeoNames voorgestelde match te kunnen accorderen.
Daarnaast vroeg ik me af hoe je het beste controles uit zou kunnen voeren. Als ik bijvoorbeeld naar het bovenste resultaat kijk, dan zie je eigenlijk al aan de coördinaten dat dit niet klopt. De match blijkt (automatisch) gemaakt met de plaats Den Haag in Zuid-Afrika. Nu valt deze wel op, maar hoe doe je dit met 25-30.000 resultaten?
Plaatsnamen die meer dan één keer voorkomen in de (enorme) GeoNames-database leveren sowieso veel problemen op. Ook heb ik al gemerkt dat de bij grote buitenlandse plaatsen gebruikte Nederlandse schrijfwijzen (Keulen, Parijs) de vindbaarheid ook niet echt bevorderen, maar dat kun je GeoNames natuurlijk niet kwalijk nemen.
Voor alle verdere tips over het gebruik van OpenRefine in combinatie met GeoNames, alsmede een antwoord op de vraag waarom grotere sets slechter lijken te matchen dan kleinere, houd ik me aanbevolen.
Alvast bedankt!
Groet,
Wouter
Reacties
Hoi Wouter,
Ik had niet gedacht dat het probleem met matchen zo groot zou zijn! Op 18 januari j.l. heeft NDE in het kader van de Hackalod een sessie georganiseerd over Geo en LOD. Hieronder de link.
https://hackalod.com/index.php/2021/01/18/geo-bijeenkomst-terug-kijken-lezen-over-hisgis-world-historical-gazetteer-en-erfgeo/
Je kunt zo ook contact zoeken met degene die aan deze bronnen werken, de World Historical Gazetteer is een interessant geo project. Mogelijk hebben zij ook oplossingen voor het probleem.
Ha Wouter,
Voor de Nederlandse namen moest ik denken aan Van de Aa's Aardrijkskundig Woordenboek der Nederlanden. Ik kon zo snel geen lijst van namen uit die werken vinden, maar wellicht heeft het CBG dat, want die hebben dat ooit eens omgezet naar een CD-ROM uitgave (alhoewel ik bang ben dat ze vooral lijsten met familienamen zullen hebben...).
Het Woordenboek is wel per deel als pdf te downloaden (zie mijn eerste link), maar dan moet je nog wel het eea bewerken.
Wouter,
Herkenbare problemen. Onder andere op Genealogie Online probeer ik alle genoemde plaatsen in de aangeleverde stambomen te koppelen aan Geonames. Ik kan geen percentage noemen van het aantal geslaagde matches, maar weet dat er een aanzienlijk gedeelte niet kan worden gematched. Los van de schrijffouten heb je soms ook te weinig informatie (welke Heikant zou er bedoeld worden?).
Ik heb geen ervaring met de door jou gebruikte plugin, maar in het zelf gerealiseerde geautomatiseerde "reconciliatie proces" helpt het enorm als je de zoekvraag kunt verfijnen met land/provincie/gemeente dan wel het type plaats (Geoname's Feature Class). Door bijv. de aanname te doen dat een plaats in Nederland ligt (tenzij er bijv. ,US staat) vind je sneller één Amsterdam.
Er blijven een boel plaatsen over die dus niet één match kennen. Voor een deel leg ik deze terug bij de gebruiker met het verzoek om bijv. provincie en land toe te voegen. Voor andere een deel worden de plaatsen toegevoegd aan een uitvallijst die met de hand wordt "weggewerkt".
Wat daarbij helpt is de website gemeenteschiedenis.nl voor de "oude plaatsnamen".
Er moet overigens gezegd worden dat Geonames ook oude/niet meer bestaande plaatsnamen kan bevatten, maar in de praktijk heel weinig...
In aanvulling op de tip van Ed, in de presentatie wordt ook https://erfgeo.nl/ genoemd als handige bron.
Wouter,
naast de door Bob aangehaalde context van land, provincie, gemeente, zou je ook gebruik kunnen maken van de afstand tot Den Haag. Ik ga er voor het gemak even van uit dat de bron Haags is met personen uit de hele wereld afkomstig.
Binnen geonames zijn er webservices die relaties bevatten (siblings, children, contains etc.). Benut deze om meer te doen dan alleen tekst-analyse. Als de plaatsen ook binnen jouw dataset gelinkt zijn aan bron(tekst)en, dan is het ook nog iets om de aanname te doen dat plaatsen in dezelfde bron (akte) meestal bij elkaar zullen liggen. Het aantal kandidaten voor Heikant uit Bobs voorbeeld is dan wellicht terug te brengen tot een behapbare set. Geef elke match daarnaast een score mee van hoe betrouwbaar je denkt dat die is. Dat helpt ook om kandidaten te sorteren.
Dank alvast voor de tips allemaal!
Ik ben inderdaad ook bezig met https://erfgeo.nl/, maar daarvan werkt de achterliggende api (momenteel) niet, dus daar heb ik nog geen resultaten van. Bij http://www.whgazetteer.org was de registratie stuk, dus daar kon ik ook nog niets mee.
Ook ben ik met een tweede manier bezig om data uit Geonames te halen via Openrefine. Dat gaat wel een flink stuk drager dan de service die ik de eerste keer gebruikte, wellicht omdat die eerste service eigenlijk als het ware een lokale retrievalserver lijkt op te zetten, terwijl de tweede via de Erfgoedproxy werkt. Scheelde wel een hoop aanvankelijk gedoe.
Een kleine 700 records matchen duurde al een kleine twee uur, dus de volledige set van 30.000 lijkt me een flinke uitdaging. Die tweede manier is wel erg slecht met plaatsnamen in het buitenland, maar het is nog niet helemaal duidelijk waar dat precies aan ligt.
De resultaten waren van wisselende kwaliteit. Ik vond nu een aantal plaatsnamen wel die ik in eerste instantie niet vond, maar ook andersom. Daarnaast was de kwaliteit van de treffers ook niet altijd je-van-het, bij 'Amsterdam' en 'Rotterdam' kreeg ik bijvoorbeeld niet de plaats zelf maar een of andere administratieve eenheid.
@ Bob: Het liefst zou ik inderdaad meer dan alleen de plaatsnaam meenemen in de zoekvraag, maar eigenlijk heb ik die gegevens niet. Landgegevens waren vaak al niet aanwezig in de bron en ze zijn sowieso niet overgenomen.
Wat wel een mogelijkheid blijft is om getrapt te werken: eerst een match tegen een dataset met uitsluitend Nederlandse lokatienamen (te downloaden via GeoNames), daarna eventueel nog die van een paar andere kansrijke landen, en dan het overgebleven deel matchen tegen de gehele database.
(Overigens mis ik wel een downloadbare Europese dataset, maar het is niet anders. Ik ben nog wel even aan de slag geweest met de complete dataset in csv-vorm, maar die bevat 12 miljoen regels en geen goede scheidingstekens, dus dat is zonder goede eigen database-omgeving niet te doen :))
@ Jules: dat klinkt als een mooi plan voor een vervolg, maar voor dit moment nog wel als een iets te grote uitdaging. Ik denk dat je aannames wel kloppen, alleen verstoort het voormalige Nederlands-Indië waarschijnlijk het nodige, dat ligt dichter bij Zuid-Afrika dan bij Nederland :)
Anyway, het is een leuke uitdaging en uiteindelijk gaat dit ook naast een hoop kennis ook wel iets bruikbaars opleveren.
Wordt vervolgd...
Samen met het BHIC zijn we bezig om de plaatsnamen in het genealogisch component van Picturae te koppelen aan Geonames. Dat willen we graag om het zoeken in een regio mogelijk te maken.
Dus daar kun je mogelijk ook terecht voor extra input.