Tag Archives: natuurlijke taal

Zinnen genereren op basis van trefwoorden door representatie in een gerichte graaf

Software dat zinnen genereert die syntactisch correct zijn bestaan al en worden al veel toegepast in diverse programma’s. Er is echter nog veel ruimte voor verbetering. Met de meeste zinnen heeft software niet veel problemen. Maar bij sommige zinnen gaat het toch nog wel eens fout. Hoe geavanceerder de software, hoe minder fouten worden gemaakt. De gebruikelijke aanpak om een zin te genereren die syntactisch correct is, is door middel van een parse tree. Een parse tree is een boomstructuur die klopt volgens de grammatica van de taal. Deze boomstructuur wordt vervolgens opgebouwd door substitutieregels. Nadelen van deze representatie is dat de grammatica per taal formeel moet worden gedefinieerd. Het probleem hiermee is dat een natuurlijke taal zonder goede vastgestelde regels is gedefinieerd, en er zijn vele uitzonderingen.

Het moet mogelijk zijn om een systeem te maken dat zelf een natuurlijke taal kan leren aan de hand van voorbeeldzinnen. Een neuraal netwerk zou hiervoor een oplossing kunnen zijn. Echter is er geen enkel inzicht in zo een neuraal netwerk. Dit maakt het lastig om dat netwerk te koppelen aan een ander systeem.

Het doel van dit onderzoek hierbij is de vraag of het mogelijk is om zo een systeem te maken dat zinnen automatisch aanleert op basis van een corpus met voorbeeldzinnen en op basis van trefwoorden syntactisch correcte zinnen kan genereren. Een mogelijke aanpak voor dit systeem is zinnen te representeren als een graaf. Hierbij is elk punt in de graaf een uniek woord. De woorden zijn met elkaar gekoppeld via pijlen. Vervolgens wordt met behulp van een padvinder een pad gezocht met de hoogste score gegeven de trefwoorden. De trefwoorden kunnen in de graaf worden gezien als waypoints. Dat zijn verplichte punten om bij langs te gaan in een bepaalde volgorde. De score van een pad wordt bepaald door de inverse van het aantal punten min het aantal waypoints plus het aantal pijlen dat al eerder langs de punten zijn geweest. De eigenlijke onderzoeksvraag is: Is het mogelijk met deze aanpak een zin te construeren aan de hand van gegeven trefwoorden op basis van een voldoende grote corpus met syntactisch correcte voorbeeldzinnen.

Om deze onderzoeksvraag te testen zijn twee ingrediƫnten vereist. Ten eerste is een voldoende aantal grammatisch correcte zinnen, een corpus nodig. En ten tweede een aantal testzinnen om de kennis en mogelijkheden van het systeem te testen. Cross-validation zal een belangrijke techniek zijn om dezelfde corpus te gebruiken om het systeem zowel te trainen als te testen. Indien vervolgens een voldoende significant aantal zinnen wordt getest nadat het systeem is getrained, kan worden getest of het systeem voldoet aan de eisen. Deze eisen worden van te voren vastgesteld naar een bepaalde verwachting. Dit is van te voren onzeker omdat de keuze van trefwoorden van groot belang is bij het genereren van een zin. Er zullen dus veel zinnen worden gegenereerd die niet aan de originele zin gelijk zijn, echter nog wel correct zijn.