Kan een computer zinnen ontleden?

Over computationele taalkunde

Over de auteur

Rens Bod (1965) is hoogleraar Computationele Geesteswetenschappen aan het Institute for Logic, Language and Computation van de Universiteit van Amsterdam. […]
Lees verder

We kennen waarschijnlijk allemaal de spellingscontrole van een tekstverwerkingsprogramma als Word dat een seintje geeft als we onstaan in plaats van ontstaan schrijven. Maar bestaat er ook zoiets als een grammaticale controle die vaststelt dat de woordvolgorde in de zin Ik zie dat je bent moe geen correct Nederlands is? Voorlopig (nog) niet. Waarom eigenlijk niet?

Door Rens Bod.

Allereerst moeten we vaststellen dat zelfs eenvoudige spellingscontroleprogramma’s verre van perfect zijn. Om te bepalen of de zin Opa werd verast door zijn kleinkinderen een spelfout bevat, moeten we weten wat de spreker bedoelt: werd opa gecremeerd of kreeg hij een mooi cadeau en felicitaties? Sommige spellingscontroleprogramma’s geven een seintje bij onwaarschijnlijke, weinig voorkomende, woordcombinaties. Maar zelfs wanneer dubbelzinnige zinnen voor lief worden genomen, blijft spellingscontrole, en vooral zinscontrole, een complexe zaak.

Automatische ontleding

De meeste Nederlanders zijn ervan overtuigd dat de grammaticaregels van het standaard Nederlands vastliggen. Op school leren we dat Jan is ouder dan Piet correct is en Jan is ouder als Piet fout. Dus als de onderliggende regels precies zijn gedefinieerd, dan moeten deze programmeerbaar zijn in een computer.

Dit geldt inderdaad voor eenvoudige regels zoals het gebruik van de vergelijkende trap. Maar in andere gevallen wordt het een stuk lastiger om de precieze regels te programmeren. Er is nog geen programmeerbare regel gevonden die kan aangeven dat de zin De honden op de heuvel blaffen correct is, terwijl de zin De honden op de heuvel blaft fout is.

Waarom dat zo is, hebben de meesten van ons op school geleerd: de persoonsvorm (blaffen) moet in getal en persoon met het onderwerp (honden) overeenstemmen. Het onderwerp (De honden) staat in de derde persoon meervoud, en de persoonsvorm dient zich hiernaar te voegen. Als onderwerp en persoonsvorm per definitie naast elkaar zouden staan – zoals in de zin De honden blaffen – zou het voor een computerprogramma eenvoudig zijn. Maar dat is niet altijd zo. In de zin De honden op de heuvel blaffen is het woord heuvel, dat wel direct naast de persoonsvorm blaffen staat, niet het onderwerp. In het Nederlands kunnen onderwerp en persoonsvorm op bijna willekeurige afstand van elkaar staan, zoals in de zin De honden naast het huis op de heuvel blaffen. Het onderwerp is ook al niet per definitie het eerste zelfstandig naamwoord in de zin, zoals we kunnen vaststellen bij De man ziet dat de honden op de heuvel blaffen.

Wat we nodig hebben voor automatische grammaticale controle is de volledige ontleding van een zin. Eerst moeten we hoofdzin en bijzin onderscheiden, en vervolgens een ontleding maken per deelzin in onderwerp, persoonsvorm, hoofdwerkwoord enzovoort. Pas dan kunnen we vaststellen óf en waar een zin een fout bevat. Het maken van zo’n ontleding is voor de meeste mensen geen eenvoudige zaak: het impliceert een precieze toepassing van alle grammaticale regels uit de 2000 pagina’s dikke Algemene Nederlandse Spraakkunst (ANS). Mogelijk kan een computer dit beter, net als het geval is met rekenkundige regels.

Computerlinguïstiek

De computer vormt een mooie toetssteen voor door mensen opgestelde grammatica’s (systematische beschrijvingen van de grammaticale regels van een taal). Als de grammaticale regels van een taal precies genoeg zijn gedefinieerd, kun je ze programmeren. Vervolgens kun je razendsnel controleren of een zin correct is. Als je grammatica correct en volledig is, zal het computerprogramma alle foute zinnen als fout aangeven, en alle goede zinnen als goed.

Verrassend genoeg kan tot op heden geen enkele grammatica van een levende taal deze toets doorstaan. Enerzijds blijken er keer op keer niet eerder opgemerkte taalverschijnselen van – in ons geval – het Nederlands te bestaan. Anderzijds zijn veel bestaande grammatica’s eenvoudigweg niet precies genoeg om in een computer te worden geprogrammeerd. Het vakgebied dat de computer (onder meer) als toetssteen gebruikt voor taalkundige grammatica’s en theorieën ontstond in de jaren 80 van de vorige eeuw en is bekend als de computationele taalkunde, of computerlinguïstiek.

