Automatisch boekingsteksten snappen

Door , gepubliceerd op

We beginnen met een testje. Selecteer de datum in de volgende zin: “Aanschaf koffiepads 23-05-3019.” Om mijn punt te maken ga ik er voor het gemak even vanuit dat jij als lezer van dit blog een mens bent (en niet ChatGPT die geautomatiseerd langs komt om mijn auteursrecht te stelen). Als mens snapte je dat ’23-05-3019’ de datum in de zin was. Je snapte ook dat ‘3019’ waarschijnlijk een typefoutje was en dat de kans groot was dat ‘2019’ bedoeld werd. Voor een computer is dat veel moeilijker. Waarom dat is en waarom we desondanks al jaren veel tijd investeren in de ontwikkeling van ons eigen Machine Learning taalmodel, dat leg ik je hieronde uit. Uhm, ‘hieronder’. Verdraaide typefouten…

Wat is een Machine Learning taalmodel

Het bekendste voorbeeld van een taalmodel (in zijn meest omvangrijke variant ook wel bekend als LLM – Large Language Model) is ChatGPT. Voor de technische omschrijving verwijs ik je graag naar Wikipedia. De korte samenvatting is dat je met een taalmodel een computer de volgorde en/of betekenis van woorden of tekens laat voorspellen. Dat klinkt nog wat cryptisch. Laten we het versimpelen met een voorbeeld. Stel je hebt een kaartspel en je laat een computerprogramma de kaart (kleur en waarde) voorspellen die je trekt. Je traint je programma met een harten 6 en een ruiten 4. Het model zal dan verwachten dat de getrokken kaart rood zal zijn en ofwel een 4 ofwel een 6. De andere kaarten heeft het model immers nog nooit gezien. Met hoe meer kaarten je het model traint, hoe beter het model een voorspelling zal kunnen maken. Uiteindelijk zal het model snappen dat er 54 kaarten in het spel zitten. 13 kaarten van elke soort (schoppen, harten, klaver, en ruiten) en 2 jokers. Afhankelijk van de kaarten die al getrokken zijn, zal het model een kansberekening maken om de volgende kaart te voorspellen. Als het model bijvoorbeeld ziet dat veel harten al zijn getrokken, kan het model voorspellen dat de kans op het trekken van een andere harten-kaart lager is. Zo werkt het ook met taal. Veel te kort door de bocht: na het woord “de” verwacht je een zelfstandig naamwoord. Uiteraard is een model dat taal probeert te voorspellen een heel stuk complexer dan een model dat een getrokken kaart wil voorspellen. Omdat er oneindig veel meer varianten denkbaar zijn.

Waarom heb je binnen de financiële administratie een taalmodel nodig?

Soms kom je als administrateur of controller op transactieniveau iets raars tegen. Bijvoorbeeld: "deze factuur lijkt dubbel". Of "klopt dit bedrag wel?". Enzovoorts. In die gevallen, waar kijk je dan als eerste? Precies, je pakt de boekingstekst erbij. Omdat daar vaak net iets meer context staat. Context die je kan helpen het probleem verder te onderzoeken. Zie je een gek bedrag staan op een grootboekrekening? De boekingstekst kan je vertellen waar het bedrag betrekking op heeft. Heb je twee facturen voor hetzelfde bedrag op dezelfde datum van dezelfde crediteur? Misschien blijkt uit de boekingstekst wel dat het gaat om de inhuur twee verschillende personen. Ook als je bijvoorbeeld wil beoordelen of bepaalde kosten de juiste WKR-classificatie hebben meegekregen, dan heb je de informatie nodig uit de boekingstekst.

Het probleem is dat de informatie in boekingsteksten in de praktijk nogal een ongestructureerde bende is. Afkortingen, typefouten, lange boekingsteksten, korte boekingsteksten. De kwaliteit en structuur van de boekingsteksten in de gemiddelde administratie varieert enorm. En die boekingsteksten? Dat zijn er ook nog eens enorm veel! Veel te veel om allemaal door een mens te laten beoordelen.

Je kunt – ook zonder Machine Learning – algoritmes gebruiken om de meest opvallende zwart-wit fouten in je administratie op te sporen. Bijvoorbeeld, om te controleren of je BTW-nummers voldoen aan de VIES-check, heb je geen Machine Learning nodig. Dat is een kwestie van nummers opzoeken in de database van de EU. Maar wil je complexere analyses uitvoeren en de beoordelingstijd van je mensen zo kort mogelijk houden, dan is een Machine Learning taalmodel een essentieel hulpmiddel.

Waarom Machine Learning essentieel is voor je taalmodel

Je zou nog kunnen zeggen, waarom kan ik niet werken met lijstjes? Bijvoorbeeld, als ik voor een analyse wil weten of er een datum in een boekingstekst voor komt (om te vergelijken of twee facturen echt dubbel zijn), kan ik dan niet werken met een grote lijst met datums? Tot op zekere hoogte kan dat. Het zou zelfs heel goed kunnen, als iedere administrateur hetzelfde datum-format zou gebruiken. Bijvoorbeeld 1-3-2022 voor 1 maart 2022. In de praktijk komen we (zonder overdrijving) vele duizenden manieren tegen om een datum te noteren. 1/3/2022, 1*3*2022, 1-3 22, enzovoorts. En dan hebben we het nog niet gehad over creatieve vondsten als “augseptoktober” en typefouten (zoals ‘3019’ in de inleiding van dit artikel). Ook als je bijvoorbeeld wil weten of iets een locatie is, is het minder simpel dan het op het eerste gezicht (“ik maak gewoon een lijst met alle steden van Nederland”) lijkt. ‘29’. Kan dat een locatie zijn? Wel als het gaat om ‘gebouw 29’ of Wilhelminastraat 29. Machine Learning in je taalmodel heb je nodig om goed om te gaan met de uitzonderingen die je van tevoren zelf niet hebt kunnen verzinnen.

