Massagebed en dubbelster; Sprekende computers laten zich niet leiden door taalbegrip

Sprekende computers worden gebruikt als telefoonbeantwoorder, in educatieve software en als voorleesmachine voor blinden. Maar als ze schrift in klank moeten omzetten, staan ze snel op het verkeerde been: te weinig taalbegrip.

Dit is een ingekorte versie van de tekst waarmee hij de LOT-prijs voor taalwetenschap won, ingesteld door het bestuur van de Landelijke Onderzoeksschool Taalwetenschap. De prijs werd op 10 oktober uitgereikt tijdens het Tweede Taalgala in de Lutherse Kerk in Utrecht.

EEN COMPUTER die wil voorlezen moet schrift omzetten in klanksymbolen. In het Chinese karaktersysteem, waarin voor vrijwel iedere woordbetekenis een apart karakter bestaat kan een schrift-naar-klanksysteem weinig anders doen dan ieder karakter opzoeken in een klankwoordenboek en de uitspraak verzorgen. Maar in het Nederlandse spellingssysteem lijkt een duidelijker relatie te bestaan tussen letter en klank. We zouden niet verwachten dat voor ieder woord een aparte klank moeten worden opgezocht; immers, hun spelling dicteert hoe ze moeten worden uitgesproken. Het probleem is dat veel letters op meerdere manieren klinken. Zo kan de letter 'e' gebruikt worden voor de klank [ee] die we horen in t[ee]ken, maar ook voor de de e-klank in w[e]rk of de uh-klank in lat[uh]n. Bovendien wemelt het in Nederlandse teksten van leenwoorden uit bijvoorbeeld het Engels (E-mail - e wordt uitgesproken als [ie]; computer - e wordt nauwelijks uitgesproken etc.), wat de zaken aanmerkelijk compliceert.

Wie zich bij het programmeren van een sprekende computer door taalkundige kennis laten inspireren, zal een verzameling regels maken die voor elke letter dicteert onder welke omstandigheden welke klank moet worden gegenereerd. Dus bijvoorbeeld: taalkundigen weten dat de letter 'e' wordt uitgesproken als de [e] van bed als die 'e' in een gesloten lettergreep staat. Dat is een lettergreep waarin direct na de 'e' in dezelfde lettergreep nog minimaal één medeklinker volgt. Voorbeelden: letter, werk, zwem-ster. De voorbeelden bevatten meteen de tegenvoorbeelden, want 'ter' in letter en 'ster' in zwemster zijn ook gesloten lettergrepen, waarin echter een andere 'e' klinkt. In een open lettergreep, waarin de 'e' de laatste letter van een lettergreep is, wordt de 'e' uitgesproken als [ee] (zoals in leven). Voorbeelden: le-ven, we-ten, sche-pen. Moeilijker wordt de regel die de letter 'e' omzet in een uh-klank (zoals in letter). Hoe weten we dat een woord als bevel wordt uitgesproken als buhvel en niet als beevuhl? En omgekeerd, hoe weten we dat een woord als hevel wordt uitgesproken als [heevuhl] en niet als [huhvel]. Om nog maar te zwijgen van een woord als berenvel dat zonder verdere kennis op tal van manieren kan worden uitgesproken: buhrenvel, beruhnvel, beerenvuhl, buhrenvuhl, etc.

De ervaring leert dat de letter-klank omzetting per letter al snel een uitdijende verzameling regels noodzakelijk maakt. Tachtig procent van de letter-klank omzettingen is op deze manier vrij gemakkelijk te realiseren, maar voor elke paar procent meer juiste uitspraak moet een enorme hoeveelheid regels worden toegevoegd. Deze omzettingsstrategie is door meerdere onderzoekers uitgeprobeerd, maar de resultaten zijn niet erg overtuigend. Veel leenwoorden bleven slecht klinken en veel regels zijn slechts voor een enkel woord van toepassing.

De regelproliferatie is echter in te dammen door meer taalkunde in te zetten. Het verschil tussen de woorden bevel en hevel is dat be- een herkenbaar voorvoegsel is dat altijd als buh- (bedrag, besluit) wordt uitgesproken. De afwijkende uitspraak van voor- of achtervoegsels komt vaker voor en daarvan kan het uitspraakprogramma profiteren. Normaal wordt de 'i' in een gesloten lettergreep uitgesproken als een [i] zoals in lig, maar in het achtervoegsel -ig (zoals in matig, wazig, groenig) wordt de letter 'i' als uh uitgesproken. Dus voordat onze spelling-klank omzetregels werken, zouden we eerst een automatische opdeling van woorden in stammen, voor- en achtervoegsels moeten maken.

