Jan van Bakel.



Automatisering van het WBD
Een voorstel0



Terug naar hoofdmenu

In tijden van bezuiniging - zoals we ze de laatste jaren meemaken - heeft een project als dat van het Woordenboek van de Brabantse Dialecten (WBD) heel wat te verduren. Een zware druk wordt uitgeoefend in de personele sector, juist die sector waar een 'handwerk' zijn grootste behoeften voelt.
In het verleden heb ik erg dicht gestaan bij de wieg van het WBD. Dat schept een betrokkenheid bij het project, die er oorzaak van is dat ik mij ertoe heb gezet een bijdrage te leveren tot de voortzetting ervan. Daarvandaan dit voorstel tot automatisering. Het heeft een aantal interessante eigenschappen, wat naar ik hoop in het vervolg duidelijk zal worden. Als randvoorwaarde beschouw ik de eis, dat de afleveringen van het WBD geheel dezelfde vorm moeten behouden die ze nu ook hebben, in het bijzonder ook in de grafische zin van het woord. Het doel van de automatisering moet zijn een ingrijpende beperking van de personele kosten zowel voor het schrijven van het woordenboek als voor zijn produktie. Het zal blijken, dat het zetten, dat in dit voorstel geheel geautomatiseerd is, praktisch een tijd gelijk aan nul gaat vergen, terwijl de correctie van drukproeven komt te vervallen. Ik zal beneden zodanig gedetailleerd op de zaken ingaan, dat zonder uitvoerige nadere analyse aan de programmering kan worden begonnen. 

1. Structuur WBD

Alleen projecten die expliciet defineerbare zaken tot object hebben lenen zich voor automatisering. Als het WBD niet zou behoren tot die categorie, zou het niet automatiseerbaar zijn. Gelukkig hoort het wel tot die categorie, zoals tot uitdrukking komt in de volgende formele beschrijving: 1

WBD
 
HOOFDSTUK
 
LEMMA
 
LEMMA-KOP
 
 
LEMMA-BODY
 
 
BODY-ELEMENT
 
DOCUMENTERINGEN
 

DOCUMENTERING
 
PLAATSEN
HOOFDSTUKHOOFDSTUKWBD
LEMMA LEMMA HOOFDSTUK
lemma-ingang LEMMA-KOP LEMMA-BODY
VERTALINGEN BRONNEN TOELICHTING
BODY-ELEMENT BODY-ELEMENT LEMMA-BODY
DOCUMENTERINGDOCUMENTERING
DOCUMENTERINGEN
DIALECTWOORD-DDB PLAATSEN
plaats plaats PLAATSEN

Grammatica 1

Onder deze beschrijving wordt afgezien van de inwendige structuur van de HOOFDSTUKKEN.

2. Automatisering WBD


Automatisering van het WBD stelt de volgende eisen:
  • Er moet een geautomatiseerd (d..w.z. automatisch toegankelijk) databestand gebouwd worden van de ruwe gegevens die de basis vormen: de antwoorden die zijn binnengekomen op vragenlijsten en de gegevens die in monografieën worden aangetroffen. Ik noem dit het Ruwe Databestand (RDB).
  • Er moet een geautomatiseerd databestand gebouwd worden dat een getrouwe afspiegeling is van de vorm van het WBD (of een deel daarvan) zelf. Ik noem dit: Definitief Databestand (DDB).
  • Er moet een werkbare definitie worden gegeven voor de vorm van de gegevens in het RDB en een systeem ontworpen voor de invoer van die gegevens. Ik noem dat systeem: Basis Invoersysteem (BIS).
  • Er moet een systeem ontworpen worden voor de compositie van de definitieve woordenboek-tekst op basis van het RDB. Ik noem dat systeem: het Redactionele Compositiesysteem (RCS). Als extra eis wordt gesteld, dat de onder het RCS opgebouwde tekst onder controle van hetzelfde systeem voorzien kan worden van alle coderingen die nodig zijn om de tekst automatisch te zetten. Het resultaat van het RCS moet een tekst zijn die automatisch geformat kan worden voor een fotocomposer.2
