
Wat is natural language processing?
Van spamfilter tot zoeken op betekenis: wat NLP is, waarom taal lastig is voor een computer, en hoe wij het inzetten op openbare overheidsteksten.
Uitgelegd
Wat is natural language processing?
"Hey Siri, kan je Björn bellen?" Dat is het standaardcommando van onze data scientist Gaetana Ruggiero als ze vastloopt op een programmeerprobleem. En daarmee zet ze, zonder erbij na te denken, een stuk taaltechnologie aan het werk.
Herken je dat een mail per ongeluk in je spamfolder verdwijnt? Dat is hetzelfde vakgebied. En dat een zoekmachine snapt wat je bedoelt terwijl je iets anders typte, ook. Natural language processing, afgekort NLP, is de tak van techniek die computers laat werken met menselijke taal, en het zit inmiddels overal in.
Dit stuk legt uit wat het is, waarom het moeilijker is dan het lijkt, en wat wij ermee doen.

Drie dingen die je dagelijks gebruikt
Elke keer dat je iets aan een spraakassistent vraagt, gaat er spraakherkenning aan het werk: audio wordt tekst, en die tekst wordt daarna verwerkt om een antwoord te vinden. Dat zijn twee aparte stappen, en de tweede is de moeilijke.
Een mail die in de spam belandt, is het resultaat van classificatie: een model schat in of een bericht spam is, op basis van heel veel eerdere berichten waarvan bekend was of ze dat waren. En dat een zoekmachine relevante resultaten geeft in plaats van alleen exacte woordtreffers, komt doordat hij zoekt op betekenis.
Precies die derde is voor ons de belangrijkste. Wie in duizenden beleidsstukken moet vinden wat er over een onderwerp is gezegd, komt met trefwoorden niet ver: het ene stuk zegt 'ondergrond', het andere 'bodemlagen', en ze gaan over hetzelfde.
We gebruiken natural language processing dagelijks zonder het te beseffen.
Waarom taal lastig is voor een computer
Een natuurlijke taal is een taal die door mensen is gegroeid: Nederlands, Engels. Het woord natuurlijk staat tegenover kunstmatig, zoals Esperanto, dat in 1887 door Lejzer Zamenhof is ontworpen en daarna nauwelijks is veranderd. Natuurlijke talen veranderen juist voortdurend, ze zitten vol uitzonderingen, en wat een zin betekent hangt af van de context eromheen.
Van tekst naar getallen
Een computer rekent, dus voordat er iets met taal kan gebeuren, moeten woorden getallen worden. De eenvoudigste manier is tellen hoe vaak elk woord in een tekst voorkomt; dan wordt een zin een reeks getallen. Dat werkt voor sommige taken, en het mist alles wat met betekenis te maken heeft: in deze aanpak lijken 'de gemeente keurt het plan goed' en 'de gemeente keurt het plan niet goed' bijna op elkaar.
Moderne modellen doen het daarom anders: ze zetten woorden en zinnen om in getallenreeksen waarin de betekenis en de verhouding tot andere woorden vastliggen. Twee zinnen die hetzelfde zeggen met andere woorden, komen dan bij elkaar in de buurt. Dat is de techniek waarmee je documenten op inhoud kunt vergelijken.
En wat is dan het verschil met AI?
NLP wordt vaak in één adem genoemd met machine learning en deep learning, en dat is logisch: dat zijn de technieken waarmee het gebeurt. Een model is dan een verzameling wiskundige bewerkingen die uit voorbeelden een patroon leert. Je geeft het getallen als invoer, en het geeft een uitkomst.
Neem een weersvoorspelling. Voer een model gegevens van eerdere jaren over temperatuur, wind, neerslag en UV-index, en het kan een uitspraak doen over morgen. Elk van die gegevens heet een kenmerk, en welke kenmerken je meeneemt, bepaalt hoe goed de voorspelling wordt. Bij taal werkt het net zo, alleen zijn de kenmerken daar de woorden en hun onderlinge verhoudingen.
Wil je weten hoe je zo'n model kiest voor een concrete taak, dan staat dat uitgewerkt in ons stuk over het kiezen van een AI-model.
In onze projecten
Wat wij ermee doen
Openbare tekst is in Nederland ruim beschikbaar en slecht bruikbaar. Kamerstukken, raadsdocumenten, officiële bekendmakingen, beleidsnota's: het staat er allemaal, maar met de hand is het niet bij te houden. Wij gebruiken taaltechnologie om dat wel te doen.
- Zoeken op betekenis. Vinden wat over een onderwerp is gezegd, ook als er andere woorden staan.
- Teksten vergelijken. Bijvoorbeeld om een nieuwe Kamervraag naast eerdere vragen en antwoorden te leggen, zoals in de pilot met zes rijksorganisaties.
- Classificeren. Documenten indelen op inhoud, beleidsterrein of afzender, zodat je ze per categorie kunt bekijken.
- Verbanden leggen die er niet expliciet staan. Twee stukken die naar elkaar verwijzen zijn makkelijk; twee stukken die over hetzelfde gaan zonder elkaar te noemen, zijn interessanter.
- Samenvatten. Bij de analyse van omgevingsvisies brachten we tientallen documenten terug tot één rapport, met de tegenstrijdigheden erin.
- Entiteiten eruit halen. Organisaties, plaatsen en personen herkennen en in beeld brengen hoe ze zich tot elkaar verhouden.
- Dossiers klaarzetten. Automatisch de stukken bij elkaar leggen die bij een vraag horen, met de bron erbij. Dat is wat Codi doet.
Bij al deze toepassingen geldt hetzelfde uitgangspunt: bij elk antwoord hoort de bron, zodat iemand het zelf kan nalezen. Een model dat vlot antwoordt zonder verantwoording is voor beleidswerk niet bruikbaar.