DigiTaal Nederlandse Taalkunde
Driemaandelijks tijdschrift
nummer 2, 2002


De grammaticale annotatie van tekstcorpora

Nelleke Oostdijk en Hans van Halteren

Inleiding

Tekstcorpora maken inmiddels deel uit van de standaarduitrusting waarover de taalkundige kan beschikken voor het bedrijven van taalkundig onderzoek. Het gebruik van corpusdata gaat nadrukkelijk verder dan enkel het leveren van authentieke voorbeelden en/of kwantitatieve gegevens. Naast introspectieve data en elicitatiedata blijken corpusdata in veel situaties onmisbaar, vooral wanneer het gaat om het verwerven van inzichten in hoe taal feitelijk door sprekers wordt gebezigd. Taaldescriptie - maar ook de modellering van taalgebruik voor technologische toepassingen - is ondenkbaar zonder dat aan de hand van een objectieve steekproef het voorkomen van woorden, constructies e.d. kan worden vastgesteld.

Een tekstcorpus kan ook in ruwe vorm, zonder verdere toegevoegde informatie, gebruikt worden, zeker als het gaat om het beantwoorden van eenvoudige, lexicaal-georiënteerde onderzoeksvragen. Bij andersoortige vraagstellingen blijkt veel informatie die in het corpus ligt opgeslagen echter moeizaam toegankelijk als alleen de woorden als aangrijpingspunt kunnen dienen. De gebruiksmogelijkheden nemen aanzienlijk toe wanneer het corpus wordt ontsloten door het te annoteren met taalkundige informatie. Dit is ook de reden dat het Corpus Gesproken Nederlands dat momenteel wordt aangelegd niet alleen opnames en bijbehorende orthografische transcripties omvat, maar tevens van diverse annotaties wordt voorzien. [ 1 ] In dit artikel gaan we nader in op één specifiek soort annotatie, nl. de grammaticale annotatie van een corpus (ruwweg de verrijking met woordsoortinformatie, ook wel aangeduid als part-of-speech tagging), die grotendeels automatisch kan worden aangebracht.

Woorden, woordvormen en lemmata

Wanneer we spreken over de woorden in een tekst (zoals in: 'Deze tekst omvat ca. 2000 woorden') of de woorden in een woordenboek (b.v. 'dat woord staat niet in Van Dale') dan nemen we gewoonlijk niet de moeite aan te duiden wat we daarmee precies bedoelen. Een uitspraak als 'sommige woorden in deze tekst komen niet voor in Van Dale' wordt door iedereen begrepen. Dit lijkt te suggereren dat de interpretatie in beide gevallen dezelfde is. Dit is niet het geval. De woorden in een tekst verschillen veelal van de woorden in een woordenboek. De ingangen of trefwoorden in een woordenboek zijn gewoonlijk lemmata, d.w.z. genormaliseerde grondvormen. De woorden in een tekst daarentegen zijn typisch de typografische eenheden die in een geschreven tekst door middel van spaties en/of leestekens van elkaar worden gescheiden. In het laatste geval verwijst de term woord naar een specifieke woordvorm. Verschillende vervoegingen van hetzelfde werkwoord - b.v. 'werk', 'werken', 'werkt', 'werkte', 'werkten', 'gewerkt', etc. - worden onderscheiden als woordvormen en zijn aan elkaar gerelateerd doordat zij naar één en hetzelfde lemma verwijzen. Woordvormen kunnen uiteraard ambigu zijn. Zo kan, afhankelijk van de context waarin de vorm voorkomt, 'werk' niet alleen aan het lemma 'werken' worden gekoppeld, maar ook aan het lemma 'werk'. In het eerste geval hebben we te maken met een voorkomen van het werkwoord, in het laatste met een substantief.

Wanneer we het aantal woorden in een tekst tellen, dan tellen we de tokens, d.w.z. het aantal voorkomens van de diverse woordvormen in een tekst. [ 2 ] Bij de vervaardiging van een woordfrequentielijst is de interpretatie van het woord nog weer een andere. In een frequentielijst worden de onderscheiden woordvormen (de zgn. (word) types) opgenomen die voorkomen in het bestand waarop de telling wordt gebaseerd. De lijst geeft weer met welke frequentie welke types zijn aangetroffen. In Figuur 1 is ter illustratie een fragment opgenomen uit de woordfrequentielijst die gebaseerd is op de eerste alinea van deze paragraaf.