Wil de automatisering een zo groot mogelijk effect hebben, dan zal de relatie tussen het RDB en het DDB geformaliseerd moeten zijn. Die formele relatie kan niet inhoudelijk zijn in die zin, dat door middel van programmatuur bepaald zou kunnen worden welke elementen uit het RDB gebruikt moeten worden voor een bepaald lemma. De relatie kan wel formeel zijn voor alle vormelijke eigenschappen van het woordenboek die boven gedefinieerd zijn.

3. Het Ruwe Databestand (RDB) en het Basis Invoersysteem (BIS)

Zelfs het opbouwen van het ruwe databestand levert een aantal problemen op, welker oplossing niet geheel triviaal is. Ik heb het oog op de vraag hoe de dialectvormen op een aanvaardbare manier kunnen worden gecodeerd en hoe dubbel werk kan worden voorkomen. Op binnengekomen vragenlijsten verschijnen reeksen antwoorden in dialectvormen die, ofwel in de vorm waarin ze genoteerd zijn ofwel in de vorm die de redactie van het woordenboek ervoor in de plaats wil stellen, overeenkomen. Wanneer men zou besluiten de ontvangen gegevens om te spellen voordat ze hun plaats in het RDB gaan innemen, moet de omspelling gebeuren op grond van ieder woord op iedere vragenlijst. Op basis van:

opgegeven-vorm-i + plaats-i ... opgegeven-vorm-n + plaats-n

wat in het RDB zou voeren tot:

omgespelde-vorm-i + plaats-i ... omgespelde-vorm-n + plaats-n

zou men liever willen krijgen:

omgespelde-vorm-p + (plaats-i ... plaats-n)
omgespelde-vorm-q + (plaats-o ... plaats-t)

Hoe men de eisen op dit punt ook nader wil formuleren, het lijkt wel zeker, dat de antwoorden van de vragenlijsten niet direct vanaf de vragenlijsten kunnen worden overgenomen in het RDB; er moet een voorbewerking aan voorafgaan en wel een die verricht moet kunnen worden door personen die alleen terdege geschoold zijn in fonetische schriften. Die voorbewerking levert, naar ik voorstel, een stapel fiches die op orde zijn gebracht, zodat de omspelling zich kan beperken tot een enkele activiteit voor een hele reeks van antwoorden.

Voor het ruwe databestand stel ik de volgende structuur voor:

RDB
 
INSCHRIJVING
PLAATSEN
PLAATS
INSCHRIJVING INSCHRIJVING RDB
DIALECTWOORD-RDB PLAATSEN
PLAATS PLAATS PLAATSEN
COMMENTAAR plaatscode plaatscode

Grammatica 2

De plaatscode spreekt voor zichzelf; met COMMENTAAR wordt bedoeld de nadere informatie die bij het antwoord op een bepaalde vragenlijst toegevoegd kan zijn.
Een niet geringe moeilijkheid vormt de codering voor de machine van al die verschillende dialectklanken die men wenst te onderscheiden. Eén enkele keer zal men die vorm in de machine moeten brengen. Dat is in zoverre een gecompliceerde zaak, dat men zich moeilijk een systeem kan voorstellen waarbij de gebruikte symbolen voor het voorstellingsvermogen iets zeggen. Is het al moeilijk een adekwate voorstelling te maken bij de [Ø], nog moeilijker is dat bij bijvoorbeeld de [Õ], indien dat symbool gekozen zou worden.
Ik wil een proeve geven van een zodanige representatie van de dialectwoorden dat bepaalde fouten, die met de hand gemaakt zouden kunnen worden, automatisch kunnen worden opgespoord. Het gaat hier om de grammatica die geldt voor de dialectwoorden in het RDB.

DIALECTWOORD-RDB
DIALECTVORM
DIALECTTEKEN
VOCAAL

CONSONANT

GEACCENTUEERDE VOCAAL