Konijn met verrekijker

De correctheid en volledigheid van grammatica’s vormt de eerste uitdaging voor de computerlinguïstiek. De tweede uitdaging zit in de enorme hoeveelheid dubbelzinnige lezingen of ontledingen die aan zinnen kunnen worden toegekend. Een bekend voorbeeld is de zin Ik zie het konijn met de verrekijker. Die zin kun je op twee manieren ontleden, elk met een eigen betekenis. Een zin als Toon de verkoop van boeken in 2010 (een typische zogeheten database-vraag) heeft echter al drie ontledingen, terwijl een langere database- vraag als Toon de verkoop van boeken geschreven in 2010 naast de verkoop van boeken geschreven in 2009 er maar liefst 72 heeft! En alle 72 ontledingen corresponderen met een unieke betekenis.

Niemand had vóór de jaren tachtig zo’n explosie aan ontledingen en betekenissen verwacht. Het aantal verschillende ontledingen blijkt bovendien exponentieel te groeien met het aantal woorden in de zin. Fascinerend genoeg vormt dat allemaal geen enkel probleem voor de menselijke taalgebruiker: die zal alleen in de context van een dierenverhaal overwegen of er misschien sprake is van een konijn met een verrekijker. Daarmee is het verschijnsel niet alleen interessant voor de computationele taalkunde, maar ook voor de kennis over de verwerking van taal in de hersenen, want hoe kan het dat mensen zo’n enorm dubbelzinnige zin gewoon begrijpen en slechts één (of met enige moeite misschien twee of drie) van al die mogelijke betekenissen waarnemen?

De exponentiële toename van het aantal ontledingen lijkt vooral een neveneffect van de door mensen opgestelde beschrijvende grammatica’s die al deze ontledingen ‘toestaan’. Een van de grootste uitdagingen voor de computerlinguïstiek is dan ook om methoden te vinden om het aantal mogelijke ontledingen per zin zo in te perken dat de juiste ontleding correct wordt voorspeld. Echter, in de meeste gevallen is er geen taalkundige reden te vinden voor het verkiezen van de ene boven de andere ontleding, maar blijkt één bepaalde ontleding eenvoudigweg veel waarschijnlijker dan alle andere.

De hedendaagse computerlinguïstiek gebruikt daarom per grammaticaregel ook een berekening van de kans dat hij voorkomt. Ook aan vaste combinaties van woorden, zoals uitdrukkingen en gezegden, worden zulke waarschijnlijkheidsscores toegekend. Aan de hand van de gecombineerde kansen van alle gebruikte eenheden kan dan de waarschijnlijkheid van elke ontleding worden uitgerekend, waarna de meest waarschijnlijke wordt gekozen. Deze benadering heeft ook de taalkunde beïnvloed. Het is een fraai staaltje van kruisbestuiving tussen taaltechnologie en taaltheorie. De computerlinguïstiek is niet langer louter een toetssteen voor taaltheorieën, maar draagt zelf nieuwe theorieën aan.

Automatisch vertalen

Het meest tot de verbeelding in de computerlinguïstiek spreekt het automatisch vertalen. Hoewel volautomatisch vertalen nog lang niet nauwkeurig genoeg is voor praktisch gebruik, heeft het semi-automatisch vertalen een hoge vlucht genomen en geleid tot een versnelling van het vertaalproces. Bij deze vorm maakt de computer een soort ruw voorstel en bepaalt de menselijke vertaler vervolgens wat de meest geschikte vertaling is. Vooral binnen het Europees Parlement, waar het aantal talen en te vertalen documenten enorm is toegenomen, heeft het semi-automatisch vertalen een belangrijke plaats verworven. Het taaldomein is hier echter beperkt tot beleidsdocumenten, waarvoor automatische vertalingen redelijk goede halffabrikaten opleveren die bruikbaar zijn voor professionele vertalers. Voor kleinere taaldomeinen, zoals weerberichten, werkt automatisch vertalen zelfs foutloos. Het vertalen van literatuur en poëzie blijft vooralsnog een puur menselijke aangelegenheid.

De ontleedprogramma’s in de jaren vijftig en zestig bleken verrassend genoeg meer van toepassing te zijn op computerprogrammeertalen dan op menselijke talen. Ze hebben bijgedragen tot de eerste programmeertalen als algol60, waarbij men niet langer in louter nullen en enen hoeft te programmeren. Het is mede dankzij (computationeel) taalkundig onderzoek dat programmeurs nu kunnen werken in talen die onafhankelijk zijn van de oorspronkelijke machinetalen en van de machines zelf.

 

 

Lees meer

Lees verder op Kennislink:



Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

De volgende HTML-tags en -attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Voor je verder gaat even bewijzen dat je mens bent.

Typ hiernaast de eerste drie letters van het alfabet


sluit