Figuur 1. Fragment uit een woordfrequentielijst

in 13 zijn 4
de 10 woordenboek 3
een 10 te 3
woorden 7 lemma 3
het 7 geval 3
van 6 ...
tekst 6 b.v. 1
niet 5 Dale 1
aan 4 ...
we 4 In 1
werken 4 ...
worden 4 Van 1

Zoals uit Figuur 1 blijkt, is 'in' met 13 voorkomens het meest frequente woord. Merk op dat het gebruik van een hoofdletter leidt tot onderscheiden types (b.v. 'in' versus 'In') die elk afzonderlijk in de lijst worden vermeld, terwijl alle voorkomens van 'werk' op één en hetzelfde type worden afgebeeld, ongeacht of het een instantie van het werkwoord of het nomen is. Het voorkomen van 'Van' en 'Dale' als afzonderlijke types is het gevolg van het feit dat er geen interpretatie van de combinatie van woorden heeft plaatsgevonden.

Tags en tagsets

Wanneer we geïnteresseerd zijn in de frequentie van voorkomen en de distributie van lexicale items of syntactische constructies, dan ligt het voor de hand hiervoor gebruik te maken van een corpus. Het zoeken op de (ruwe) tekst kent echter allerlei beperkingen. In principe kan slechts gezocht worden op letterlijke strings, waarbij het gezochte exact moet worden gespecificeerd. Het gebruik van wildcards maakt het mogelijk de zoekvraag iets ruimer te definiëren zodat enige variatie in voorkomen kan worden afgedekt, maar brengt met zich mee dat de zoekresultaten al gauw niet-relevante voorkomens gaan omvatten. Wanneer je b.v. voorkomens zoekt van het possessieve pronomen 'zijn', levert een zoekactie naar de letterlijke string een veelheid aan voorkomens waarvan het merendeel niet-relevant blijkt. Een zoekactie waarin alle possessieve pronomina worden gezocht, veronderstelt dat alle gezochte items worden gespecificeerd. Voor zover dit de gesloten klassen betreft, bestaat hier voornamelijk het risico dat men bepaalde items vergeet. [ 3 ] In het geval van de open (productieve) woordklassen is het probleem dat het eenvoudigweg onmogelijk is alle mogelijke items vooraf te kennen.

Het zoeken in een tekst wordt sterk vereenvoudigd wanneer je kunt aangrijpen op additionele informatie die b.v. in de vorm van een grammaticale annotatie aan de tekst is toegevoegd. Aan elk token in de tekst is in dat geval een label, een zogenaamde tag, toegekend dat ten minste informatie bevat die betrekking heeft op de woordsoort van het desbetreffende token in de gegeven context. Vaak wordt deze vorm van annotatie aangeduid met de term part-of-speech (POS) tagging of de Nederlandse vertaling hiervan (woordsoorttagging of woordsoortverrijking). [ 4 ] In de meeste gevallen echter is deze aanduiding niet geheel accuraat: Niet alle tokens in een tekst zijn woorden (b.v. leestekens, cijfers) en behalve informatie over de woordsoort waartoe een woord behoort, omvat de tag ook vaak additionele semantische, syntactische en morfologische informatie die betrekking heeft op onder meer getal, geslacht, naamval en subcategorisatietype.

