Taalsoftware voor nieuwe Nederlanders die lastiger leren – update 1

Voor mensen die een nieuw leven starten in Nederland is het leren van de taal een van de belangrijkste, zo niet de belangrijkste factor voor succesvolle deelname aan de samenleving. De taal is de sleutel voor bijna alles: relaties, werk op niveau, maatschappelijke participatie, etcetera. Als je de taal niet goed spreekt, dan is het vrijwel onmogelijk om echt verder te komen op deze gebieden.

Voor een specifieke groep nieuwe Nederlanders is dit een extra grote opgave. Hiermee bedoel ik de mensen die weinig basisopleiding hebben en dus minder ervaring hebben hoe je effectief kunt leren. Zij hebben geen kennis van een goede steuntaal (zoals Engels) die het leren makkelijker maakt. Dit zorgt ervoor dat de beste tools en materialen niet toegepast kunnen worden.

De beste weg vooruit voor deze groep mensen is veel persoonlijke aandacht van een goede NT2-docent. NT2-docenten zijn echter schaars en veel persoonlijke aandacht is duur. Daarom heb ik in mijn werk bij Grenzeloos Maastricht vaak gewenst dat er een goede app bestond die specifiek op deze groep gericht was. Die heb ik tot nu toe echter niet gevonden. Er zijn uiteraard veel handige websites en tools, maar niet echt een totaaloplossing gericht op de specifieke behoeften van deze groep.

SIDN fonds to the rescue

Daarom heb ik een aantal maanden geleden het plan opgevat om zelf te gaan bouwen. Ik vroeg het SIDN fonds of zij mij hierin wilden steunen, en dat deden ze. Dus kon ik het prototype gaan realiseren.

Dit zijn de uitgangspunten waarmee ik van start ben gegaan:

  1. Het leren moet kunnen gebeuren zonder steuntaal. Dit betekent dus dat vertaling naar de moedertaal een optioneel onderdeel is, en dat de basisstructuur zonder deze component moet functioneren.
  2. Opdrachten moeten automatisch gegenereerd kunnen worden. Dus niet handmatig door mensen geschreven worden (slecht schaalbaar en duur).
  3. Een algoritme moet op basis van iemands leerhistorie kiezen welke nieuwe opdrachten het meest passend zijn. Dit algoritme moet effectieve leermethoden toepassen, zoals gespreide herhaling, wisselen van oefenvormen en ‘moeitevolle oefeningen’. Zie dit boek voor meer info.
  4. Het lesprogramma en de voortgang moeten overzichtelijk zijn. Het moet bijvoorbeeld voor iemand die probeert op niveau A1 te komen simpel zijn om te zien welke gebieden er nog te leren zijn en hoe ver hij/zij daarmee is.

In het vervolg van dit artikel leg ik uit hoe ik tot nu toe te werk ben gegaan. Als je de meer technische info niet interessant vindt maar wel op de hoogte wilt blijven van dit project, schrijf je dan even in voor mijn nieuwsbrief:



De details, tot nu toe

Om automatisch opdrachten te kunnen maken is het nodig om gestructureerde data te hebben van de Nederlandse taal. We moeten bijvoorbeeld automatisch kunnen herkennen of een woord een werkwoord of een zelfstandig naamwoord is, of je ‘de’ of ‘het’ gebruikt, hoe vaak een woord gebruikt wordt, hoe concreet of abstract een woord is, en nog tientallen andere zaken.

Na wat zoekwerk kwam ik erachter dat wij gezegend zijn met het Instituut voor de Nederlandse Taal die al deze dingen voor ons beschikbaar heeft. Goed nieuws dus tot zover. Ik heb flink wat werk moeten steken in het anders structureren en samenvoegen van verschillende datasets (met name e-Lex en RBN, voor de geïnteresseerden), maar uiteindelijk ben ik tot een erg goed bruikbaar resultaat gekomen.

Vervolgens wil je eigenlijk ook zinnen kunnen analyseren om te herkennen welke woorden erin staan, zodat je bijvoorbeeld automatisch zinnen bij elkaar kunt zoeken met een sterk werkwoord erin en daar invulopdrachten van kunt maken. Je raadt het al: ook hier staan we op de schouders van reuzen, in dit geval specifiek de reuzen Ko van der Sloot, Maarten van Gompel, Antal van den Bosch en Bertjan Busser. Zij maakten het programma frog, die elke Nederlandse zin voor mij transformeert naar data waar ik iets mee kan. Met het enigszins bijschaven van mijn python-skills en een aantal dagen naar foutmeldingen staren was mijn Tagger-Lemmatizer-Morphological-Analyzer-Dependency-Parser operationeel.

De volgende opgave was beeldmateriaal. Hiervoor vond ik de prachtige dataset Visual Genome. Deze bestaat uit duizenden afbeeldingen met allerlei relevante informatie: objecten, relaties in de foto en vragen en antwoorden over de foto. Een ideale basis dus. Het enige minpuntje was dat de makers deze set in het Engels gerealiseerd hadden in plaats van het alom geprezen Nederlands. Deze moest dus vertaald worden. Na wat experimenteren is duidelijk dat Deepl hiervoor de beste resultaten levert, zeker als je deze vertaalmachine wat helpt om context rondom woorden te creëren. Een erg waardevol en duidelijk (gratis) boek van Dan Jurafsky en James H. Martin hielp me enorm om meer te begrijpen van het functioneren van dit soort AI-modellen voor vertaling, waardoor ik de resultaten nog wat kon verbeteren. Er moet helaas voor sommige aspecten alsnog een handmatige controle overheen, maar het geeft me een goede basis.

De software zelf bouw ik met Laravel. Dit omdat dat een robuust framework is waar schaalbaar mee ontwikkeld kan worden. Mijn prioriteit voor dit prototype is om snel zaken live te krijgen die ik kan testen bij de trainees van Grenzeloos. Dus bouw ik een web interface waarvoor ik Inertia (en dus Vue) gebruik. Daarnaast zorg ik ervoor dat dit later goed uit te breiden is met een mobiele app, omdat de meeste gebruikers uiteindelijk via een smartphone zullen oefenen. Deze bouw ik met React Native.

En vervolgens…

Mijn prioriteit is nu om vanuit deze basis functionaliteit live te krijgen die getest kan worden door onze trainees. Ik begin hierbij met concrete zelfstandige naamwoorden die het best af te leiden zijn uit afbeeldingen en bouw vanuit die basis verder naar abstractere concepten. Er is dus meer werk nodig om opdrachten verder te definiëren. Ook is voor sommige aspecten handmatige controle nodig, bijvoorbeeld om te checken of afbeeldingen correct aan woorden worden gelinkt.

Verder werk ik de komende tijd aan:

  • het algoritme dat bepaalt welke opdracht als volgende komt
  • het inzien van je voortgang
  • de UX
  • een doorzoekbare database van woorden met informatie over betekenis en functie
  • gelinkt aan de woorden, uitleg over grammatica

en in de verdere toekomst:

  • uitzoeken in hoeverre ik spraakherkenning kan toepassen om uitspraak te testen
  • text-to-speech functionaliteit
  • video’s als onderdeel van het lesmateriaal
  • toegankelijkheid

En niet te vergeten, een naam voor dit alles.

Heb jij goede ideeën, specifieke vragen of andere belangrijke zaken te bespreken? Wil je meehelpen met het controleren en verbeteren van de data en opdrachten? Laat dan een reactie achter of stuur me even een mailtje.

Wil je een update krijgen als de beta-versie live staat? Schrijf je dan even in voor mijn nieuwsbrief:

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.