De woordstructuur is vaker van invloed op de uitspraak. Wie woorden als beer en beet, weer en weet, heer en heet uitspreekt, merkt dat de lange [ee] anders wordt uitgesproken voor de [r] dan voor de [t]. Willen we onze computer verstaanbaar laten praten dan zal die zogenaamde verkleuring van de [ee] onder invloed van de [r] moeten worden gecodeerd. De [ee] voor de [r] moet een 'verkleurde' [ee] worden. Maar niet zomaar elke [ee] voor [r] verkleurt. Woorden als meerijden, zeerob en zeerover hebben min of meer dezelfde [ee] als in beet. De [r] wordt in deze gevallen gescheiden door een lettergreepgrens van de [ee]. In een woord als heeroom valt die lettergreepgrens achter de [r] en horen we dus weer wel de verkleuring van de [ee]. Als we deze taalkundige kennis willen incorporeren in onze spraakcomputer moeten we dus een woord als heeroom kunnen opdelen in de delen heer en oom en een woord als zeerob in de delen zee en rob. Het is duidelijk dat we onvoldoende hebben aan alleen maar regels die letters in klanken omzetten.

OPDELEN

Het opdelen van woorden kunnen we niet met een aantal simpele regeltjes oplossen: hoe weten we dat we een woord als bevel wél moeten opdelen in een voorvoegsel be- en een stam vel en het woord bever of beven niet? Hoe weten we dat de verdeling van zeerob zee-rob moet zijn en niet zeer-ob, terwijl het wel heer-oom is en niet hee-room? Dergelijke vragen kunnen alleen met een woordenboek in de hand worden beantwoord.

In dit geval is een woordenboek nodig met een lijst woorddelen die niet verder zijn op te delen in kleinere eenheden (stammen) met hun uitspraak, en een lijst voor- en achtervoegsels met hun uitspraak. Een woord als bever staat in de lijst stammen en hoeft niet verder te worden opgedeeld. Maar bevel staat niet in de stammenlijst en moet wel worden opgedeeld. Een woord als zee-rob is goed op te delen als zowel zee als rob in ons woordenboek staan. Alleen als we beide delen in het woordenboek kunnen vinden kan de opdeling juist zijn. Zeer en ob staan niet allebei in de lijst en die opdeling is daarom niet goed.

Deze omzettingsstrategie waarbij woorden werden opgedeeld in kleinere eenheden (stammen, voor- en achtervoegsels) waarvan de uitspraak vervolgens in een woordenboek wordt opgezocht, is ook uitgeprobeerd. Met name door Josée Heemskerk in een project dat aan de universiteit van Leiden werd uitgevoerd.

Ook deze strategie verloopt echter minder succesvol dan we op het eerste gezicht denken. Er zijn natuurlijk weer woorden die op verschillende wijzen kunnen worden opgedeeld, waarbij die opdelingen corresponderen met verschillende uitspraken. Een woord als beken bijvoorbeeld, kan worden opgedeeld als be-ken (zoals in ik beken schuld) en als bek-en (zoals het water van de beken vloeide samen in de rivier). Die verschillende opdelingen corresponderen met verschillende uitspraken en hoe kan een computer weten welke uitspraak de juiste is?

Hier helpt eigenlijk alleen zinsontleding. In het woordenboek wordt aangegeven dat beken met de uitspraak [buhken] een werkwoord is en beken met de uitspraak [beekuhn] een zelfstandig naamwoord. Via automatische zinsontleding kunnen we erachter komen dat in de zin ik beken schuld het woord beken een werkwoord is en de uitspraak dus [buhken] moet zijn. Maar automatische zinsontleding is een erg lastige zaak, ongetwijfeld is het taalkundig gesproken de juiste aanpak, maar zelfs al voerden we een complete automatische zinsontleding uit, dan nog zullen we bepaalde problemen daarmee niet kunnen oplossen. Neem het woord dubbelster. Iemand die een artikel over sterrenkunde aan het lezen is, denkt aan twee om elkaar draaiende sterren en zal dit woord onmiddellijk lezen als dubbelst[e]r waarbij de laatste e als [e] wordt uitgesproken. Iemand die daarentegen door de maandelijkse periodiek van de tennisbond bladert, leest dubbelst[uh]r en begrijpt dat het om een vrouwelijke dubbelspelpartner gaat. Een massagebed is in de kerk iets heel anders dan in een schoonheidssalon. Om een dergelijk omzettingsprobleem op te lossen, moet een computer de context van een woord kunnen beoordelen. Machines die dat kunnen heten artificieel intelligent.

