door Liesbeth Koenen ©
17-07-1986
NRC Handelsblad

De Taalmachine

Blindelings ontleden

Hoe ontleedt een computer automatisch een zin, en wat is het nut daarvan.

Het aantal zinnen dat je in een taal kunt maken is letterlijk eindeloos groot. Het aantal teksten dus ook. Wie eerste drukken van Vestdijk spaart weet dat zijn collectie op een dag compleet kan zijn, maar een taalverzamelaar is nooit klaar. Toch worden er her en der in Nederland aan de universiteiten heel wat teksten in computers opgeslagen. Corpuslinguistiek heet dat.

Het aanleggen van een, liefst ‘verrijkt’ corpus is een uitermate tijdrovende bezigheid. Dat verrijken bestaat namelijk uit het toevoegen van taalkundige informatie; bij de woorden wordt bijvoorbeeld aangegeven tot welke grammaticale categorie ze horen (werkwoord, voorzetsel et cetera) en de zinnen kunnen met een codering voor hun grammaticale constructie de machine ingaan. Is een tekst eenmaal op die manier opgeslagen dan kun je de computer woorden en constructies laten zoeken en tellen. Bij het maken van bijvoorbeeld een boekje ‘Nederlands op reis’ kan het handig zijn te weten welke woorden vaak voorkomen. Of de teksten in een corpus werkelijk representatief voor een bepaald soort taalgebruik zijn blijft natuurlijk altijd een beetje een gok.

Corpuslinguistiek was vooral in Amerika tot het einde van de jaren vijftig erg in zwang. Mensen als Zellig Harris (de leermeester van Chomsky) bestudeerden aan de hand van gesproken corpora Indianentalen waar nog nooit iemand naar gekeken had. Van (soms de laatste) Indianen die een bepaalde taal spraken werden bandopnamen gemaakt, en die dienden als uitgangspunt voor de beschrijving van die taal. Aan een dergelijke manier van werken kleven flinke bezwaren: gesproken taal barst bijvoorbeeld van de fouten (vergissingen, versprekingen, valse starts’ enzovoort).

Daarnaast is er het element van willekeur en toeval dat ook voor geschreven corpora geldt: hoe groot je corpus ook is, je hebt geen enkele garantie dat je materiaal ‘taalkundig compleet’ is. Een taalonderzoeker is op zoek naar regelmatigheden en patronen en stelt hypotheses op. Voor een goede beschrijving van een taal blijft hij daarom altijd afhankelijk van het oordeel van sprekers van die taal. Een corpus levert op zijn best een complete beschrijving van zichzelf op, maar nooit van de taal waaruit het getrokken is. Wat precies het nut is van met veel moeite corpora aanleggen van talen waarvan ruimschoots sprekers voorhanden zijn is daarom niet helemaal duidelijk.

Woordenboeken
Toch kan het opslaan van taal bijzonder nuttig zijn. Een voor de hand liggend voorbeeld zijn woordenboeken. De Van Dales worden tegenwoordig met behulp van de computer gemaakt. Dat heeft allereerst voordelen voor de kwaliteit van die woordenboeken: als niet alles met de hand gecontroleerd hoeft te worden sluipen er minder ‘mensenvergissingen’ in. De computer kan de lijst woorden en omschrijvingen die hij al heeft ook snel en zonder vermoeidheidsverschijnselen met andere (vaak buitenlandse) woordenboeken vergelijken en daarmee zorgen voor een grotere woordenschat.

En er zijn al plannen om woordenboeken op schijf uit te brengen voor de pc-bezitters. Dat heeft duidelijke voordelen. Er zijn dan meer ‘ingangen’ mogelijk dan de alfabetische volgorde; je kunt aan alle kanten beginnen, of bijvoorbeeld vragen bij welke woorden het woord bloem in de omschrijving voorkomt. En— misschien niet erg sportief, maar een wanhopige puzzelaar zou een lijstje kunnen vragen van alle woorden van vijf letters die beginnen met een f en eindigen op een n. Daarnaast laat een woordenboek-op-schijf zich veel gemakkelijker uitbreiden dan een woordenboek-in-de-kast.

