Je erfgoed onderzoeken met behulp van grote taalmodellen
De doorbraak van ChatGPT en andere Large Language Models opent een nieuw scala aan mogelijkheden voor de archiefsector, omdat het grootste deel van de archiefpraktijk bestaat uit het analyseren van tekst en het creëren van toegang tot de bronnen. In deze blog verkennen we de praktische toepassing van GPT-modellen op het indexeren van de burgerlijke stand voor de periode 1811-1922.
Vorig jaar plaatsten we een blog over het gebruik van AI binnen het Stadsarchief Amsterdam. We gebruiken het voor tekstherkenning, meestal handgeschreven, en voor het ophalen van informatie, met name Named Entity Recognition. De doorbraak van ChatGPT en andere Large Language Models opent een nieuw scala aan mogelijkheden voor de archiefsector, omdat het grootste deel van de archiefpraktijk bestaat uit het analyseren van tekst en het ontsluiten van de bronnen. In deze blog verkennen we de praktische toepassing van GPT-modellen op het indexeren van de burgerlijke stand voor de periode 1811-1922.
De burgerlijke stand indexeren
Grote taalmodellen zoals GPT kunnen tekst genereren op een gegeven invoer. De input kan een vraag zijn om vrijelijk een stuk tekst over een bepaald onderwerp te genereren, maar je kunt ook een stuk tekst aanleveren en het model het laten analyseren en gevraagde informatie over de aangeboden tekst teruggeven: zoals een samenvatting of wat geëxtraheerde informatie. In 2022 werkten we nog aan Named Entity Recognition-modellen, die entiteiten zoals personen en locaties kunnen vinden in lopende tekst. Maar het leek veel moeilijker om ook de rol van de persoon of locatie te herkennen. Bijvoorbeeld of de persoon de afzender van een brief is, of dat een locatie een geboorteplaats is. GPT-modellen lijken veel beter om te gaan met de context waarin een entiteit verschijnt.
Veel klanten van het Stadsarchief Amsterdam doen genealogisch onderzoek en zijn op zoek naar informatie over hun voorouders. De meeste van deze informatie wordt bewaard in registers die vaak zijn bijgehouden door lokale en religieuze autoriteiten. Al zolang het Stadsarchief Amsterdam bestaat, werken mensen aan indexen voor deze registers. Eerst op kaartsystemen en de laatste decennia zijn ze gedigitaliseerd, meestal handmatig door gewoon over te typen in een computer. De burgerlijke stand van de gemeente voor de periode 1811-1922 is het grootste hiaat dat we hebben.
Het bevat meer dan 3 miljoen akten van geboorte, overlijden en huwelijk voor de periode 1811-1922. De akten bevatten veel informatie over de mensen die geboren, overleden of getrouwd zijn, bijvoorbeeld wie hun ouders of familieleden waren, wat hun beroep was, waar ze woonden en hun leeftijd. Een paar jaar geleden hebben we berekend hoeveel tijd het ons zou kosten om de digitale index handmatig te maken en we schatten dat het ons meer dan 9 jaar zou kosten. We zijn er dus nog niet aan begonnen. Alle akten zijn digitaal beschikbaar op onzewebsite , maar niet doorzoekbaar, omdat het slechts afbeeldingen zijn van pagina's uit de fysieke registers. Voor de goede orde: het lijkt misschien een gevoelige kwestie om met persoonlijke gegevens en AI (platforms) te werken, maar wij werken alleen met gegevens van mensen die meer dan een eeuw geleden geboren zijn. De archiefwet vereist dat alle overheidsinformatie die relevant is voor historische reconstructie wordt gepubliceerd. Om er zeker van te zijn dat we de privacy van mensen respecteren, wordt persoonlijke informatie altijd beperkt tot honderd jaar na de vermoedelijke geboortedatum van de betreffende personen. Sinds 2022 heeft het Centraal Bureau voor Genealogie een register van overledenen dat kan worden gebruikt om te controleren of iemand echt dood is voordat de persoonlijke informatie wordt gepubliceerd.
Herkenning van handgeschreven tekst
Ons project begint met het maken van digitale transcripties van alle akten. Daarom zijn we begonnen met handgeschreven tekstherkenning op alle afbeeldingen van de akten in de burgerlijke stand. We hebben een model voor de lay-outherkenning verfijnd, zodat de afzonderlijke akten met marginalia op een dubbele pagina kunnen worden herkend en de tekst op volgorde blijft. We hebben ook een tekstherkenningsmodel verfijnd zodat het zowel geschreven als getypte tekst beter herkent, omdat deze registers voorgedrukt en met de hand ingevuld werden. De verwerking van de afbeeldingen zal zeer binnenkort beginnen. Voor de verwerking van HTR werken we samen met Transkribus. Dit is een coöperatieve organisatie van voornamelijk Europese openbare instellingen zoals bibliotheken, universiteiten en archieven. Het Stadsarchief Amsterdam is ook lid.
Op hun website kun je via de volgende link alle documenten bekijken die we al doorzoekbaar hebben gemaakt via Transkribus.
Gestructureerde data
Zoals gezegd kon ChatGPT personen en hun rollen herkennen in een beschrijving. Maar wat kan het met een transcript van een geboorteakte? Als daarom wordt gevraagd, kan ChatGPT alle persoonlijke gegevens uit het afschrift geven en geeft het je een mooie lijst.
Dit is al een wereld van verschil met wat we konden doen met de NER-modellen in 2022. De modellen van spaCy kunnen datums en leeftijden herkennen, maar ze kunnen geen onderscheid maken tussen de geboortedatum en de datum van de akte, of herkennen welke leeftijd bij welke persoon hoort. Wat nog interessanter is, is dat ChatGPT gestructureerde gegevensformaten zoals JSON kan retourneren die we kunnen hergebruiken en toevoegen aan onze bestaande indexen. Toen we ChatGPT vroegen om een JSON-object van het document terug te sturen met gespecificeerde velden en datumvelden als datums, leeftijden als getallen en de geografische coördinaten van het geboorteadres.
Het is fascinerend om te zien dat het model 'des na middags ten vier ure' (vier uur 's middags) kan vertalen in 16:00:00 uur. ChatGPT legt desgevraagd uit dat het is getraind op de gegevens van Google Maps en OpenStreetMap en dat het de coördinaten uit zijn trainingsgegevens heeft gehaald. Bij controle met OpenStreetMap wijken de coördinaten een paar seconden af. Google Maps brengt je naar een heel ander coördinaat als je ernaar zoekt. ChatGPT staat erom bekend dat het dingen verzint, dus het zou verstandig zijn om hier wat extra onderzoek naar te doen. Wat zeker is, is dat ChatGPT (nog) geen rekening houdt met eventuele straatvernummeringen in het verleden. Het zou bijvoorbeeld geweldig zijn als we een LLM konden koppelen aan een database met historische adressen zoals AdamLink om de coördinaten te krijgen voor een bepaald adres in de 19e eeuw.
Opschalen
Het zou nog steeds een heel gedoe zijn om elke akte handmatig naar ChatGPT te sturen, maar OpenAI biedt ook een betaalde API-dienst. Met deze service zou het mogelijk moeten zijn om de 3 miljoen akten in ongeveer 150 dagen te verwerken. Dat is veel sneller dan de 9 jaar die het handmatig zou kosten. De gemeente Amsterdam wil haar gegevens echter liever niet delen met bedrijven als OpenAI. Daarom onderzoeken we open-source oplossingen die lokaal kunnen worden uitgevoerd. Met een framework als LangChain en modellen op Hugging Face lijken er mogelijkheden te zijn. We onderzoeken welke middelen nodig zijn om de akten in een aanzienlijke hoeveelheid tijd te verwerken. Tijdens het jaarlijkse congres voor archiefinstellingen in Nederland op maandag 12 juni 2023 hebben we collega-instellingen uitgenodigd om samen te werken aan een openbaar platform voor taalverwerking. Dit was onze eerste uitnodiging om samen te werken en we hebben nog veel uit te werken voordat we een publiek beschikbare doorzoekbare index hebben. Als je een publieke organisatie bent die de krachten wil bundelen, laat het ons dan weten en neem contact met me op via n.verhoeff@amsterdam.nl!
*Dit artikel is oorspronkelijk geplaatst als blog in de blogserie Bronnen in Bytes van het Stadsarchief Amsterdam We hebben het vertaald en bijgewerkt met de meest recente inzichten.
Bronvermelding ©
- Sorting based on urban heritage