De verzameling van labels of tags die gebruikt wordt voor het annoteren van de tokens in een tekst wordt aangeduid met de term tagset. Het aantal en de aard van de tags die de verschillende tagsets onderscheiden alsmede de wijze waarop de informatie wordt gerepresenteerd, loopt sterk uiteen. Een vrij basale tagset omvat een gering aantal tags die slechts de woordsoorten op hoofdklassen onderscheiden. Woorden worden in dat geval ingedeeld als substantief, adjectief, voorzetsel, bijwoord, werkwoord, e.d. De representatie van de informatie in de vorm van een tag kan in principe elke willekeurige vorm aannemen, maar ervaring leert dat zowel annotatoren als gebruikers van een corpus gebaat zijn bij een vorm die onmiddellijk te duiden is. Tags van de vorm 'LID', 'VZ', 'WW' e.d. voor resp. lidwoord, voorzetsel en werkwoord zijn derhalve te verkiezen boven b.v. numerieke aanduidingen. Het aantal tags in een tagset kan beduidend groter zijn wanneer naast het onderscheid op hoofdklassen allerlei subklassen worden aangemerkt en er allerhande additionele kenmerken worden opgenomen. Zo heeft de tagset die gebruikt wordt voor het Corpus Gesproken Nederlands 316 tags. [ 5 ] Naarmate de tagset omvangrijker wordt en de informatie diverser, wordt het van belang de tags goed te structureren. Een veel voorkomende vorm van tags is die waarbij er twee niveaus worden onderscheiden. Op het eerste niveau worden de hoofdklassen aangeduid. Aan elk van deze hoofdklassen kan op het tweede niveau additionele informatie worden toegevoegd in de vorm van één of meer attributen. Voorbeelden van dergelijke tags zijn te zien in Figuur 2.

Figuur 2. Een getagde zin (uit het Corpus Gesproken Nederlands) waarbij voor elk token naast de juiste tag alle mogelijke alternatieven zijn aangegeven [ 6 ]

De LID(bep,stan,rest) SPEC(vreemd) VNW(pers,pron,dial)
meeste VNW(onbep,grad,stan,prenom,met-e,agr,sup) VNW(onbep,grad,stan,nom,met-e,zonder-n,sup)
werknemers N(soort,mv,basis)
in VZ(init) SPEC(vreemd) VZ(fin) WW(pv,tgw,ev)
de LID(bep,stan,rest) SPEC(vreemd) VNW(pers,pron,dial)
branche N(soort,ev,basis,zijd,stan)
zijn WW(pv,tgw,mv) N(soort,ev,basis,onz,stan) VNW(bez,det,stan,vol,3,ev,prenom,zonder,agr) WW(inf,nom,zonder,zonder-n) WW(inf,prenom,zonder) WW(inf,vrij,zonder)
weer BW() N(soort,ev,basis,onz,stan) N(soort,ev,basis,zijd,stan) WW(pv,tgw,ev)
aan VZ(init) VZ(fin)
het LID(bep,stan,evon) VNW(pers,pron,obl,nadr,3p,mv)
werk N(soort,ev,basis,onz,stan) WW(pv,tgw,ev)
. LET()

Dergelijke gestructureerde tags hebben een aantal voordelen: Ze bieden de mogelijkheid bij de verschillende woordsoorten precies die informatie aan te duiden die relevant is. De compositionaliteit van de tags zorgt ervoor dat elk stukje informatie optimaal toegankelijk is. In situaties waar voor een bepaalde toepassing attributen niet van belang zijn, kunnen deze eenvoudig ondergespecificeerd of zelfs geheel weggelaten worden. Tot slot, het vergelijken van tagsets en ook het afbeelden van de ene tagset op de andere wordt vereenvoudigd. Dit laatste is met name van belang voor gebruikers die, bij afwezigheid van een standaard, geconfronteerd worden met corpora die van verschillende tagsets gebruik maken. [ 7 ]

Tokenisation

Voordat tot het feitelijk taggen van tekst kan worden overgegaan moet eerst worden vastgesteld wat de te taggen tokens zijn die in die tekst voorkomen. De belangrijkste bewerking tijdens dit tokenisationproces is het opsplitsen van de lopende tekst in afzonderlijke tokens. Op het eerste gezicht lijkt dit misschien triviaal en tot op zekere hoogte is dat ook zo. Het merendeel van de tokens in een tekst zijn immers woorden die zijn afgebakend door middel van spaties. Daarnaast kunnen veel leestekens eenvoudig worden gescheiden van de woorden waar zij onmiddellijk aan voorafgaan of waarop zij direct volgen. Er zijn echter ook een aantal situaties waar de identificatie van tokens minder eenvoudig is. Bij clitica (zoals 'da's'), elliptische vormen (b.v. 'z'n'), afkortingen, getallen, scheidbare woorden (b.v. 'bellen … op'), meerwoordsexpressies (waaronder eigennamen, maar ook voorkomens als 'ad hoc' en 'ten aanzien van' ), e.d. is additionele informatie nodig om vast te kunnen stellen of afsplitsing van bepaalde delen gewenst of noodzakelijk is, of dat verschillende delen juist bij elkaar gevoegd moeten worden. Daarbij kan in sommige gevallen de context uitsluitsel geven; in andere gevallen zal het lexicon moeten uitmaken of iets als zelfstandig token moet worden herkend.

