Doctoraalscriptie (1996)
K.U. Nijmegen


Subcategorisatie
Een onderzoek naar SUBCATEGORISATIE en de verwerking ervan in een NLP-systeem.

Simon van Dreumel

DCG als unificatiegrammatica

DCG staat voor Definite Clause Grammar. Een DCG bestaat uit een verzameling regels die min of meer te vergelijken zijn met herschrijfregels of opbouwregels, met dien verstande dat hierbij nog variabelen geünificeerd kunnen worden. Een DCG-regel kan de volgende vormen aannemen:

  1. moeder —> alternatief1; ... ; alternatiefn.
  2. moeder(VAR*) —> dochter1(VAR*), ... , dochtern(VAR*).
  3. moeder —> [terminaal].

De bouwsteen is een predikaatnaam, een 'functor' in Prolog-termen, eventueel gevolgd door een of meer variabelen. Aan de linkerkant van de herschrijfpijl is steeds de predikaatnaam van de moederknoop. Aan de rechterkant ervan staan de predikaatnamen van nul of meer dochters, waarbij aangrenzende dochters gescheiden worden door een komma. Alternatieven worden gescheiden door punt-komma's. Non-terminale knopen worden steeds weer herschreven totdat een moederknoop wordt herschreven in een terminale dochter, weergegeven tussen rechte haakjes [...]. In de haakjes- of boomstructuren zijn de terminale symbolen de eindknopen, in dit geval de lexicale eenheden (woorden) van de zin.

Voor het doorgeven en sturen van waarden van variabelen speelt unificatie een belangrijke rol. Unificatie is altijd binnen een locaal domein: alleen binnen een regel, waarin de relatie van moeder en directe dochters is weergegeven, unificeren gelijke variabelnamen. Dus in de regel:
  np(GETAL) —> noun(GETAL).
unificeren de twee variabelen bij respectievelijk 'np' en 'noun', omdat hier de variabelnaam van beide variabele gelijk is. Bij unificatie moet de waarde van de variabele GETAL bij 'np' dan ook gelijk zijn aan de waarde van variabele GETAL bij 'noun'.

Als alles unificeerbaar is tijdens het parseren en de input-lijst verwerkt is, dan wordt minimaal één analyse opgeleverd (het kunnen er ook meer zijn).

De boomstructuur wordt opgeleverd door in iedere DCG-regel een variabele op te nemen die telkens – recursief – de locale boomstructuur (moeder — dochters) in de vorm van een haakjesstructuur meeneemt. Bijvoorbeeld:

  np(np(DET,NOUN)) —> det(DET), noun(NOUN).
  det(det(het)) —> [het].
  noun(noun(boek)) —> [boek].

Deze TREE-variabele moeten we dus eerder als een administratieve variabele beschouwen: het houdt de geparseerde structuur bij en slaat die in de vorm van een haakjesstructuur op. Om deze haakjesstructuur verenigbaar te kunnen maken met het formaat van de haakjesstructuur zoals in GRAMTSY \footnote{GRAMTSY is een Grammaticaal Transformationeel Systeem, ontwikkeld door P.A. Coppen.}, scheid ik de features duidelijk van de categorie-namen door deze features op te nemen onder de naam feat. Via conversie-regels (DCG-to-GRAMTSY) worden de features onder feat in een featurebundel fb<...> geplaatst zoals dat het geval is in GRAMTSY. Met ARBOR, een boomtekenprogramma dat is ontwikkeld door P.A. Coppen, kunnen de boomstructuren worden getoond van de haakjesstructuren in GRAMTSY-formaat.

Hieronder zal ik de algemene opzet van mijn implementatie uiteenzetten. De kern is hier hoe subcategorisatie daarin is verwerkt is en wat daarbij de uitgangspunten zijn.



Voor opmerkingen of vragen over deze pagina kunt u contact opnemen met Simon van Dreumel
Laatst gewijzigd op 25 augustus 2025