Dialogue system abstract syntax + concrete syntaxes for different languages. One of them is Prolog (with some resemblance to dialogue moves in GoDiS).
The purpose is to show how new systems can be built for new domains just by specifying just two things:
This is based on two library elements
In general, the only kind of elements that need to be added are constants (0-place fun's) of the following categories from Dialogue.gf.
Kind ; -- e.g. Room Object Kind ; -- e.g. Kitchen Oper0 ; -- e.g. Stop Oper1 Kind ; -- e.g. Play Oper2 Kind Kind ; -- e.g. Add Move ; -- e.g. MorningMode
Files (for X = Eng, Fin, Fre, Prolog, Swe):
Files provided as library to build on:
Dialogue.gf -- base dialogue grammar DialogueX.gf -- implementation instance DialogueI.gf -- implementation functor ResProlog.gf -- help constructs for Prolog terms Weekday.gf -- untility grammar with weekdays WeekdayX.gf AuxDialogue.gf-- interface of auxiliary resource-defined opers AuxX.gf -- instances for different languages
Files implementing two examples.
Agenda.gf -- application grammar for agenda AgendaX.gf Lights.gf -- application grammar for lights Lights.gf
To build a new application for domain Dom, you thus need
Dom.gf -- introduce fun's in Kind, Object, Oper0, Oper1, Oper2 DomX.gf -- concrete syntax of the new fun's for language X
You first need to do, with the latest resource grammar version,
make present
in lib/resource-1.0
To test an application in GF, do e.g.
make lights
to make a package with all the Lights grammars
make engcorpus
to generate an English corpus
make swecorpus
to generate a Swedish corpus
Here are some other commands:
i LightsEng.gf
in current dir, to load a grammar
gr | l -all
to random-generate
gt -depth=4 | pt -transform=typecheck | l -all
to generate a corpus
p "switch off all lights in the kitchen"
to parse
i LightsProlog.gf
to load the Prolog version
pg -printer=gsl -startcat=Move
to print a Nuance grammar
p -lang=LightsEng "switch off all lights" | pt -transform=solve | l -lang=LightsProlog
to translate from English to Prolog
si -tr -lang=LightsEng | p -cat=Move -lang=LightsEng | pt -transform=solve | l -lang=LightsProlog
to translate English speech into Prolog
The last one is the coolest - but you may need to enable the speech_input
command by installing ATK
and recompiling GF.