Ce projet est basé sur l'article "Spécifier et verbaliser des programmes d'ensemble de réponses en langage naturel contrôlé" de Rolf Schwitter. J'ai recréé ce qui a été fait dans l'article mais à une échelle beaucoup plus petite, en me concentrant sur la création d'une grammaire bidirectionnelle adaptée à la fois au traitement et à la génération de spécifications de programme en CNL.
Le programme big.pl (signifie Bi -directionnel G rammar) doit être exécuté en utilisant SWI-Prolog. Pour lui faire un test, chargez simplement le fichier à l'aide de la commande : [big].
Et puis requête : test.
Cela fait, vous verrez la sortie du programme pour un exemple prédéfini.
Si vous souhaitez exécuter le programme sur VOS PROPRES SENTENCES D'ENTRÉE , vous devez modifier le fichier big.pl :
Notez que chaque phrase doit être une liste de mots, où tous les mots doivent être séparés par une virgule, et une phrase doit se terminer par le symbole spécial « ». . Chaque phrase doit commencer par le mot système 'every'
/ 'no'
ou contenir un agent, par exemple comme dans [bob,dreams,'.']
, où bob est un agent. Les mots système sont : 'every', 'no', 'is', 'is not', 'does not', '.'
. Voir samples.txt pour des exemples de phrases d'entrée que vous pouvez essayer d'exécuter.
Si vous souhaitez introduire de nouveaux mots et/ou agents non inclus dans le programme, vous devez les ajouter vous-même dans big.pl . Le lexique actuel est défini aux lignes 175-198. Pour chacun de vos mots personnalisés, ajoutez une ligne au format :
lexicon(cat:noun, wform:[student], arg:X, term:student(X)).
où argument chat est la catégorie du mot (nom, verbe, dét, etc.) ; wform signifie forme de mot, c'est-à-dire le mot exact qui apparaît dans une phrase ; arg spécifie l'argument du terme auquel le mot fait référence ; term désigne le terme réel qui sera utilisé dans le format interne et dans l'ASP. Pour chacun de vos agents personnalisés, ajoutez une ligne du format agent(name).
, où name est le nom de votre agent, par exemple bob
.
Notez qu'actuellement, le programme ne prend en charge que les catégories suivantes : nom ( cat:noun
), verbe ( cat:iv
), déterminant ( 'every', 'no'
), adjectif ( cat:jj
). Toutes les phrases doivent avoir une structure simple, pas d'articles ("a", "un", "le"), pas de composants liés "et"/"ou".
Le programme big.pl donne quatre sorties à la fois :
Veuillez vous référer au Report.pdf pour plus de détails sur les représentations.
Notez que 3. La représentation ASP est un programme d'ensemble de réponses valide, que vous pouvez résoudre en utilisant par exemple clingo, que je vous encourage à essayer.
Créé par Yevheniia Soroka, étudiante en maîtrise, Stony Brook University, NY (CSE505 : Computing with Logic, automne 2018)
Un merci spécial à Rolf Schwitter pour ses conseils sur la façon de démarrer et le partage de ressources utiles.