Hoe leert een computer de betekenis van zinsdelen herkennen?

Bij Bluetick zijn we erg geïnteresseerd in de nieuwste data science methodes. Daarom neem ik je mee in de wondere wereld van wat er mogelijk is en waarom dit volgens ons belangrijk is voor een juridische zoekmachine. Voor een mens is het namelijk relatief eenvoudig om nuances uit tekst te halen, voor een computer is dit echter een stuk moeilijker. Het onderwerp van deze blog is het creëren van n-grams.
Wat zijn n-grams?
N-grams zijn samenvoegingen van twee of meer woorden tot één term door de computer. Op deze manier kunnen zinsdelen of namen kunnen worden herkend. Een voorbeeld is dat de drie woorden ‘Raad’, ‘van’ en ‘State’ worden samengevoegd tot ‘Raad van State’. Door deze termen samen te voegen kan de computer een andere betekenis geven aan dit instituut. Dit is bijzonder belangrijk in het recht waar specifieke termen een grote juridische impact kunnen hebben. Denk bijvoorbeeld aan ‘goed bestuur’, ‘natuurlijk persoon’ en ‘algemene vergadering van aandeelhouders’.
Door het goed kunnen samenvoegen van woorden tot langere termen worden Artificial Intelligence (AI) modellen die dit gebruiken beter omdat ze de tekst beter begrijpen. Een voorbeeld van zo’n AI model is de zoek verder knop die wij bij Bluetick hebben geïmplementeerd. Door middel van deze knop kunnen vergelijkbare uitspraken van een gevonden uitspraak worden gevonden. Het model gebruikt de volledige tekst van een uitspraak als zoekopdracht en vindt uitspraken die vergelijkbare inhoud bevatten.
Naast verbeterde AI modellen wordt het door het gebruik van n-grams mogelijk om synoniemen voor samengevoegde termen te bepalen. Een voorbeeld is dat synoniemen van ‘algemene vergadering van aandeelhouders’, ‘ava’ en ‘aandeelhoudersvergadering’ zijn. Deze resultaten zouden niet terugkomen als synoniemen van elk los woord (‘algemene’, ’vergadering’, ‘van’ en ‘aandeelhouders’) berekend wordt.
Een bijkomend voordeel is dat de justitiethesaurus die door de overheid is samengesteld eenvoudig gecombineerd kan worden met de synoniemen die wij op een data-gedreven manier hebben gevonden. Hierdoor kunnen wij de synoniemen (en gerelateerde termen) uit de thesaurus (die veelal uit meerdere woorden bestaan) uitbreiden naar een grotere vocabulaire en dus suggesties doen voor termen die niet in de thesaurus staan.
Hoe leert een computer dit te herkennen?
Waar de techniek van mijn vorige blog (zie hier) dermate complex is dat de onderzoekswereld niet exact begrijpt waarom en hoe het werkt is dat bij het creëren van n-grams een stuk eenvoudiger. Er bestaan meerdere methodologieën om n-grams te maken, maar de meeste gebruikte is als volgt. Stel dat we n-grams willen maken van maximaal twee woorden met behulp van een corpus (een verzameling teksten) waar de volgende zin in staat:
De Afdeling bestuursrechtspraak van de Raad van State: bevestigt de aangevallen uitspraak.
De n-grams worden: ‘De Afdeling’, ‘Afdeling bestuursrechtspraak’, ‘bestuursrechtspraak van’, ‘van de’, ‘de Raad’, ‘Raad van’, ‘van State’, ‘State bevestigt’, ‘bevestigt de’, ‘de aangevallen’, ‘aangevallen uitspraak’. Als we al deze n-grams zouden gebruiken wordt de corpus enorm groot, dus filteren we n-grams die niet interessant zijn hieruit (bijvoorbeeld ‘van de’).
Er wordt een score berekend die bepaald hoe vaak twee woorden elkaar opvolgen geschaald met hoe vaak de woorden los van elkaar in de verzameling teksten voorkomen. Wanneer woorden elkaar vaak opvolgen en relatief weinig los van elkaar voorkomen dan zullen ze een hoge score krijgen. Op basis van deze score kan een grens worden getrokken bij het aantal n-grams dat wordt gebruikt. Wanneer het goed werkt, zullen in de bovenstaande tekst alleen de volgende n-grams worden behouden: ‘Afdeling bestuursrechtspraak’, ‘Raad van’, ‘van State’, en ‘aangevallen uitspraak’. Wanneer vervolgens ook langere samenvoegingen worden geaccepteerd zal ‘Raad van’ en ‘van State’ ook worden samengevoegd tot ‘Raad van State’.
Hoe goed werkt het momenteel
Bovenstaande methode werkt over het algemeen goed genoeg (lees: niet perfect). In bovenstaande voorbeeld is er bijvoorbeeld een grote kans dat de term ‘State bevestigd’ ook behouden blijft omdat bovenstaande zin een redelijk standaard zin in de Nederlandse rechtspraak is. Een andere moeilijkheid is bijvoorbeeld het feit dat er soms tussen samengevoegde termen andere woorden zitten. In het volgende voorbeeld zou je twee keer de term ‘ongegrond verklaard’ willen creëren: ‘ongegrond verklaard’ versus ‘ongegrond heeft verklaard’. Je zal dus ruimte willen geven om termen over te slaan bij het creëren van n-grams. Dit is mogelijk, echter wordt het er wel complexer van.
Door middel van deze specifieke oplossing laat ik zien dat tekst complexer is dan het op het eerste oog voor mensen lijkt. Echter door het combineren van complexe en simpele technieken kunnen we computers steeds beter deze teksten laten begrijpen. Hierdoor zal het zoeken naar uitspraken significant eenvoudiger worden vergeleken met de bestaande oplossingen.
Ik hoop dat deze blog een interessant kijkje achter de schermen van (juridische) zoekmachines biedt. Dit is een korte en eenvoudige uitleg over een behoorlijk complex onderwerp en ik ben dus genoodzaakt om (belangrijke) nuances weg te abstraheren. Mocht je meer willen weten over dit onderwerp, verder willen discussiëren of meer informatie willen hebben dan ben ik bereikbaar op thijs.kranenburg@bluetick.nl.