Blog Boekingsteksten begrijpen met Machine Learning

Boekingsteksten begrijpen met Machine Learning

Stel je hebt een sjoelbak met 100.000 stenen. Om het spannend te maken heeft deze sjoelbak geen 4 vakjes, maar 170. De kunst is om zoveel mogelijk stenen in het juiste vakje te sjoelen. Dat is in een notendop wat we met ons Machine Learning taalmodel doen. Alleen gaat het niet om een sjoelbak, maar om een financiële administratie. We pakken 100.000 boekingen en laten ons model, op basis van de boekingstekst, uit 170 grootboekrekeningnummers de juiste kiezen. We zijn nog niet klaar, maar op dit moment voorspelt het model 77% van de boekingen juist. In dit artikel vertellen we je meer over ons model en over de ontwikkeling tot nu toe.

Wat is een Machine Learning taalmodel?

Wil je op een laagdrempelige manier begrijpen wat Machine Learning is en hoe het op hoofdlijnen werkt? Lees dan hier het blog dat we daar eerder over schreven. Voor dit artikel is het van belang dat je snapt dat mensen en computers op een andere manier leren. Mensen leren – kortgezegd - door ervaringen uit het verleden. Computers 'leren' normaal gesproken door vooraf gegeven instructies (programmeercode). Machine learning is een combinatie van beide technieken. Kortgezegd is machine learning: het programmeren van een machine om te leren van ervaringen.

Een taalmodel op basis van Machine Learning is gericht op de computer laten ‘begrijpen’ van taal. Een voorbeeld: stel je wil een model bouwen waarmee je namen in boekingsteksten opspoort. Dat kun je op twee manieren doen. De eerste manier is dat je een zo lang mogelijke lijst maakt, met voor- en achternamen. Vervolgens laat je het model zoeken of er een voor- of achternaam uit je lijst in de boekingsteksten voorkomt. Dat is geen Machine Learning en kun je vrij eenvoudig in Excel. Dat kan werken tot op zekere hoogte. Een groot nadeel van werken met vooraf ingevoerde lijsten is dat je in veel gevallen niet volledig bent. Zo heeft Elon Musk zijn zoon de naam “X Æ A-XII” gegeven. Die had je vast niet op je lijst staan (laten we eerlijk zijn). Zelfs als je wel volledig bent is er een kans dat je niet volledig blijft. Wat je nodig hebt is een vleugje Machine Learning. Met Machine Learning zorg je er immers voor dat de computer zelf dingen bij gaat leren.

Wat kun je met Machine Learning in een financiële administratie?

In de financiële administratie wordt er meer en meer gebruik gemaakt van geautomatiseerde data-analyses. Voor een groot deel leent de financiële administratie zich daar immers heel goed voor. Boekhouden is voor een belangrijk deel het maken van sommen die moeten kloppen. Lopen bepaalde grootboekrekeningen op nul? Zijn alle uren geboekt? Worder er inkooporders overschreden? Allemaal analyses die puur gebaseerd zijn op rekenen. Maar je kunt nog een laag dieper...

Er is namelijk nog een wereld te winnen in het automatiseren van duiden en beoordelen. En daarvoor moet je snappen wat er inhoudelijk geboekt wordt. Of het nou de WKR is, IV3 of de beoordeling van BTW-percentages. Als de computer de inhoud van een een boekingstekst snapt, dan gaat er een wereld open van waardevolle te automatiseren analyses. Een paar voorbeelden: het detecteren van onterechte afschrijvingen (bijvoorbeeld afschrijvingen op grond), ontrechte declaraties, verkeerde WKR-classificaties (“lunch” in plaats van “zakelijke lunch”), dubbele facturen (“werkzaamheden week 43 t/m 45” versus “werkzaamheden wk 44 t/m wk 46”).

Dit soort inhoudelijke duiding vindt in de praktijk – als het al plaatsvindt - met de hand (en vaak op basis van steekproef) plaats. Het nadeel daarvan is dat het de controle duur maakt en het arbeidsintensief is (in een tijd waarin het vinden van mensen een groot probleem is). Een Machine Learning taalmodel kan die problemen oplossen.

Betekenis en structuur

Het is belangrijk om je te realiseren dat taal begrijpen bestaat uit de betekenis van woorden kennen en uit het snappen van de structuur van een zin (de context). Een voorbeeld: een molen is een ding met wieken, waarmee je graan maalt of elektriciteit opwekt. Maar als er in je boekingstekst staat: “Van der Molen 12 t/m 16 april Barcelona”, dan is molen geen ding, maar een (deel van een) naam.

Afhankelijk van de toepassing van je Machine Learning model zal je model goed moeten zijn in de betekenis van het woord, in de structuur van de zin of in beiden. Wil je met je model bijvoorbeeld controleren of reisdeclaraties overeenkomen met geschreven uren op het bijbehorende project, dan is het belangrijk dat je de periode van de reisdeclaratie kunt halen uit de structuur van de zin. Simpel gezegd als “april” een maand is, dan is in de zin “Van der Molen 12 t/m 16 april Barcelona” het stukje “12 t/m 16” de dagen binnen die maand. Dat weet je in dit geval omdat de getallen in de structuur van de zin worden gevolgd door een maand. We leren ons model de structuur van een zin te snappen door (onder andere) heel veel boekingsteksten (met de hand) te labelen. Interessant feit: bij het labelen van 25.000 boekingsteksten kwamen we 1848 manieren tegen waarop mensen een datum noteren. Variërend van 5juni2018, tot 5\3/ ’19, tot 26mrt18 en meer van dit soort pareltjes.

Wil je daarentegen je model gebruiken om grootboekrekeningen te voorspellen op basis van de boekingstekst, dan ligt de nadruk op de betekenis van woorden. Je model moet dan snappen dat een iPad een tablet is en dat tablets vallen onder de grootboekrekening “hardware”. Of er in de boekingstekst nou staat: “12 iPads april 2022” of “iPads 12 april 2022” maakt voor de betekenis van het woord “iPad” niet uit (natuurlijk zijn er altijd uitzonderingen en grijze gebieden). We leren ons model om de betekenis van woorden te begrijpen door het model te voeden met heel veel teksten. Op dit moment is het model getraind met 47 miljoen verschillende zinnen.

Waar staan we nu?

Een Machine Learning model maken is complex. Taal is ook complex. Een taalmodel maken op basis van Machine Learning is een monsterklus. En toch is het mogelijk...De huidige versie van ons model voorspelt bij een dataset van 100.000 boekingen en 170 grootboekrekeningnummers in 77% van de gevallen het juiste grootboekrekeningnummer op basis van de boekingstekst. Daarbij vergelijken we het grootboekrekeningnummer dat het model voorspelt met het grootboekrekeningnummer dat de organisatie in de praktijk zelf heeft gekozen (ten overvloede, de gebruikte data is met goedkeuring door de organisatie voor dit doel ter beschikking gesteld). Alle gevallen waarbij het model een ander grootboekrekeningnummer kiest dan de organisatie zelf, rekenen we fout. 77% is een mooie score, zeker als je kijkt naar de top 10 van onze meest voorkomende fouten (het plaatje bovenaan dit artikel). Grootboekrekening “Telefonie abonnementen” moet zijn “Telefonie toestelkosten”. Fout, maar zeker niet onlogisch. Toch kan de lat altijd hoger. De komende tijd ontwikkelen we verder aan het model, om de score nog verder te verbeteren. Ben je als leidinggevende verantwoordelijk voor de financiële administratie? Wil je vooroplopen in je vakgebied en met ons mee innoveren? Neem dan gerust contact met ons op.