De hierboven geschetse aanpak wordt regel-gebaseerd genoemd. Maar het kan ook helemaal anders, op basis van een data-gebaseerde aanpak. Ter vergelijking: een regel-gebaseerde schaakcomputer kent de regels van het schaakspel; een data-gebaseerde schaakcomputer kent een zeer groot aantal partijen die gespeeld zijn en probeert met die kennis te schaken. Zo kent een regel-gebaseerde letterklankomzetter de regels voor de uitspraak; een data-gebaseerde letter-klankomzetter kent de correcte omzetting van een zeer groot aantal woorden en probeert daar (voor hem) nieuwe woorden mee uit te spreken.

PATRONEN

Het blijkt dat we, uitgaande van een voldoende groot bestand, met data-gebaseerde methoden bijzonder ver kunnen komen. Om een data-gebaseerde letter-klank-omzetter te maken laten we eerst een computerprogramma een groot aantal (bijvoorbeeld 100.000) woorden en hun goede uitspraak doorzoeken naar patronen van spelling en uitspraak. Dus: het kleinste patroon dat er is, zal 1 letter zijn die altijd correspondeert met 1 uitspraak (bijvoorbeeld x - ks). Voor de d zullen er echter meerdere patronen gevonden worden. Soms is de d een d (namelijk in leden, mijden, drijven), maar soms is het een t (namelijk in bed, lood en wed) en soms correspondeert de d niet met een uitspraak (in bijvoorbeeld wedt, redt en redde). De gevonden patronen laten zich enigszins vergelijken met de regels per letter in de hierboven beschreven aanpak, maar er zijn een aantal cruciale verschillen. Ten eerste zijn er regels bij waar de taalkundige nooit op zou komen. Bekijk eens het rijtje charisma, charismatisch, chartaal, charmant, charme. Het patroon dat hieruit gedistilleerd wordt is dat chari en chart corresponderen met resp. [gaari] en [gart], maar dat charm correspondeert met [sjarm]. Een taalkundige zou nooit een regel schrijven waarbij de uitspraak van de ch zou afhangen van de vraag of er wel of geen [m] op de vierde positie staat. De taalkundige zou onmiddellijk concluderen dat hier iets aan de hand is dat niet in de vorm van een regel gevangen kan worden (woorden waarin de 'ch' een [g] wordt, komen uit het Grieks, de anderen uit het Frans) en dat dus in het woordenboek moet worden opgezocht. Een patroongenerator heeft niets te maken met regelmatigheid of onregelmatigheid: het kijkt alleen naar de 100.000 woorden die het 'gevoerd' heeft gekregen. Ook een bijzonder lastig probleem als de omzetting van de laatste e in woorden die eindigen op 'ster' is op die manier 'oplosbaar'. Hoe kun je ooit in regels vangen dat in dwergster de laatste e als [e] moet worden uitgesproken en in verzorgster als [uh]? Een patronengenerator van het type dat we hier bespreken maakt een patroon 'ergster' en een patroon 'orgster'; het eerste wordt gekoppeld aan de uitspraak [ergster] en het tweede aan de uitspraak [orgstuhr]. Het is erg onwaarschijnlijk dat voorlezende mensen ook van dergelijke patronen gebruik maken, maar een computer die op deze manier geprogrammeerd is, werkt beter dan een machine die op basis van taalkundig inzicht voorleest.

Antal van den Bosch en Walter Daelemans van de KUB hebben een dergelijk systeem ontwikkeld. Een patronenset die op deze manier was opgebouwd op basis van een bestand van 18.500 'trainingswoorden' (die willekeurig uit een veel grotere lijst werden gehaald) bleek op een nieuwe lijst van 1971 testwoorden een score te halen van 89,5 procent goede omzettingen. Het is duidelijk dat dit percentage groeit als de patroonbreedte wordt opgevoerd en het aantal woorden op basis waarvan de patroonset wordt gegenereerd.