Naast het afgrenzen van de tokens in een tekst kan het tokenisationproces nog een aantal andere bewerkingen omvatten, waarbij onder meer markupsymbolen worden verwijderd en het gebruik van hoofdletters wordt geïnterpreteerd als zijnde lexicaal bepaald of contextafhankelijk.

Tagging

Is eenmaal bekend wat de afzonderlijke tokens in een tekst zijn, dan wordt per token vastgesteld welke tags van toepassing zouden kunnen zijn. Dit gebeurt aan de hand van een lexicon, al dan niet in combinatie met een programma voor morfologische analyse. [ 8 ] Voor ieder token moet in deze fase tenminste één mogelijke tag kunnen worden vastgesteld. In het ideale geval is de dekkingsgraad van het lexicon zodanig dat voor alle voorkomende types exact de juiste verzameling tags wordt gevonden. In de praktijk is dat meestal niet het geval. Er zijn altijd typen die niet in het lexicon voorkomen, zoals nieuwe woorden in de taal (waaronder ook veel eigennamen en samenstellingen), maar ook vreemdtalige woorden en fout gespelde woorden. In deze gevallen wordt gebruik gemaakt van een aantal heuristieken die alsnog proberen vast te stellen wat de mogelijke tags voor het token zijn, op basis van heel uiteenlopende aanwijzingen zoals hoofdlettergebruik ('Pholips'), uitgangen ('veelvoudigste'), woordpatronen ('gebobuleerd') of bijzondere tekens ('n.oostdijk@let.kun.nl'). Behalve het ontbreken van types in het lexicon kan het ook voorkomen dat de set van mogelijke tags voor een type onvolledig is. Beide hebben uiteindelijk een nadelig effect op het eindresultaat.

Nadat per token de verzameling van mogelijke tags is vastgesteld, wordt vervolgens voor elk token bepaald welk van deze tags in de huidige context de voorkeur geniet (in Figuur 2 zijn dit de vetgedrukte tags). Over het algemeen (en ook bij het CGN project) wordt hiervoor gebruik gemaakt van een probabilistische benadering, met name vanwege het feit dat de ontwikkeling van een probabilistische tagger een relatief geringe inspanning vergt in vergelijking met de ontwikkeling van een regelgebaseerde tagger, terwijl de resultaten alleszins acceptabel zijn. [ 9 ] We beschrijven daarom als eerste het taggingproces zoals dat verloopt in geval er gebruik gemaakt wordt van een probabilistische benadering.

Een probabilistische tagger bepaalt de waarschijnlijkheid van elke mogelijke tag aan de hand van frequentie- en distributie-informatie. In het lexicon kan al informatie bevat zijn over het voorkomen en de distributie van token-tagcombinaties. Daarnaast kan gebruik worden gemaakt van informatie over de waarschijnlijkheid van een tag gegeven een specifieke context. Beide soorten informatie worden over het algemeen afgeleid uit eerder geannoteerd materiaal, en de betrouwbaarheid ervan is afhankelijk van de hoeveelheid en de kwaliteit van de data waarop zij is gebaseerd. De nauwkeurigheid waarmee een probabilistische tagger de juiste tags aan de tokens in een tekst toekent bedraagt gewoonlijk zo'n 95-97%. Daarbij speelt onder meer de complexiteit van de tagset een rol: naarmate het aantal subclassificaties dat wordt onderscheiden groter is ('de tagset een hogere granulariteit heeft'), en ook de ambiguïteit ten aanzien van de toe te kennen tags per token toeneemt, zal de nauwkeurigheid afnemen. Een andere factor die van invloed is op de nauwkeurigheid, is het feit dat de context bij het bepalen van de waarschijnlijkheid van een tag om computationele redenen vaak beperkt blijft tot twee à drie tokens links resp. rechts van het huidige token. Dit heeft met name een nadelig effect in die situaties waar afhankelijkheidsrelaties en verbanden zich over grotere afstanden uitstrekken. Kijken we naar de meer gangbare tagsets dan zien we dat deze voornamelijk tags omvatten die zich baseren op onderscheiden die eenvoudig te maken zijn op basis van de lexicale vorm (b.v. comparatief, superlatief) of de directe context (b.v. infinitief, tegenwoordige tijd). Tagsets waarin daarnaast onderscheiden worden aangeduid waarvoor een diepergaande analyse nodig is, zoals bijvoorbeeld de transitiviteit van het werkwoord in een gegeven context, zijn daarentegen uitzonderlijk.