Het verschil tussen betekenis en structuur

De afgelopen jaren hebben we enorm veel tijd gestopt in de ontwikkeling van ons Machine Learning taalmodel. Daarbij maken we onderscheid tussen betekenis en structuur. Het is een beetje een filosofische discussie of computercode ooit echt de betekenis van dingen zal begrijpen, maar met 'betekenis' bedoelen we in dit geval dat ons model bijvoorbeeld ‘snapt’ dat een USB-stick inhoudelijk verband houdt met een computer en een toetsenbord. Dat dit alle drie begrippen zijn die vallen onder de kostensoort IT-kosten. Om die verbanden te snappen hebben we ons model getraind met enorm veel teksten. In de praktijk gebruiken we dit aspect van ons taalmodel om op basis van de boekingstekst het juiste grootboekrekeningnummer te voorspellen. Ook hier geldt weer: je zou misschien een eindje komen als je gebruik zou maken van lange lijsten met begrippen. Bijvoorbeeld: onder IT-kosten verstaan we: toetsenbord, USB, muis, laptop, ipad, enzovoorts. Maar je zult het qua volledigheid altijd afleggen tegen een taalmodel op basis van Machine Learning. Het tweede aspect is structuur. De betekenis van een begrip hangt enorm af van de context waarin het begrip staat. Het woord ‘Ommen’ in de zin ‘Jan van Ommen’ is een naam. Het woord ‘Ommen’ in de zin ‘Jan van Ommen naar Utrecht’ is een locatie. In ons model hakken we iedere boekingstekst op in stukjes. Van ieder stukje voorspelt ons model of het een naam, locatie, datum, eenheid, enzovoorts is. Een goed begrip van de structuur van de boekingstekst helpt niet alleen om onbekende elementen beter te categoriseren (bijvoorbeeld: een reisdeclaratie bevat vaak een naam, locatie en een datum), maar stelt ons ook in staat om onze algoritmes veel geavanceerder te maken. Bijvoorbeeld door in ons algoritme waarmee we dubbele facturen opsporen datum-elementen of naam-elementen met elkaar te vergelijken. Ander voorbeeld: als je in een boekingstekst kunt ontdekken wat de eenheid is, dan kun je eenheidsprijzen vergelijken. Bijvoorbeeld als 1 laptop 350 euro kost, dan is een boekingstekst ‘aanschaf 5 laptops’ tegen een bedrag van 6.000 euro verdacht.

Wat zijn de nadelen van het gebruik van ChatGPT?

Natuurlijk is het niet makkelijk om zelf een Machine Learning taalmodel te maken. Je hebt veel data nodig, het kost enorm veel tijd om die data te labelen en je hebt mensen nodig die slim genoeg zijn om zo’n model te maken. Het is dan heel aanlokkelijk om een model als ChatGPT te gebruiken. Toch zijn er belangrijke redenen om dat niet te doen. In de eerste plaats zal de data die je invoert in ChatGPT in de meeste gevallen gebruikt worden om ChatGPT verder te trainen. Daarmee komt jouw data ‘op straat te liggen’. Een tweede nadeel is dat een Machine Learning taalmodel zo goed is als de data waarmee getraind is. ChatGPT is een heel generiek taalmodel. Je kunt het model zo’n beetje alles vragen. Hartstikke handig, maar iemand die van heel veel dingen een beetje weet, is geen specialist. Je laat ook geen open hartoperatie uitvoeren door de huisarts. Ons model is bewust met name getraind op feitelijke boekingsteksten (uiteraard met medeweten en goedkeuring van de eigenaars van de data). Train je je model op andere data, dan kan dat de uitkomsten onnodig gaan vervuilen. Een voorbeeld: je wil het woord Berlijn associëren met een reisdeclaratie en niet met de Tweede Wereldoorlog.

Wil je meer weten over hoe we ons taalmodel ontwikkeld hebben of over onze concrete toepassingen in de praktijk? Neem gerust contact met ons op.

In control met onze oplossingen

We hebben verschillende producten om met algoritmes in control te komen. Om datagedreven te gaan werken en om data slim te gebruiken om continu te verbeteren.

GRATIS

Laagdrempelige manier om kennis te maken met geautomatiseerde data-analyses

Gratis

FLEX

Een maatwerk algoritme om dat ene specifieke probleem in je administratie op te lossen

Vanaf 4500

EXPERT

Een met een vakinhoudelijk expert ontwikkelde en beproefde set algoritmes op specifieke thema's

Vanaf 5000

ENTERPRISE

Een volledige suite om datagedreven continu te verbeteren met een onbeperkt aantal algoritmes

Vanaf 50000

Op de hoogte blijven?

Volg ons op  LinkedIn of lees ons blog.

Tip je collega

De kleine lettertjes

Voorwaarden

Home
Oplossingen Gratis Flex Expert Enterprise
Blog Ons verhaal Contact