Het merkwaardige feit doet zich dus voor dat 'domme' patroon-matching de klus simpeler weet te klaren dan wanneer we met taalkundige kennis de menselijke letter-klank omzetting uitvoeren. De taalkundige vraagt zich ondertussen wel in gemoede af of het eigenlijk wel zo is dat de mens die taalkundige kennis gebruikt bij het voorlezen van teksten. Of zijn wij eigenlijk tamelijk domme maar zeer snelle patroonherkenners?

Het is ongetwijfeld waar dat mensen in de processen van spreken en verstaan grote databanken gebruiken die in ons brein liggen opgeslagen. Dat blijkt alleen al uit het feit dat het 'uitrekenen' van de juiste oplossing, in veel gevallen helemaal niet kan. En als we ons dagelijks taalgebruik onder de loupe nemen, staan we verbaasd van de hoeveelheid uitdrukkingen en zegswijzen; allemaal dingen waarvan uitspraak en betekenis niet zijn uit te rekenen, maar die moeten worden opgezocht. Kijken we bijvoorbeeld naar de betekenis van woorden dan zien we dat heel veel woorden een onvoorspelbare betekenis hebben. Vooral bij samengestelde woorden is de logica soms ver te zoeken. Iemand die de bagage draagt is geen bagagedrager (maar een kruier). Een rek dat achterop de fiets zit is geen fietsrek (maar een bagagedrager). Van het woord loopbaan zouden we, afgaand op de analogie met rijbaan, verwachten dat het hetzelfde betekent als voetpad of wandelpad. En als we eenmaal weten dat we lopen op paden en rijden op banen, is het weer vreemd dat een fietspad geen fietsbaan is.

VOORLEZEN

Dat de mens een zeer goede patroonherkenner is (als hij dat al uitsluitend is) blijkt uit het feit dat patroonherkennermachines wel een hoog percentage correct uitgesproken woorden realiseren, maar vaak onbegrijpelijk worden als ze een fout maken. De luisteraar kan zo'n fout vaak moeilijk herstellen. Een testmodel van een patroonherkenner dat door E.G. Ruys van de Universiteit Utrecht werd gebouwd op basis van maar liefst 100.000 woorden sprak 92,5% van de nieuwe woorden correct uit, maar maakte af en toe heel vreemde fouten. Zo werd het woord quiche uitgesproken als [kwg]. De reden daarvoor is dat het patroon 'qu' als [kw] wordt omgezet (vergelijk querulant [kweeruulant], quasi [kwazie]) en dat de i na een u verdwijnt. Immers, in veruit de meeste gevallen heeft de i achter een u geen waarde. De u voor een i wordt omgezet in de ui-klank en de 'i' blijft verder zonder omzetting. De combinatie 'ch' is natuurlijk heel vaak inderdaad een [g] en een slot 'e' wordt heel vaak niet uitgesproken. (denk naast quiche aan broche, douche en manche). Een gebruiker die zo'n fout tegenkomt (de robot-ober op een feestje vraagt: 'blieft u nog kwg'?) heeft geen vermoeden welk woord met [kwg] bedoeld zou kunnen zijn. Bovendien komt er iets uit dat niet eens aan de meest fundamentele eisen van een Nederlands woord voldoet: het heeft geen klinker. Een regelgebaseerd systeem maakt van quiche waarschijnlijk zoiets als [kwieg] of [kwiesjuh]. Dat is ook niet goed, maar de gebruiker heeft aanzienlijk meer kans de bedoelde uitkomst te raden (gegeven de context).

Er zijn goede redenen om te denken dat de voorlezende mens het uitspraakprobleem fundamenteel anders aanpakt. Het omzetten van letters in klanken vormt slechts een klein onderdeel van de voorleestaak. De voorlezer maakt tegelijkertijd een syntactische ontleding van de zin waardoor hij kan beslissen dat beken in het zinnetje 'ik beken alles' een werkwoord is. Ook interpreteert de voorlezer de tekst. Dat stelt hem in staat om bijvoorbeeld in dwergster het woord ster te herkennen.

De echte proef op de som is of het apparaat dezelfde voorleesfouten maakt als wij: we zouden willen dat ons voorleesapparaat ook eerst bommuhlding leest voordat hij zichzelf corrigeert en ..eh... bom-mèlding zegt. Cognitie-wetenschappers zijn geïnteresseerd in technologie als proef op de som. Een patroonherkenningssysteem zonder verdere intelligentie kan de proef niet doorstaan. Het is een bruikbaar apparaat, maar we hebben er niet het probleem - hoe zetten mensen zo snel en feilloos letters om in klanken? - mee opgelost.