Woordenlijsten zijn ook nodig bij het laten werken van ontleedprogramma’s. Om maar weer even bij het nut te beginnen: ontleedprogramma’s (parsers in jargon) kunnen helpen een theorie te toetsen en uit te werken. Juist omdat een computerprogramma ‘blindelings’ regels toepast kan het op feilen en fouten stuiten waar mensen overheen kijken. Anderzijds kan het soms ook laten zien dat er nog meer (goede) mogelijkheden zijn om een bepaalde zin te ontleden.

Het maken van een ontleedprogramma kan de computerlinguïst op ideeën brengen. Maar daar schuilt tegelijkertijd het grootste gevaar van de computerlinguïstiek als geheel: om echt interessant werk te kunnen verrichten is het nodig dat een onderzoeker zowel heel veel van taalkunde als van programmeren weet. Veel van zulke mensen zijn er niet. Daarom gaan parsers nogal eens gebukt onder hopen ad-hoc oplossingen.

Schoolgrammatica’s
Overigens is ontleden sinds de komst van Chomsky niet meer wat het geweest is. De ouderwetse schoolgrammatica’s zijn alleen al vanwege hun vaagheid volkomen ongeschikt om als uitgangspunt voor een computerprogramma te dienen. Vrijwel alle ontleedprogramma’s die er momenteel bestaan zijn dan ook geënt op een vroegere of latere versie van Chomskyaanse ideeën over taalstructuur. Voor de taalkunde is het hoopgevend dat de mooiste resultaten op het ogenblik bereikt worden met de nieuwste theorieën, al moet vooraf gezegd worden dat er nog niet één ontleder is die perfect werkt. Dat is niet verwonderlijk, want er is ook nog niet een taal waarvan een volledige grammaticale beschrijving bestaat.

Wat moet een goede parser nu precies doen? Allereerst natuurlijk alle correcte analyses van een zin geven, en niet één foute. Een groot probleem hierbij vormen de dubbelzinnigheden waar iedere taal vol mee zit. Neem een simpel voorbeeld als Jan slaat Piet. Als dat zinnetje uitgesproken wordt kun je aan de klemtoon horen of het Piet of Jan is die de klappen krijgt, in geschreven taal zijn er twee interpretaties mogelijk. Hetzelfde geldt voor Wie slaat Piet? Is wie hier onderwerp of lijdend voorwerp? Een goedwerkende ontleder vertelt je dat beide analyses grammaticaal mogelijk zijn.

Een deel van de dubbelzinnigheden kan ondervangen worden door een goede woordenlijst (in jargon: een lexicon). Daar moet ieder woord met al zijn belangrijke eigenschappen in staan: of een werkwoord al of niet overgankelijk is bijvoorbeeld. Lastig genoeg kan eenzelfde woordvorm nogal eens tot verschillende woordsoorten behoren. Een aardige illustratie is zin (1) waarin de woordvorm gegeven achtereenvolgens een voorzetsel, een zelfstandig naamwoord, een bijvoeglijk naamwoord en een werkwoord is (vergelijk zin (2)).

(1) Gegeven de huidige situatie worden de gegevens over het gegeven geld niet aan de inspecteur gegeven.

(2) In de huidige situatie worden de feiten over het overhandigde geld niet aan de inspecteur verstrekt.

Voor een ontleedprogramma is zin (1) een absolute ramp. Omdat een computer niets begrijpt en het voorlopig onmogelijk lijkt ‘betekenis’ zo te definiëren dat een machine er iets mee kan doen, moeten alle mogelijke analyses nagetrokken worden. In de praktijk zijn dat er al gauw honderden, soms duizenden. De gevolgen van zo’n ‘explosie’ voor de benodigde hoeveelheid geheugenruimte laten zich raden.

De volgorde
Zoals gezegd lijkt een ontleedprogramma in vrijwel niets op een grammatica zoals iedereen die wel van school kent. Veel van de bestaande ontleed-algoritmes zijn gebaseerd op ‘contextvrije herschrijfregels’. Een vrij eenvoudig voorbeeld van zulke regels is te vinden in het kader elders op deze bladzijde. Met contextvrije regels zijn redelijke resultaten te bereiken voor talen waarin de volgorde van de constituenten netjes hand in hand gaat met de interpretatie. Dat is bijvoorbeeld in het Engels veel meer het geval dan in het Nederlands: John hits Pete heeft maar een betekenis: John moet degene zijn die slaat.