In plaats van gebruik te maken van een probabilistische benadering kan gekozen worden voor een regelgebaseerde benadering. Hierbij wordt een set van context-gevoelige regels opgesteld die beschrijft welke tag in een gegeven context aan een token moet worden toegekend. Een belangrijk verschil met de probabilistische benadering is dat het toewijzen van een tag gebeurt op basis van absolute aanwijzing of uitsluiting i.p.v. een weging van waarschijnlijkheden. Hoewel dergelijke regels automatisch kunnen worden afgeleid uit reeds geannoteerd materiaal, blijkt deze benadering met name succesvol wanneer de regels handmatig worden opgesteld. De nauwkeurigheid kan in dat geval oplopen tot boven de 99%. Zo wordt voor de ENGCG tagger een percentage van 99,7% gerapporteerd (Karlsson e.a. red. 1995:281). [ 10 ]

Controle en redactie

Het taggingproces kan in principe volledig automatisch verlopen, zonder enigerlei tussenkomst van de mens. Afhankelijk van de beoogde toepassing waarvoor men de getagde tekst wil gebruiken en de eisen die dit stelt aan de kwaliteit van de tagging, kan besloten worden de output te accepteren zoals die is of over te gaan tot het (handmatig) controleren en waar nodig corrigeren van de door de tagger toegekende tags. De controleur/redacteur kan hierbij zijn voordeel doen met een opzet waarbij op zijn scherm de tekst en de output worden getoond en er enkel actie van hem wordt gevraagd wanneer een toegekende tag fout wordt bevonden. Bij voorkeur worden de mogelijke alternatieve tags via een op te roepen menu aangeboden zodat de controleur/redacteur zich kan beperken tot de selectie van de juiste tag. Dit komt de snelheid ten goede en voorkomt onnodige fouten die maar al te snel optreden wanneer van de controleur/redacteur verwacht wordt de juiste tag zelf in te voeren. [ 11 ]

Hoewel het redigeren van taggeroutput wordt gedaan om tot een beter eindresultaat te komen, wil dit niet zeggen dat de tagging uiteindelijk gegarandeerd foutloos is. Wanneer wordt overgegaan tot wijziging van een tag, is dit niet noodzakelijkerwijs een verbetering. Een bijkomend nadeel is dat langs deze weg gemakkelijk inconsistenties worden geïntroduceerd.

Afsluitende opmerkingen

Getagde corpora vinden hun onmiddellijke toepassing in exploratief taalkundig en lexicografisch onderzoek. Daarnaast zijn zij onmisbaar voor de (verdere) ontwikkeling van taaltechnologische tools zoals spellingcontroleprogramma's. Behalve dat taggers gebruikt worden om corpora te annoteren (waarbij het getagde corpus als eindresultaat wordt gezien), worden ze veelvuldig ingezet als component van een groter geheel, waarbij de grammaticale annotatie slechts als tussenresultaat geldt en ertoe dient de verdere bewerking te vereenvoudigen.

Voor wie meer wil weten over tagging, tagsets en zaken die daarmee verband houden, verwijzen we naar het boek onder redactie van Hans van Halteren (1999) dat geheel aan deze onderwerpen is gewijd.