AIGU
GRAVE
BOOGJE
STREEP
CIRCONFLEX
CIRCONFLEX EERSTE
TREMA
ONGEACCENTUEERDE VOCAAL
VRIJE VOCAAL
GEACCENTUEERDE CONSONANT
ONGEACCENTUEERDE CONSONANT
VRIJE CONSONANT
ONDERPUNT
CLUSTER
SJWA
#(DIALECTVORM #)
DIALECTTEKENDIALECTTEKENDIALECTVORM
CLUSTER VOCAAL CONSONANT SJWA
GEACCENTUEERDE VOCAALONGEACCENTUEERDE VOCAAL VRIJE VOCAAL
GEACCENTUEERDE CONSONANT ONGEACCENTUEERDE CONSONANT VRIJE CONSONANT

AIGU CIRCONFLEX CIRCONFLEX EERSTE GRAVE BOOGJE STREEP TREMA
( ee aa e a o ) '
( ee aa oo eu e a o ) `
( ie uu oe ) ~
( ie uu oe )
( ie uu oe ee oo eu ) ^
( ie uu oe ee oo eu ) ˆ
0 ··

ao ui ei i
ie uu oe ee eu aa oo a o e

ONDERPUNT

b c f g h j k m p v w z
n l r s t d z
VRIJE CONSONANT .
i-j n-g
@ .

Grammatica 3

Onder deze definitie is het mogelijk de in het RDB ingebrachte gegevens te testen op hun juistheid, althans te zien of ze gebouwd zijn in strijd met de regels. Het DIALECTWOORD-RDB zal in een latere fase automatisch worden omgebouwd tot de gewenste vorm DIALECTWOORD-DDB. Dat zal gebeuren onder de beneden te behandelen commando-set van het RCS.
In Grammatica 3 is aangegeven op welke wijze de dialectvorm van de vragenlijst (in omgespelde vorm) in het RDB moet worden ingebracht. Met voorbeelden:

#(b@haa/w@#)
#(nol.t#)
#(schie''f#)

Er is gestreefd naar zo groot mogelijke eenvoud en naar een afbeelding die enigszins aanknoopt bij traditioneel bekende weergevingen. Zoals analyse van de grammatica laat zien zijn alle spellingen mogelijk die in de Voorlopige Inleiding van het Woordenboek werden gedefinieerd.

Het BIS zal zodanig moeten zijn, dat het data accepteert die wat hun structuur betreft voldoen aan de eisen die in de grammatica van DIALECTWOORD-RDB geïmpliceerd zijn. Een programma van eenvoudige structuur kan de grammaticale toetsing die daarvoor vereist is uitvoeren. Het is ook mogelijk, en zelfs wenselijk, dezelfde grammaticale test ook in te bouwen in het programma-pakket dat het RCS vormt. Telkens wanneer er een DIALECTWOORD-RDB wordt geplaatst in het DDB kan zo een eventuele fout worden gesignaleerd.
Voor de duidelijkheid moet hieraan worden toegevoegd, dat aan de hand van een stapeltje fiches, waarin de omspellingen al op efficiente wijze zijn aangegeven, de gegevens volgens de structuur van een INSCHRIJVING (zie Grammatica 2) op ponskaarten moeten worden gebracht. Dit is het enige moment waarop de vorm van het gegeven met de hand wordt beroerd. In alle volgende fases is het altijd een onderdeel van de programmatuur die het dialectwoord behandelt; daarbij kunnen dus geen fouten meer ontstaan.

3. Het definitieve databestand (DDB) en het redactionele compositiesysteem (RCS)

Aan de hand van Grammatica 3 is het mogelijk de grammatica voor het definitieve databestand, te weten Grammatica 1, vanuit het symbool DIALECTWOORD-DDB nader uit te werken. Deze uitbreiding loopt geheel parallel met Grammatica 3. Het verschil is dat bepaalde eindsymbolen uit de vorige grammatica nu gewijzigd worden tot de codes die in het DDB koppeling met fonetische tekens in het zetsel moeten toelaten.
In dit verband is een verduidelijking noodzakelijk m.b.t. het begrip codes (ook macro's, macro-codes te noemen) dat hier bedoeld wordt. Een code is een reeks van symbolen van een unieke structuur - beginnend en eindigend op een andere wijze dan alle andere reeksen van karakters van de tekst - die door een eenmalig programma wordt geïnterpreteerd tot tekst en/of zetinstructie-code. Overal waar een bepaalde code in de tekst verschijnt wordt die door dat eenmalige programma vervangen door een interpretatie die inhoudt 'ga over op cursief', 'selecteer een e met een trema' e.d. Alle mogelijke grafische keuzen kunnen zo gemaakt worden.
Wat in verband daarmee in Grammatica 3 gewijzigd moet worden zijn de volgende regels:3

#(
#)
AIGU
GRAVE
BOOGJE
STREEP
CIRCONFLEX
CIRCONFLEX EERSTE
TREMA
ONDERPUNT
SJWA
!.(diaw.
!.)diaw.
!.aigee. !.aigaa. !.aige. !.aiga. !.aigo.
!.grvee. !.grvaa. !.grvoo. !.grveu. !.grve. !.grva. !.grvo.
!.bgie. !.bguu. !.bgoe.
!.strie. !.struu. !.stroe.
!.cfee. !.cfie. !.cfuu. !.cfeu. !.cfoo. !.cfoe.
!.cflee. !.cflie. !.cfluu. !.cfleu. !.cfloo. !.cfloe.
!.tremo.
!.opn. !.opl. !.opr. !.ops. !.opt. !.opd. !.opz.
!. sjwa.

Grammatica 4

De noodzaak van de extra codes blijkt hier duidelijk omdat in de characterset van de computer niet de gewenste tekens beschikbaar zijn.

Als we aan de functie van die codes wat systematischer aandacht willen besteden moet het volgende opgemerkt worden. Het WBD is een stroom symbolen van verschillende orde en van verschillende soort. Beide, orde en soort, weerspiegelen een systeem, logisch, semantisch en/of hiërarchisch van aard. In een boek is de titel van een hoofdstuk van andere orde dan het paginanummer, een voetnoot van andere orde dan de inhoudsopgave, een inschrijving in de inhoudsopgave van andere orde dan de titelpagina. Al deze verschillen kunnen van zo groot belang geacht worden, dat men ze grafisch tot uitdrukking wil brengen. Als we onder verschillende soorten verstaan: andere grootten, zouden acht onderscheidingen op de hiërarchische (logische, semantische) ladder weerspiegeld moeten worden in acht lettergrootten. Natuurlijk kunnen we de soortigheid van de letter andere dimensies erbij geven, bv. vet en cursief. Passen we deze middelen systematisch toe, dan zouden alle cursief gezette stukken tekst iets gemeen moeten hebben, zoals ook alle stukken vet, alle stukken korps-8 romein, etc.
Om op alles voorbereid te zijn wordt de organisatie van het DDB zodanig ingericht, dat rondom alle stukken tekst die semantisch (hiërarchisch, logisch) een eenheid vormen openende en sluitende macro's worden geplaatst. De plaatsing van de macro's wordt geheel bepaald door de formele structuur van het WDB (zie Grammatica 1). We zouden de symbolen van de grammatica kunnen gebruiken als macro's Het WBD ziet er dan uit als een stroom symbolen:

!.(WBD. ..................... !.)WBD.

Daarbinnen ziet een LEMMA eruit als een stroom symbolen:

!.(LEMMA. ....................... !.)LEMMA.

Indien volgens de gedefinieerde grammaticale structuur op deze wijze macro's in de tekst worden opgenomen, zal het mogelijk zijn langs geheel automatische weg het zetsel te produceren. Ook het voortbrengen van het fonetische zetsel kan op overeenkomstige wijze worden gecontroleerd: er wordt in het DDB een macro opgenomen voor ieder fonetisch symbool uit het RDB (zie de eindsymbolen van Grammatica 4) en later wordt die macro vertaald naar de reeks grafische instructies die het bedoelde symbool op papier moeten brengen.

In ons voorstel is erin voorzien dat de schrijver van het woordenboek nimmer zelf een code hoeft in te typen. Het programma dat we beneden karakteriseren is zodanig geconcipieerd dat het in staat is te beslissen welke macro's moeten worden toegevoegd rondom de tekst die de redacteur kiest.
Het DDB zal, naar ik mij voorstel, nooit in zijn geheel in geautomatiseerde vorm aanwezig zijn. Het zal altijd slechts gaan om één of twee delen (afleveringen) van het WBD die in bewerking zijn. We hoeven het DDB dan ook niet anders te bezien dan onder het opzicht van een niet nader gekarakteriseerde ordening van LEMMAta (zie Grammatica 1).
Omdat het DDB (overwegend) op automatische wijze tot stand komt en wel onder controle van het RCS, is het 't meest zinvol dat systeem te karakteriseren.

Het RCS is een editor-achtig programma waarmee DDB-bestanden kunnen worden gecreëerd. Het houdt de structuur van een DDB-bestand in stand en breidt het uit. De plaatsbepalingen, zowel wat betreft de bron (RDB) als wat betreft de bestemming (DDB) gebeurt volgens de structuren die boven in verschillende grammatica's gedefinieerd werden. Door middel van een speciaal commando - dat beschermd kan zijn, zodat het niet door onbevoegden wordt gebruikt - krijgt men toegang tot het RCS:

systeem: EDITOR
user: redactie-wbd
systeem: ENTER PASSWORD
user: ...........
systeem: RCS

Vanaf dit punt dienen er voor de redacteur verschillende mogelijkheden open te staan met het oog op de verschillende soorten werkzaamheden die hij aan het DDB wil verrichten. We geven een indruk van de mogelijkheden door een paar belangrijke commando's met hun verschillende effecten te beschrijven:

create hoofdstuk / pointer in DDB

RCS genereert de tekst:

!.(hoofdstuk.
!.)hoofdstuk.

en voegt die toe aan het bestand DDB op het punt aangegeven door pointer in DDB.

create lemma / pointer in DDB

RCS genereert de tekst:

!.(lemma.
!.(lemma-ingang. !.)lemma-ingang.
!.(lemma-kop.
         !.(vertalingen. !.)vertalingen.
         !.(bronnen. !.)bronnen.
         !.(toelichting. !.)toelichting.
!.)lemma-kop.
!.(lemma-body. !.)lemma-body.
!.)lemma.

en voegt die toe aan het bestand DDB op het punt aangegeven door pointer in DDB.

copy / string / pointer in DDB

Er zijn nu 2 mogelijkheden

  1. De INSCHRIJVING (zie Grammatica 2) wordt als eerste geplaatst binnen de LEMMA-BODY, d.w.z. rechts van de reeds aanwezige macro !.(lemma-body. of rechts van een reeds aanwezige macro !.)body-element. Dit houdt in dat het toegevoegde dialectwoord met plaatsaanduidingen niet valt onder een reeds bestaand TYPE-IN-VET. RCS genereert in dit geval de tekst:

    !.(body-element.
            !.(type-in-vet. !.)type-in-vet.
            !.(documenteringen.
              !.(documentering.
              ..............
              !.)documentering.
           !.)documenteringen.
    !.)body-element.

  2. De INSCHRIJVING wordt als nieuwe documentering binnen een reeds geplaatst TYPE-IN-VET toegevoegd, d.w.z. rechts naast een reeds aanwezige code !.)documentering. RCS genereert in dit geval de tekst:

    !.(documentering.
    ...................
    !.)documentering.

    Zowel in het eerste als in het tweede geval wordt de actueel toegevoegde tekst, de gemodificeerde waarde van 'string', gezet binnen de 'documentering'. RCS test de structuur van deze 'string' tegen INSCHRIJVING (zie Grammatica 2). Die string, afkomstig uit het RDB, krijgt de vorm:

    !.(dialectwoord-ddb. xxx !.(plaatsen. yyy !.)plaatsen. !.)dialectwoord-ddb.

    met op de plaats van xxx het resultaat van de bewerking DIALECTWOORD-RDB DIALECTWOORD-DDB en op de plaats van yyy de plaatscodes met toelichtingen. Er wordt voorzien in een programmaonderdeel dat de plaatscodes sorteert en de doublures verwijdert.

insert / pointer in DDB

RCS signaleert, afhankelijk van de plaats die aangeduid wordt met 'pointer in DDB', welk type invoer gewenst wordt (een DOCUMENTERING, de BRONNEN, etc.; zie weer Grammatica 1). Daarna gaat RCS over in input-mode en voegt, na beëindiging van de invoer door de gebruiker, links en rechts van de ingevoerde tekst de door de grammatica vereiste macro's toe.

Wie een voorstel tot automatisering doet, moet wel bereid zijn eventueel gewenste nadere toelichting voor een implementatie te geven. Dat spreekt zozeer vanzelf, dat het niet gezegd hoeft te worden. Toch wil ik graag met nadruk die bereidheid uitspreken.

ABSTRACT

A proposal for automation of the Woordenboek van de Brabantse Dialecten is presented in this article. After providing a formal definition of the structure of WBD the author characterizes the basis input for the system designed: the data to be digested in the dictionary. The system of phonetic transcription is formally defined. The basis data, controlled by an editor-like programme, are fed into the definitive body of data. According to the type of data offered (title, dialectword, documentation, etc.), the programme adds codes to the text. Through interpretation of these codes, fully automatic type-setting of the dictionary becoms possible. As a result, there are no expenses at all for manual type-setting and proofreading.

Jan van Bakel, Nijmegen 1980

Noten

Terug naar boven

0. Dit opstel is gepubliceerd in Liber Amicorum Weijnen Van Gorcum, Assen 1980. Het stamt uit de tijd dat de PC nog niet bekend was en alles nog draaide op mainframes. Het wordt thans hier op het web geplaatst, getrouwelijk overgenomen uit het boek met slechts hier en daar enkele kleine verbeteringen. Het kan niemand ontgaan dat het opstel thans (2000) deerlijk uit de tijd is. Het probleem van automatisch produceren van gedrukte teksten was destijds echter verre van opgelost, zoals talloze met de typemachine vervaardigde en daarna fotografisch tot bladzijden verenigde boeken uit die tijd laten zien. Om binnen ons vak te blijven: zie als voorbeeld Cor van Bree, Leerboek voor de Historische Grammatica van het Nederlands, Wolters-Noordhoff Groningen 1977. En constateer anderzijds hoe perfect de producten zijn die thans zonder ooit in de zetterij te zijn geweest onder onze ogen komen. Voorbeelden daarvan zijn volstrekt overbodig. Uit de tijd is het opstel ook, als men er zich rekenschap van geeft op welke wijze vandaag bij alle uitgeverijen op grote schaal projecten van kennisrepresentatie en informatieontsluiting worden uitgevoerd die verre superieur zijn aan wat ik in mijn opstel behandelde, maar - en dat is mijn punt vandaag - waarvan mijn analyse één van de allervroegste vertegenwoordigers was. Iemand die belangstelling heeft voor zulke zaken treft hier als het ware een fossiel uit het Jura van het boekenvak.
Terug

1. Toelichting bij de gebruikte notatie voor deze en de volgende grammatica's: betekent wordt herschreven als, betekent of, betekent en; betekent einde van de produktieregel. De operator heeft prioriteit tegenover . Haakjes '()' veranderen de prioriteit.
Terug

2. De problemen van het voortbrengen van zulk een tekst zijn opgelost. Dit is niet alleen theoretisch juist, maar, als dat niet genoeg zou zijn, ook praktisch. De uitgave van Dr. Jan van Bakel Vlaamse Soldatenbrieven uit de Napoleontische tijd, 1977, is precies op deze wijze tot stand gekomen.
Terug

3. De regels van grammatica 3 moeten daarvoor wel worden uitgesplitst; in de hier gegeven vorm is de grammatica ambigu.
Terug