Een goede taaltheorie die ook voor talen als het Nederlands opgaat heeft aan contextvrije herschrijfregels niet voldoende. Aan de Hogeschool van Tilburg werken de Amerikaan Craig Thiersch en de Duitser Hans-Peter Kolb samen aan een ontleed-algoritme dat uitgaat van de X-bar-theorie. Het idee dat aan deze theorie ten grondslag ligt is ongeveer het volgende: zinnen worden opgebouwd uit constituenten, en die constituenten worden opgebouwd rond een hoofd. De vier belangrijkste grammaticale categorieën (naamwoord, werkwoord, voorzetsel, bijvoeglijk/bijwoordelijk naamwoord) kunnen het hoofd van een constituent zijn.

De opbouw van de verschillende constituenten (rond een hoofd) en de opbouw van zinnen uit constituenten gaan in principe op dezelfde manier in hun werk. Dit geldt voor alle talen. Daarmee ben je natuurlijk nog niet waar je zijn wilt: zo’n krachtig mechanisme levert behalve grammaticale ook heel veel ongrammaticale structuren op. Dat ‘overgenereren’ wordt beperkt door condities toe te voegen, voorwaarden waaraan de structuren die het mechanisme aan een rijtje woorden toekent moeten voldoen om uiteindelijk goedgekeurd te worden. Die condities kunnen gelden voor een bepaalde taal, of voor een groep talen. Een voorbeeld: in sommige talen worden bepaalde constituenten gebouwd door dingen rechts van het hoofd te zetten, in andere door dingen links van het hoofd te zetten. In het Nederlands, Duits en Engels staat een bijvoeglijk naamwoord links van het zelfstandig naamwoord, in het Frans, Italiaans en Spaans meestal rechts.

In de praktijk kan deze aanpak het volgende betekenen: wanneer alleen uitgegaan wordt van het basis-bouw-schema (X-bar) dan levert een simpel Duits bijzinnetje als ..dass der Karl den Hund schlug maar liefst 634 mogelijke ontledingen op. Door een conditie toe te voegen kan dat aantal gereduceerd worden tot één: de juiste analyse. Wat het werk van Thiersch en Kolb vooral zo interessant maakt is dat ze met het aanpassen van een paar condities hun Duitse ontleder in een handomdraai in een Engelse kunnen omzetten. Dat is behalve leuk voor theoretici natuurlijk ook niet onbelangrijk voor toepassingen van ontleders, zoals bijvoorbeeld in een toekomstige vertaalmachine.

Volgende week:  deel 3 en slot: Vertalen

 

NASCHRIFT

Wat de krant niet haalde, was onderstaand voorbeeldje van een herschrijfgrammatica. Voor de liefhebber alsnog. En uit de uitleg over X-bar was een deel verdwenen dat er beter in had kunnen blijven staan, en dat hierboven daarom dus wel  gebleven is.

HERSCHRIJFGRAMMATICA:
(lees voor de pijltjes: herschrijft als (ofwel: bestaat uit))
ZIN -> NAAMWOORDCONSTITUENT + WERKWOORDCONSTITUENT;
NAAMWOORDCONSTITUENT -> LIDWOORD + NAAMWOORD;
WERKWOORDCONSTITUENT -> WERKWOORD + NAAMWOORDCONSTITUENT;
LIDWOORD -> de, een;
NAAMWOORD -> vrouw, telefoon;
WERKWOORD -> hoort.

Met dit kleine grammaticaatje kunnen precies de acht volgende zinnen gemaakt en ontleed worden:

-De vrouw hoort de telefoon.
-Een vrouw hoort een telefoon.
-De vrouw hoort een telefoon.
-Een vrouw hoort de telefoon.
-De telefoon hoort de vrouw.
-Een telefoon hoort een vrouw.
-De telefoon hoort een vrouw.
-Een telefoon hoort de vrouw.