Hoe een computer broodjeaapverhalen leert categoriseren

Door Myrthe Reuver

Een onderzoeksproject naar het automatisch met de computer indelen van broodjeaapverhalen, hoe gaat dat eigenlijk? Voor mijn onderzoeksstage met de Volksverhalenbank van het Meertens Instituut heb ik geprobeerd de computer te leren broodjeaapverhalen in verschillende typen in te delen.

Broodjeaapverhalen zijn de oorspronkelijke ‘virale verhalen’. Spannende, vaak enge of afschrikwekkende verhalen die zich verspreiden van mond tot mond - of van emailbox tot emailbox. Het Meertens Instituut heeft ongeveer 3.000 van dit soort verhalen in de Volksverhalenbank. Een goed voorbeeld is “de babysitter en de man boven”, een verhaal waar een babysitter tv kijkt in het huis van een familie bij wie ze oppast. In verschillende versies van het verhaal worden de kinderen op de bovenverdieping vermoord, of de oppas zelf.

De setting van deze verhalen is altijd modern, en dichtbij: het zou kunnen gebeuren met jou, je zus, of je neef. Ze worden vaak jarenlang doorverteld. Broodjeaapverhalen hoeven niet geheel onwaar te zijn: de details zijn soms geheel of gedeeltelijk echt gebeurd. Emoties voeren vaak de boventoon. Volgens sommige theorieën helpen broodjeaapverhalen mensen om te gaan met veranderingen in de samenleving, zoals nieuwkomers en technische ontwikkelingen.

Verhaaltypen

Jan Harold Brunvand, een Amerikaanse folklorist, merkte op dat broodjeaapverhalen ook nog andere dingen gemeen hebben. Naast de bovenstaande gemeenschappelijke kenmerken zijn er ook gemeenschappelijke verhaaltypen. Hij bestudeerde duizenden verhalen, en vond dat zij samenvielen in 10 hoofdtypen (bijvoorbeeld “CAR”, verhalen over auto’s, of “ANIMAL”, verhalen over dieren), met in elk hoofdtype ook een handvol subtypes (“CAR HORROR”), waar vervolgens ook weer specifieke plots in zitten (“De afgerukte hand in de auto”).

Alle verhalen in de Verhalenbank hebben een BRUNVAND-indexnummer. Deze zijn aan de verhaaltypen gekoppeld door het Meertens Instituut. Het is namelijk handig en interessant om te weten welke verschillende verhalen tot hetzelfde type behoren. Zo’n indeling kan ook helpen met het vergelijken van verhalen. Het is dus een hulpmiddel om broodjeaapverhalen te analyseren en te onderzoeken.

Als er nu een nieuw verhaal binnenkomt op het Meertens Instituut, moet iemand analyseren tot welk specifiek Brunvand-indexnummer het verhaal behoort. Mensen lezen een verhaal dan uitgebreid door, en gebruiken hun ervaring met eerdere verhalen om te kijken welk verhaaltype er het dichtst bij ligt. Een computermodel kan echter ook verhaaltypen leren indelen, maar doet dit anders. Zo’n computermodel leest het verhaal niet als geheel, maar telt allereerst de woorden en hoe vaak bepaalde woorden in verhalen voorkomen. Het is dus een heel andere manier van “lezen”.

Het algoritme trainen

Een machine learning-algoritme krijgt een heleboel voorbeelden van verhalen die ingedeeld zijn in een bepaald verhaaltype. Het algoritme plaatst al deze voorbeelden in een multidimensionale ruimte waaruit duidelijk wordt welke verhalen op elkaar lijken en welke niet. Daarna is er een soort plattegrond van broodjeaapverhalen: de teksten met bepaalde waarden horen bij bepaalde verhaaltypen. Het model ontdekt vervolgens grenzen: waar in deze multidimensionale verhalen zitten “HORROR” verhalen? En waar zitten “ANIMAL” verhalen?

Met dit getrainde model kunnen we vervolgens nieuwe broodjeaapverhalen classificeren. We geven het model een totaal nieuw broodjeaapverhaal, en geven het model de opdracht om het juiste verhaaltype erbij te vinden. Vervolgens kan het model dat razendsnel, en soms beter dan mensen, door het verhaal in die multidimensionale ruimte te plaatsen en te kijken of het dichtbij “HORROR” verhalen ligt, of juist dicht bij “CAR” verhalen.

Ruis in de data

De aanname van het classificatie-model is dat de verschillende verhaaltypen allemaal een uniek woordgebruik hebben. “CAR” broodjeaapverhalen zullen vooral woorden hebben over auto’s, “ACADEMIC” zullen voornamelijk vol staan met woorden als “school”, “campus” en “universiteit”. Meestal werkt deze simpele aanname erg goed (sommige broodjeaapverhalen worden 80 tot 90 procent van de tijd juist herkend!), maar soms leiden ze ook tot verwarring.

Het Meertens instituut krijgt namelijk broodjeaapverhalen uit verschillende bronnen: interviews, krantenartikelen, en zelfs e-mail. Een serie interviews over voedsel heeft bijvoorbeeld vaak het woordje “uhm”. Het model leert dan van de data dat “uhm” een kenmerk is van voedsel-broodjeaapverhalen, omdat deze vaak “uhm” in de tekst hebben. Om dit te voorkomen, moeten we de data schoonmaken. Dat wil zeggen: we moeten ervoor zorgen dat het model niet in de war kan raken door dit soort (spreek)taal-elementen. Deze woorden moeten dus verwijderd worden uit de woordenlijst waarmee een broodjeaap-categorie voorspeld wordt.

Interactieve demo

Maar ook na het opschonen waren de resultaten waren nog niet voor elk type even goed. Zo bleek dat sommige verhaaltypen, zoals “poedel in de magnetron”, bijna perfect herkend werden door het model, en andere verhaaltypen  zoals “toerist horror verhaal” heel slecht. Dit kwam doordat de eerste categorie meer eenduidige verhalen opleverde, de tweede was meer een soort restcategorie: dit verhaal kan zich vrijwel overal afspelen, met allerlei enge gebeurtenissen, met als enige gemene deler dat er iets ergs met toeristen gebeurt. Het model vond dat (te) lastig om te onderscheiden van andere verhalen, en in één type in te delen.

Om het model te verbeteren, hebben we nu een demo ontwikkeld. Als de bovenste categorie wel correct is (“CAR”), maar de subcategorie bijvoorbeeld niet, kunnen gebruikers het model zelf corrigeren door onderaan de pagina een interactieve boom van broodjeaapverhalen te verkennen. Zij kunnen vervolgens zien welke subcategorieën er onder “CAR” vallen, en welke verhaaltypen weer onder die subcategorieën vallen. Zo vullen model en mens elkaar aan om de verhalen toch correct te classificeren, met behulp van de hiërarchie van de verhaaltypen.

Dit is een verkorte versie van een artikel dat op 10 oktober 2019 verscheen op Neerlandistiek