Le syst` eme de dialogue
Une introduction rapide
Sophie Rosset
Groupe Traitement du Langage Parl´e D´epartement Communication Homme-Machine
LIMSI - CNRS
1 Idial
2 ex dialogue.lua
3 Les diff´erents appels
Idial : c’est quoi ?
dialogue et lua
Pas `a pas Idial ?
Infrastructure de calculs distribu´es Syst`eme communicant
Plate-forme pour syst`eme de dialogue (et d’autres !) Wmatch en natif
→fonctionne avec des scripts lua
Idial : c’est quoi ?
dialogue et lua
Pas `a pas ex dialogue.lua : les diff´erentes sections
Appels des diff´erents fichiers via desdofile Interface utilisateur : lancement de la premi`ere intervention du syst`eme
Chargement du syst`eme
envoi des entr´ees utilisateur au syst`eme
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Exemple simple de fonction C’est tr`es proche du pascal...
function liste has value(list,value) local i,n
for i,n in ipairs (list) do if (n==value) then
return true end
end
return false end
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Initialisation de l’analyse, de la tˆache, d´efinition d’une typologie des diff´erents ´el´ements utiles
Traitement des ´enonc´es utilisateurs et des r´eactions syst`eme
Non contextual analysis : nca.lua
function nca init() : charge l’analyseur indiqu´e dans le path
function nca run(sentence) : passe l’analyseur sur l’´enonc´e en entr´ee
Parcours d’arbres : tree.lua
Diff´erents fonctions pour parcourir les arbres de l’analyse, extraire des valeurs et des attributs
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Dialogue : dialogue.lua
fonction guide : Si r´eponse “oui” et que syst`eme a pas encore r´epondu, alors c’est une demande de guide.
fonction dial db : gestion historique - variables locales pour l’historique et globale pour la v´erification des valeurs pr´esentes dans l’analyse.
Exemple d’application au pays...
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Historique PAYS
– d´eclation des variables locales
local info=extract tag multi(utterance,liste tag rechdb) local liste T = ” Tcapitale”
– cr´eation de l’historique hist rechdb :store(”info hc”, info) local info prec=hist rechdb :get(-1).info ec
extract tag multi(utterance,liste tag rechdb) : extraction des ´el´ements de la liste qui sont dans l’´enonc´e courant → info
hist rechdb :store(”info hc”, info) : mettre info dans info hors contexte
info prec=hist rechdb :get(-1).info ec : mettre dans info prec ce qui ´etait dans info ec du tour pr´ec´edent
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Application
Si on a une info pr´ec´edente (info prec) alors R´ecup´erer liste T
Si on a pays et pas de liste T et un liste T ancien alors R´ecup´eration des ´el´ements de liste T d’avant dans le info courant
Sinon si pas d’info pays mais un liste T et un ancien pays alors
R´ecup´eration de l’ancien pays dans pays
J’ai dans l’historique une demande sur Tcapitale, dans l’´enonc´e courant j’ai un pays, je r´ecup`ere Tcapitale et je g`ere Tcapitale + pays.
J’ai dans l’historique un pays, dans l’´enonc´e courant Tcapitale et pas de pays, je r´ecup`ere l’ancien pays et g`ere Tcapitale + pays
Idial : c’est quoi ?
dialogue et lua
Pas `a pas
Recherche db
Si Tcapitale et pays alors
local rechcapitale=caps:select{pays=info. pays[1]}
if (rechcapitale:line count()<1) then alors on r´epond pays inconnu
fin return
{acte=”reponse” ;content=”capitale” ;pays=info. pays[1]...
fin
Si Tcapitale et pas pays alors On r´epond paspays