OPGAVE 3: Definite Clause Grammar

Deadline: vrijdag 6 juni

3a Een basisgrammatica voor het Nederlands.


Schrijf DCG-regels voor de volgende verschijnselen:

Let op het volgende:

3b. Een basisgrammatica voor het Engels


Schrijf nu een grammatica voor de Engelse vertalingen van de zinnen uit fragment 3a. Je grammatica kan dus zinnen produceren als
Om verwarring tussen de Engelse en de Nederlandse grammatica te voorkomen is het
handig om alle predicaten die je gebruikt in de Engelse grammatica van een suffix _eng
o.i.d. te voorzien:

3c Automatisch vertalen

Het automatisch vertalen van een Nederlandse zin in het Engels betekent dat, naast het vertalen op woordniveau, soms de volgorde van woorden en zinsdelen in de zin moet worden aangepast. Om dit probleem op te lossen kun je gebruik maken van de grammatica's voor beide talen. Het idee is dat zowel de Nederlandse als de Engelse grammatica een abstracte representatie van de zin oplevert (die we `interlingua' zullen noemen). Nederlands-Engels vertalen betekent nu dat je de Nederlandse zin parseert met de grammatica, en de resulterende interlingua-representatie gebruikt als input voor de Engelse grammatica, die daarvoor de bijbehorende zin (of zinnen) berekent.

Stap 1

Voeg aan alle regels van de Nederlandse en Engelse grammatica een argument toe dat de interlingua representatie van dit zinsdeel codeert.

De interlingua abstraheert van details als verbuigingen en woordvolgorde. Bovendien worden woorden met dezelfde betekenis (in het Nederlands en Engels) gerepresenteerd door hetzelfde interlingua symbool. Een mogelijke interlingua maakt gebruik van de volgende conventies
Merk op dat de volgorde van argumenten in i_np, i_vp, etc, vast is (bv altijd het werkwoord op de eerste plaats), onafhankelijk van de woordvolgorde in de zin. Om interlingua representaties af te leiden met behulp van de grammatica, voeg je aan iedere categorie een extra argument toe voor deze representatie. In de regels zeg je steeds hoe de i-representaties van de dochters bijdragen aan de i-representatie van de moeder:

stap 2

Als je de semantiek aan beide grammatica's hebt toegevoegd, schrijf je een vertaal-programma. Dit programma neemt een Nederlandse zin, berekent de i-representatie Int, en roept vervolgens de Engelse grammatica aan met de Int als argument.

Test je programma zowel voor Nederlands-Engels als voor Engels-Nederlands vertalen. Test ook of het programma voor sommige zinnen meer dan 1 vertaling kan geven.

Inleveren

Lever je programma in, waar nodig voorzien van commentaar.
Geef ook een voorbeeld van een zin die meer dan 1 vertaling oplevert.

Deadline: Vrijdag 6 juni