Hoe filtert Bluetick belangrijke onderdelen uit een tekst?

Thijs Kranenburg
2/10/20

Bij Bluetick zijn we erg geïnteresseerd in de nieuwste data science methodes en wat dit kan betekenen om onze zoekmachine te verbeteren. Wij hebben als doel onze zoekmachine jurisprudentie zo goed mogelijk te laten begrijpen. Voor een mens is het relatief eenvoudig om nuances uit een tekst te halen, voor een computer is dit echter een stuk moeilijker. Ik neem je mee in wat er mogelijk is en waarom dit volgens ons belangrijk is. Het onderwerp van deze blog is Named Entity Recognition.

Named Entity wat …?

Bij Named Entity Recognition is het doel een computer te leren zelfstandig naamwoorden te filteren die een individuele zaak aanduiden (bijvoorbeeld een persoon of wetsartikel). In het onderstaande voorbeeld zijn ‘De Zorgautoriteit’ en ‘Zorgverzekeringswet’ named entities. Echter is ‘verzekeraar’ geen named entity, omdat het niet een specifieke organisatie aanduidt.

“De zorgautoriteit kan een verzekeraar die verzekeringen als zorgverzekering aanbiedt of uitvoert die niet aan het bij of krachtens de Zorgverzekeringswet geregelde voldoen, een last onder dwangsom opleggen.“

Andere soorten relevante named entities zijn bijvoorbeeld: aanduidingen van uitspraken (Kelderluikarrest, ECLI:NL:RBROT:2020:2696), referenties naar wetsartikelen (artikel 1:116 Wft), organisaties (Hoge Raad, Randstad), locaties (Drenthe, Randstad), personen en richtlijnen.

Het isoleren van deze zaken zal er voor zorgen dat zoekopdrachten beter begrepen worden. Wanneer een zoekmachine bijvoorbeeld begrijpt dat ‘art. 1:116 Wft’ hetzelfde is als ‘artikel 1:116 Wft’ én herkent dat dit een citaat van een wetsartikel is, dan kunnen er resultaten worden gegeven die alle vormen bevatten waarop een wetsartikel kan worden aangeduid (dus niet exact zoals er gezocht wordt). Daarnaast is het waardevol om onderscheid te kunnen maken tussen verschillende betekenissen van hetzelfde woord. Wanneer de computer bijvoorbeeld onderscheid kan maken tussen het bedrijf Randstad en het stedelijk gebied de Randstad, dan zou de persoon die informatie zoekt over het stedelijk gebied de verfijning aan kunnen geven dat alleen deze informatie naar boven komt.

Hoe leert een computer dit te herkennen?

De meest eenvoudige vorm om ‘Named Entities’ uit tekst te halen is het bijhouden van een lijst met keywords. Dit zal redelijk goede resultaten geven. Echter kan geen onderscheid gemaakt worden tussen woorden die hetzelfde geschreven zijn, maar een andere betekenis hebben. Daarnaast zal deze lijst volledig moeten zijn en tot in de oneindigheid bijgehouden moeten blijven. Dit is onhandig.

Om dit te verbeteren maken huidige AI modellen naast het te analyseren woord gebruik van de context om te bepalen of het een named entity is of niet. De context van een term zijn de woorden die direct voorafgaand of volgend zijn op de te analyseren term.  Deze termen helpen de computer ‘begrijpen’ wat een woord in die specifieke context betekent in plaats van woorden exact te matchen. Dit is ongeveer hoe een mens dit (onbewust) ook doet.

Een model trainen gaat door middel van gelabelde data. Dit betekent dat bij een corpus (een verzameling teksten) ieder woord gelabeld is, of het een named entity is of niet. Tijdens het trainen moet het model een voorspelling maken voor de woorden in de tekst en door middel van de labels wordt bepaald of dit juist of onjuist is. Het model wordt vervolgens iets aangepast waardoor het voor dat specifieke woord beter werkt. Wanneer het genoeg voorbeelden ‘gezien heeft’, dan zal het ook goede voorspellingen kunnen maken voor tekst die het nog nooit gezien heeft. Het is echter wel belangrijk dat de nieuwe tekst analogieën bevat met de teksten waarop het model is getraind. Dit betekent dat een model getraind op Twitter data het (waarschijnlijk) een stuk minder goed doet op jurisprudentie dan op andere Twitter data.

In bovenstaande afbeelding is weergegeven hoe de labels door de computer bepaald worden met behulp van de woorden in de context. Het AI model gaat op deze manier de gehele tekst door en past zich ondertussen aan zodat het beter presteert op de voorbeelden die het tot dan gezien heeft.

Is het momenteel toepasbaar?

Er zijn veel veelbelovende data science methodes die in theorie en binnen bepaalde domeinen heel goed werken. Hoe zit dat echter met Named Entity Recognition binnen het juridische domein? Er zijn relatief succesvolle applicaties (niet per se uitgevoerd op de manier zoals hierboven beschreven) binnen het juridische domein. Voorbeelden zijn Blackstone (Engels) en LinkeXtractor. LinkeXtractor herkent voornamelijk uitspraken, wetten en bekendmakingen. Ik denk dat deze modellen al zeer goed werken, echter denk ik dat het interessant is om deze modellen uit te breiden naar bijvoorbeeld partijen in een zaak of de naam van de rechter.

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.