Nelleke Oostdijk en Hans van Halteren
Katholieke Universiteit Nijmegen


Bibliografie

EAGLES guidelines (1996). Expert Advisory Group on Language Engineering Standards. Recommendations for the Morphosyntactic Annotation of Corpora. EAGLES Document EAG-TCWG-MAC/R.

Halteren, H. van (red.) (1999). Syntactic Wordclass Tagging. Dordrecht: Kluwer Academic Publishers.

Karlsson, F., A. Voutilainen, J. Heikkilä en A. Anttila (red.) (1995). Constraint Grammar. A Language-Independent System for Parsing Unrestricted Text. Berlijn - New York: Mouton de Gruyter.

Oostdijk, N. (2000). Het Corpus Gesproken Nederlands. Nederlandse Taalkunde 5, 280-284.

Van Eynde, F. (2000). Part-of-Speech Tagging en Lemmatisering. http://lands.let.kun.nl/cgn/pub_00.htm


Appendix: Verklaring van de in Figuur 2 gebruikte afkortingen

LID lidwoord VZ voorzetsel
SPEC speciaal WW werkwoord
VNW voornaamwoord BW bijwoord
N zelfstandig naamwoord LET leesteken

bep bepaald init initieel: voorzetsel
stan standaard fin finaal: achterzetsel
rest rest pv persoonsvorm
vreemd vreemdtalig woord tgw tegenwoordige tijd
pers persoonlijk ev enkelvoud
pron pronomen zijd zijdig
dial dialectisch onz onzijdig
onbep onbepaald bez bezittelijk
grad gradeerbaar det determiner
prenom prenominaal gebruikt vol volledige vorm
met-e vervoegd met -e 3 derde persoon
agr agreement zonder niet vervoegd met -e
sup superlatief inf infinitief
nom nominaal gebruikt vrij vrij gebruikt
zonder-n niet vervoegd met -n evon enkelvoud onzijdig
soort soortnaam obl oblique: datief/accusatief
mv meervoud nadr nadrukkelijk
basis basisvorm 3p derde persoon


Noten

[ 1 ] Over het Corpus Gesproken Nederlands is eerder in deze rubriek een artikel verschenen (Oostdijk 2000). Voor actuele informatie zie http://lands.let.kun.nl/cgn/home.htm.
[ 2 ] Strikt genomen worden ook de leestekens tot de tokens gerekend.
[ 3 ] Dit is met name het geval wanneer het gaat om minder gangbare vormen, zoals b.v. dialectische of archaïsche vormen.
[ 4 ] Andere aanduidingen zijn o.a. 'morfo-syntactische annotatie' en 'syntactische woordsoorttagging'.
[ 5 ] Een beschrijving van de CGN-tagset wordt gegeven in Van Eynde (2000).
[ 6 ] Een verklaring van de gebruikte afkortingen is te vinden in de Appendix.
[ 7 ] Hoewel een standaard voor de annotatie van corpora tot op heden ontbreekt, zijn er wel richtlijnen beschikbaar in de vorm van de EAGLES guidelines (1996), waarin onder andere in kaart gebracht wordt welke subclassificaties voor de verschillende talen van toepassing zijn.
[ 8 ] Een afzonderlijke morfologische analyse is te prefereren bij morfologisch rijke talen, maar ook wanneer men tevens geïnteresseerd is in het lemma van een gegeven token.
[ 9 ] Daarbij komt nog dat de interesse van de taalkundige zich bij voorkeur richt op zaken waarvoor verdergaande taalkundige inzichten nodig zijn. De taggingtaak wordt door velen als taalkundig weinig uitdagend gezien.
[ 10 ] Hierbij moet worden opgemerkt dat in 4% van de getagde tokens de tagger een ambigu resultaat oplevert waarbij aan een token meer dan één tag wordt toegekend waaronder in ieder geval de juiste in de gegeven context.
[ 11 ] Het betreft hier uiteenlopende fouten, variërend van eenvoudige typefouten tot het gebruik van niet-bestaande tags.


[ Naar het begin van deze pagina ]   [ Naar de DigiTaal-openingspagina ]

Deze pagina is aangemaakt op 08-04-2002 door Matthias Hüning