Tabu. Jaargang 20
(1990)– [tijdschrift] Tabu– Auteursrechtelijk beschermd
[pagina 107]
| |||||||||||||||||||||||||||||||
Het splitsingsprogramma van Avtoslov
| |||||||||||||||||||||||||||||||
1 Introductie en theoretische opmerkingenBij het probleem van het maken van een computerwoordenboek voor een taal met veel flectie is het altijd een probleem om de kennis, die in de morfologische uitgangen van het woord verborgen zit, adequaat te representeren. Men zal over het algemeen niet alle uitgangen van ieder woord willen opslaan in het woordenboek zelf. Zeker als men het woordenboek in combinatie met teksten wil gebruikenGa naar eind1, zal een goed programma voor de interactie tussen tekst en woordenboek onontbeerlijk zijn. Aangezien Russisch rijk aan flectie is, zal een programma aanwezig moeten zijn dat zo nauwkeurig mogelijk Russische woorden van hun uitgangen ontdoet.
De werkwijze van het Groningse team is vanaf het begin taakgeoriënteerd geweest. Wij hebben ons tot doel gesteld een werkend systeem te ontwerpen, zonder ons veel aan te trekken van bestaande linguïstische of computationele theorieën. Dit sluit ook meer aan bij onze standpunten ten aanzien van computertaalkunde. Deze zijn, dat computertaalkunde meer een wetenschap is die zich met symbolen dan met echte linguïstiek bezighoudt.Ga naar eind2 Wij zijn van mening, dat bij een zo duidelijk taakgericht project als het maken van een computerwoordenboek taalkundige theorieën alleen maar afleiden van het probleem. Wij hebben dan ook bewust afgezien van het erbij betrekken van welke taalkundige theorie ook en hebben ons geconcentreerd op het maken van een woordenboek dat berekend is op zijn taak, het zo snel mogelijk vinden van het juiste woord, plus een analyse van de grammaticale informatie. Dit wordt verder behandeld in paragraaf 3.2. | |||||||||||||||||||||||||||||||
[pagina 108]
| |||||||||||||||||||||||||||||||
De enige taalkundige ‘theorie’ die wij hebben overgenomen is de volgende:
Een Russisch woord bestaat uit ten hoogste vier componenten:
Als voorbeeld het woord улыбaющeйся glimlachend. Dit woord heeft de volgende elementen:
Verder hebben wij nog een beslissing genomen die linguïstisch gezien moeilijk te verdedigen valt, maar vanuit het symbolische gezichtspunt alleszins redelijk is. Wij gaan er namelijk vanuit dat de vier elementen autonoom van elkaar optreden, dwz dat de vier elementen altijd identificeerbaar zijn. Dit betekent verder dat de elementen geen invoed op elkaar uitoefenen. Uiteraard bestaan er, taalkundig gezien, wel degelijk wisselwerkingen tussen (voornamelijk) stam en uitgang. Symbolisch gezien is er dan sprake van twee verschillende stammen, die beide in het woordenboek opgenomen worden. Dit betekent wel een groter woordenboek, maar het is efficiënter (lees: sneller) om de stam dadelijk ter beschikking te hebben dan er eerst nog een aantal bewerkingen op te moeten toepassen.
Wellicht ten overvloede wijzen wij erop, dat een Russisch woord niet alle bovenstaande elementen behoeft te hebben. Meestal is het zo, dat alleen de elementen 1 en 3 aanwezig zijn. Wel kan gezegd worden, dat, als element 2 aanwezig is, ook element 3 aanwezig is.Ga naar eind4 Verder, als element 4 aanwezig is, is het betreffende woord een werkwoord.
De gebruikte methode voor het maken van het programma, dat het splitsen van de uitgang verzorgt, is gebaseerd op het project voor machinaal vertalen (Russisch - Engels) dat in de jaren '60 liep aan het National Physical Laboratory of England in Teddington. Hoewel de gebruikte methode nu reeds 30 jaar oud is, is deze nog steeds prima geschikt als startpunt voor het splitsingsproces. Doordat het door hen gemaakte woordenboek opgeslagen werd op magneetband, die slechts unidirectioneel doorzocht kon worden, moest het splitsingsproces zo georganiseerd worden dat de tape slechts een keer doorzocht hoefde te worden om een woord te vinden.Ga naar eind5 Door de verbeterde hard- en software sindsdien zijn deze en andere | |||||||||||||||||||||||||||||||
[pagina 109]
| |||||||||||||||||||||||||||||||
problemen ofwel verminderd, ofwel compleet verdwenen, maar de methode is nog steeds uitstekend geschikt om als basis te dienen, met slechts enige aanpassingen aan de routines die verantwoordelijk zijn voor het opslaan van de informatie.
De gebruikte computertaal is Snobol4. Dit was een natuurlijke keuze door de stringhandling faciliteiten en het ingebouwde hashingsysteem voor het opslaan van niet-numerieke data. Men moet bij lezing van de rest van het artikel bedenken, dat het AVTOSLOV-project nog niet afgesloten is. Een prototype van het uiteindelijke programma en de van database zijn gereed. Wel zijn alle features, die beneden beschreven zijn, ingebouwd. | |||||||||||||||||||||||||||||||
2 De dataDe data voor het programma bestaan uit drie delen:
| |||||||||||||||||||||||||||||||
A. De lijst met uitgangenVoor het programma dat de uiteindelijke splitsing van de woorden verzorgt, is het noodzakelijk om te beschikken over een lijst van alle mogelijke uitgangen van het Russisch. Deze lijst is voor het grootste gedeelte overgenomen uit Davies & Day (1962), maar deze lijst is op een aantal punten onvolledig of inefficiënt gebleken (zie beneden).
De eigenlijke lijst bestaat - in eerste instantie - uit twee gedeelten. Het eerste gedeelte bevat alle uitgangen die aan het einde van een woord kunnen voorkomen. Dit noemen we uitgangen van de eerste orde of primaire uitgang. Hieronder vallen alle naamvals- en werkwoordsuitgangen, die weer gescheiden van elkaar zijn opgeslagen. Dit heeft twee redenen: Ten eerste: door de naamvalsuitgangen van de werkwoordsuitgangen te scheiden hebben we meteen informatie over de aard van het woord. We weten of het een nomen/adjectief, dan wel een verbum is. Dit heeft op dit niveau nog geen consequenties (we zijn hier nog op symboolniveau), maar als het woordenboek wordt ingeschakeld, is dit een stukje extra informatie. Ten tweede: als de uitgang een werkwoordsuitgang blijkt te zijn, hebben we te maken met een finiete vorm van het werkwoord. Dit houdt in dat er geen secundaire uitgang kan zijn en dat het gedeelte van het woord dat overgebleven is de stam moet zijn. Dit spaart weer een symboolbewerking en is dus efficiënt. | |||||||||||||||||||||||||||||||
[pagina 110]
| |||||||||||||||||||||||||||||||
Het tweede gedeelte bestaat uit die uitgangen die kunnen voorkomen tussen de primaire uitgang en de stam. Dit noemen we uitgangen van de tweede orde of secundaire uitgangen. Hieronder vallen voornamelijk de participiumuitgangen, maar ook de uitgangen voor de overtreffende trap van het adjectief (eйш). Deze laatste ontbreekt in Davies & Day (1962). | |||||||||||||||||||||||||||||||
B. De lijst met veel voorkomende woordenIn deze lijst staan een aantal hoogfrequente woorden, die ofwel onverbuigbaar zijn, zoals adverbia en preposities, ofwel een dermate afwijkende verbuiging hebben, dat het efficiënter is om alle vormen op te nemen. Hieronder vallen alle naamvalsuitgangen van de pronomina en van de numeralia. Deze lijst wordt geraadpleegd voor het splitsingsproces. De lijst bevindt zich in het geheugen van de computer en is dus dadelijk toegankelijk. | |||||||||||||||||||||||||||||||
C. Het stammenwoordenboek zelfWij hebben de beschikking over Zaliznjak's Woordenboek der Russische Taal op diskettes. Dit woordenboek bevat zo'n 100.000 woordenGa naar eind6 plus grammaticale informatie (categorie, klasse etc.). Het woordenboek is echter geen stammenwoordenboek, zodat er nog een programma geschreven moet worden om de informatie over te zetten voor gebruik in ons project. Dit gedeelte van het project is nog niet voltooid. Hiervoor moet nog een aangepast versie van het splitterprogramma geschreven worden, om de woorden van hun uitgangen te ontdoen. Bovendien moeten de aanwezige codes omgezet worden naar onze eigen codes. Voorlopig is een klein aantal probleemgevallen ingebouwd om alle functies te testen. | |||||||||||||||||||||||||||||||
3 Het programmaHet programma om de woorden van hun uitgangen te ontdoen is opgebouwd volgens het logische principe van lineariteit, in dit geval van rechts naar links.
Als een woord niet gevonden is in de in het geheugen aanwezige lijst van hoogfrequente woorden en ook niet in het woordenboek als lemma, wordt het splitsingsprogramma aangeroepen. Ook een woord met een lengte van twee of een letter zal niet worden gesplitst, omdat hier geen uitgang aanwezig kan zijn. | |||||||||||||||||||||||||||||||
3.1 De eerste en tweede stapDe eerste stap is het identificeren van het reflexieve suffix ся of сь. Als dit suffix aanwezig is, weten we bijna zeker dat we te maken hebben met een werkwoord. Het is in principe mogelijk dat een woord op ся of сь eindigt zonder een reflexief suffix te zijn, bijvoorbeeld het woord здeсь hier. Het gaat in deze gevallen | |||||||||||||||||||||||||||||||
[pagina 111]
| |||||||||||||||||||||||||||||||
dan om een adjectief of een nomen in de nominatief. In beide gevallen zal het woord dan al door het woordenboek geïdentificeerd zijn, zodat er geen sprake is van ambiguïteit.
Onverschillig of er een reflexief suffix aangetroffen is, zal het programma dan proberen om een primaire uitgang te identificeren. De uitgangen zijn hiertoe op speciale wijze geordend. Er zijn twee verschillende tabellen gecreëerd, nl. een voor de nomina en adjectiva, en een voor de verbale uitgangen. Ieder van deze tabellen bestaat weer uit subtabellen, gerangschikt naar het aantal letters in de uitgang. Het is in principe mogelijk dat een uitgang zowel een nominale als een verbale uitgang is. In dat geval wordt het in de nominale tabellen ondergebracht, met het oog op een eventuele secundaire uitgang. Een voorbeeld van een dergelijke uitgang is и.
Het rangschikken naar grootte heeft zowel historische als practische redenen. In het oorspronkelijke project (Davies & Day 1962:349) was deze indeling aangebracht uit het oogpunt van efficiëntie. Het woordenboek stond op magneettape en kon slechts unidirectioneel doorzocht worden. Door eerst de grootste uitgang af te splitsen, was men ervan verzekerd steeds de kleinste stam over te houden, die dan alfabetisch als eerste in het woordenboek staat. Als het onverhoopt een foute uitgang was, hoefde men niet opnieuw te beginnen. Hier komt ook de term consistent splitting vandaan. Aangezien het tegenwoordig niet meer nodig is om een woordenboek op magneettape op te slaan, vervalt bovenstaande reden, maar er zijn nog voldoende andere redenen om aan bovenstaande indeling vast te houden. Aangezien de uitgangen die uit drie of twee letters bestaan, meestal ook de uitgangen bevatten die uit een (of twee) letters bestaan, zou het mogelijk zijn om een uitgang af te splitsen, die te klein is.
Er is een geval waarbij de uitgangen niet uit een of andere tabel gehaald kunnen worden. Dit is het geval bij de uitgang aт. Deze uitgang behoeft slechts te worden afgesplitst wanneer de letter, die er direct aan vooraf gaat, een ш, щ, ч of ж is. In dit geval is er sprake van een werkwoordsuitgang, zoals in кpичaт zij schreeuwen. Dit wordt gesplitst als кpич - aт. In andere gevallen, zoals дeкaнaт decanaat, wordt de uitgang niet afgesplitst, omdat de letter vlak voor de uitgang aт een н is. Deze combinatie wordt gevonden door een complexe pattern match op het woord los te laten, een specialiteit van Snobol4. Dit is echter een relatief tijdrovende operatie, zodat dit steeds in laatste instantie geprobeerd wordt. Aangezien aт een werkwoordsuitgang is, moet er, als de uitgang inderdaad geïdentificeerd is, niet verder gezocht worden naar een secundaire uitgang. | |||||||||||||||||||||||||||||||
[pagina 112]
| |||||||||||||||||||||||||||||||
3.2 Hoe correct kan het programma zijn?Bezie het woord пpивичнoe gewend (neutrum). De juiste split is пpивичн - oe. De uitgang oe is kenmerkend voor het neutrum. Als echter begonnen wordt met de kleinste uitgang, wordt de split пpивичнo - e, een onjuiste split in dit geval.
Uiteraard blijft het omgekeerde ook altijd mogelijk, namelijk dat een te grote uitgang wordt afgesplitst. Als voorbeeld het woord интeгpaлa integraal (genitief). Volgens het schema wordt dit woord gesplitst als интeгpa - лa, terwijl de juiste split интeгpaл - a is. De uitgang лa is een werkwoordsuitgang en интeгpaл is een nomen, waarbij de naamvalsuitgang a hoort.
Door deze problemen is het duidelijk dat het niet mogelijk is om een zelfstandig splitterprogramma te vervaardigen. Er zal altijd een woordenboek nodig zijn, zodat een een dergelijk programma nooit enige mate van intelligentie kan hebben. Zelfs met een woordenboek zal er nog geen volledige zekerheid geboden kunnen worden, zoals blijkt uit het volgende voorbeeld.
Het woord is пpaвил. Dit woord wordt volgens ons schema als volgt gesplitst: пpaв - ил. Dit is een correcte split, want ил is inderdaad een geldige (verleden tijds)uitgang van de stam п p a в van het werkwoord пpaвить, besturen. Er bestaat echter ook een nomen пpaвилo regel. De genitief hiervan is пpaвил, met een nuluitgang. Dit woord zal altijd door het programma gemist worden. Als het programma zo georganiseerd wordt dat voor het splitsingsproces het woord in het woordenboek wordt opgezocht, zal altijd het tweede woord gevonden worden, en nooit het eerste. Natuurlijk kan het programma zo georganiseerd worden dat een combinatie van beide technieken gevolgd wordt, maar dit gaat in tegen de hele opzet van het programma, nl. dat het snel en efficiënt moet zijn. Het is nu duidelijk dat het programma nooit kan kiezen uit een van beide mogelijkheden, zelfs als het programma de beschikking over beide heeft. Het moet dan op grond van niet aanwezige kennis, namelijk kennis van zinsbouw, beslissen. Dit is natuurlijk onmogelijk.
Door dit soort overwegingen hebben wij besloten niet te streven naar correctheid, maar naar snelheid en efficiëntie. | |||||||||||||||||||||||||||||||
3.3 De derde stapNa het uitvoeren van de tweede stap (zie 3.1.) hebben we nog steeds niet de juiste stam gevonden. Er is nog altijd kans op een uitgang van de tweede orde. Deze uitgang is alleen maar mogelijk bij uitgangen van nomina en adjectiva. Bij verbale uitgangen is het niet mogelijk om een secundaire uitgang aan te treffen, omdat de tabellen voor de verbale uitgangen alleen maar uitgangen bevatten die | |||||||||||||||||||||||||||||||
[pagina 113]
| |||||||||||||||||||||||||||||||
niet met de participium-natuur van de secundaire uitgangen gecombineerd kunnen worden. Hierdoor hoeft een gedeelte van het programma dan niet doorlopen te worden, met een behoorlijke tijdswinst.
De uitgangen zelf zijn weer geordend naar grootte, volgens dezelfde redenering als in 3.1. Een grotere uitgang komt relatief minder vaak voor dan een kleine, eenletterige.
Het is gebleken dat juist hier de meeste fouten optreden in het splitsingsproces. Twee van de secundaire uitgangen zijn т en н. Deze letters komen regelmatig voor op de grens tussen stam en primaire uitgang, zodat zij abusievelijk aan worden gezien als een secundaire uitgang. Bij andere uitgangen is dit ook te zien:
De oplossing voor het probleem lijkt duidelijk. In al deze gevallen is de juiste split te vinden door de gevonden stam te concateneren met de secundaire uitgang. Door het woordenboek ook deze split aan te bieden als het er niet in geslaagd is om een stam te identificeren, zal een groot aantal probleemgevallen opgelost zijn. Overigens is deze split identiek aan de toestand na de tweede stap van het schema, zodat er ook iets voor te zeggen valt om het woordenboek eerst te confronteren met het gedeelte van het woord, dat na de afsplitsing van de uitgang van de eerste orde overgebleven is, alvorens de test op de aanwezigheid van een secundaire uitgang uit te voeren. We hebben hier dan wel weer te maken met extra tijd voor het opzoeken (en tijd voor het activeren van het woordenboek, de zgn. access time), zodat betwijfeld moet worden, of deze oplossing efficiënter is. | |||||||||||||||||||||||||||||||
[pagina 114]
| |||||||||||||||||||||||||||||||
3.4 Na het splitsingsprocesDit gedeelte van het project valt eigenlijk buiten het bestek van dit artikel over het splitsen van Russische woorden, maar aangezien het een integraal deel van het project vormt, wordt in het kort de grote lijn geschetst.
Na het uitvoeren van bovenstaande drie stappen blijft er een gedeelte van het woord over, dat naar alle waarschijnlijkheid de stam is of deze zeer dicht benadert. Met dit gedeelte zal verder gewerkt worden in het woordenboek, terwijl uit de gevonden uitgangen de grammaticale informatie, die in het woord besloten ligt, wordt afgeleid. Met grammaticale informatie wordt, behalve informatie over categorie, geslacht, persoon, naamval ook het klemtoontype van het woord bedoeld. Klemtoon geeft vaak extra informatie en kan in bepaalde gevallen zelfs disambiguerend werken.
Om de, tamelijk tijdrovende, grammaticale analyse te versnellen is een short term memory ingebouwd in het RAM-geheugen, waarin de laatste 500 woorden worden bewaard, met hun grammaticale analyse. Het is onze verwachting, dat binnen een bepaalde limiet bepaalde woorden zich herhalen. Het getal 500 is voorlopig en kan naar believen worden aangepast. Ook worden er in het RAM-geheugen een aantal hoogfrequente woorden opgeslagen. Dit gebeurt onafhankelijk van de tekst, die geanalyseerd wordt. Hierbij moet gedacht worden aan pronomina, hoogfrequente nomina, preposities, etc.
Door deze en andere toevoegingen hopen wij, dat het programma versneld kan worden, terwijl de kwaliteit bewaard kan blijven. Zoals reeds vermeld, bevindt zich het project nog in het stadium van het prototyping. Tot onze spijt kan dan ook nog geen informatie gegeven worden over definitieve snelheid en efficiëntie van het systeem. | |||||||||||||||||||||||||||||||
4 VerantwoordingDit artikel is voortgekomen uit een onderdeel van het AVTOSLOV-project van de vakgroep Alfa-Informatica van de Rijksuniversiteit Groningen. De projectgroep bestaat uit Drs. Ferdinand de Haan, verantwoordelijk voor het splitterprogramma, Dr. Harry Gaylord, die verantwoordelijk is voor het verzorgen van de gebruikte tags, in overeenstemming met de SGML standaard, en Drs. Harry Overdijk, die de database (het woordenboek) en de communicatie tussen het splitterprogramma en het taggingprogramma. | |||||||||||||||||||||||||||||||
[pagina 115]
| |||||||||||||||||||||||||||||||
Bibliografie
|
|