From 8ba2703895d7fe2cf3ac3554fdb5c13f75e30411 Mon Sep 17 00:00:00 2001
From: Benoit Favre <benoit.favre@lif.univ-mrs.fr>
Date: Tue, 19 May 2015 07:06:53 +0200
Subject: [PATCH] update slu and fix missing actions

---
 .../automate/simple-example_dico_action.txt   |  21 +++++++--------
 .../automate/simple-example_section1.fst      | Bin 854 -> 854 bytes
 .../automate/simple-example_section1.txt      |  22 ++++++++--------
 .../automate/simple-example_section2.fst      | Bin 574 -> 574 bytes
 .../automate/simple-example_section2.txt      |  12 ++++-----
 asr/tools/slu/src/process_xml_for_slu         | Bin 18008 -> 18008 bytes
 asr/tools/slu/src/process_xml_for_slu.c       |  24 +++++++++---------
 main.py                                       |  18 ++++++++-----
 xmlview.py                                    |   1 +
 9 files changed, 52 insertions(+), 46 deletions(-)

diff --git a/asr/models/simple-example/automate/simple-example_dico_action.txt b/asr/models/simple-example/automate/simple-example_dico_action.txt
index 9d03b9d..911ee7e 100644
--- a/asr/models/simple-example/automate/simple-example_dico_action.txt
+++ b/asr/models/simple-example/automate/simple-example_dico_action.txt
@@ -2,15 +2,16 @@
 <joker> 1
 change_section(1,"example1","go_to_section_one") 2
 change_section(0,"example2","exit_section") 3
-action(1,1,0,"example1","futures") 4
-action(1,1,1,"example2","hidden_in_details") 5
-action(1,1,2,"him","the_architect") 6
-action(1,1,3,"action3","tossed_over") 7
-action(1,1,4,"#ENDSEQUENCE(1)","") 8
-action(1,1,4,"#ENDSECTION(1)","") 9
-change_section(0,"close","") 10
+change_section(0,"example2","") 4
+action(1,1,0,"example1","futures") 5
+action(1,1,1,"example2","hidden_in_details") 6
+action(1,1,2,"him","the_architect") 7
+action(1,1,3,"action3","tossed_over") 8
+action(1,1,4,"#ENDSEQUENCE(1)","") 9
+action(1,1,4,"#ENDSECTION(1)","") 10
 change_section(2,"example3","open_section_two") 11
 change_section(0,"example4","exit_section") 12
-action(2,1,4,"action4","life") 13
-action(2,1,5,"#ENDSEQUENCE(1)","") 14
-action(2,1,6,"#ENDSECTION(2)","") 15
+change_section(0,"example4","") 13
+action(2,1,4,"action4","life") 14
+action(2,1,5,"#ENDSEQUENCE(1)","") 15
+action(2,1,6,"#ENDSECTION(2)","") 16
diff --git a/asr/models/simple-example/automate/simple-example_section1.fst b/asr/models/simple-example/automate/simple-example_section1.fst
index 2478b3e6e948d9b3b107da9a7004c71e89674c01..32673adcfb28b250bf1ba2ad1c98707922ab701a 100644
GIT binary patch
delta 136
zcmcb{c8zU9kS!|%1TZo%Fn}<Gf5HjGW?*QjXNE{Ka4;}1utC{OP_=9m`-=tHp@JZd
vAWiI(g&ExiLCQfAAX$(o$K-5A_sRDdIVSI7RAJ<re4kO9k!3SClQ$y(XVnhF

delta 134
zcmcb{c8zU9kSz-X1TZo%Fn}<Gf5HjGW?*QjXNE{Ka4;}1utM2PP_?WR`-=tHpn@Pt
rkS4at!i?^M>`+k<4H9LaoXzOY$T4{{qc$Vw<ok@;j9i<!nY<YRHVzF>

diff --git a/asr/models/simple-example/automate/simple-example_section1.txt b/asr/models/simple-example/automate/simple-example_section1.txt
index 4274939..2064e77 100644
--- a/asr/models/simple-example/automate/simple-example_section1.txt
+++ b/asr/models/simple-example/automate/simple-example_section1.txt
@@ -1,22 +1,22 @@
-0	1	futures	4	0
+0	1	futures	5	0
 1	100
-0	1	<joker>	4	100
-1	2	hidden	5	0
+0	1	<joker>	5	100
+1	2	hidden	6	0
 2	3	in	0	0
 2	3	<epsilon>	0	10
 3	4	details	0	0
 4	100
-1	4	<joker>	5	100
-4	5	the	6	0
+1	4	<joker>	6	100
+4	5	the	7	0
 5	6	architect	0	0
 6	100
-4	6	<joker>	6	100
-6	7	tossed	7	0
+4	6	<joker>	7	100
+6	7	tossed	8	0
 7	8	over	0	0
 8	100
-6	8	<joker>	7	100
-8	9	<epsilon>	8	0
+6	8	<joker>	8	100
+8	9	<epsilon>	9	0
 9	100
-9	10	<epsilon>	9	0
-10	11	<epsilon>	10	0
+9	10	<epsilon>	10	0
+10	11	<epsilon>	4	0
 11
diff --git a/asr/models/simple-example/automate/simple-example_section2.fst b/asr/models/simple-example/automate/simple-example_section2.fst
index 1b8663365d32aeb7a911e95b1156aca0ffe09c44..a18c933e1fcb950472d67483cbe1696416e0643f 100644
GIT binary patch
delta 71
zcmdnTvX5m#kS-Sk1TccBhI%G2&A=eYz`(!<WrM^(@_ZBPr5X7r&emoWn0Q>9k$2-~
GZ$<zn_zCm?

delta 71
zcmdnTvX5m#kS-?!1TccBhI%G2&A=eYz`(!@WrM^(^1Ku4r5X7q&emq+pLkrGk!#~;
GZ$<znSPAR^

diff --git a/asr/models/simple-example/automate/simple-example_section2.txt b/asr/models/simple-example/automate/simple-example_section2.txt
index b17ea96..c246a30 100644
--- a/asr/models/simple-example/automate/simple-example_section2.txt
+++ b/asr/models/simple-example/automate/simple-example_section2.txt
@@ -1,9 +1,9 @@
-0	1	<epsilon>	9	0
-1	2	life	13	0
+0	1	<epsilon>	10	0
+1	2	life	14	0
 2	100
-1	2	<joker>	13	100
-2	3	<epsilon>	14	0
+1	2	<joker>	14	100
+2	3	<epsilon>	15	0
 3	100
-3	4	<epsilon>	15	0
-4	5	<epsilon>	10	0
+3	4	<epsilon>	16	0
+4	5	<epsilon>	13	0
 5
diff --git a/asr/tools/slu/src/process_xml_for_slu b/asr/tools/slu/src/process_xml_for_slu
index 93feb1c7b38052d4db2ce03dfa989936eb23c156..2dff49a4f5a71069fa1e07043eeb6a368d6a8016 100755
GIT binary patch
delta 5179
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

delta 5103
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

diff --git a/asr/tools/slu/src/process_xml_for_slu.c b/asr/tools/slu/src/process_xml_for_slu.c
index dc919f0..d8c639e 100644
--- a/asr/tools/slu/src/process_xml_for_slu.c
+++ b/asr/tools/slu/src/process_xml_for_slu.c
@@ -91,10 +91,12 @@ char *get_field(char *ch, char *attribut, char *chfield)
 {
 int i,j;
 chfield[0]='\0';
-for(i=0;(ch[i])&&((ch[i]!=' ')||(strncmp(ch+i+1,attribut,strlen(attribut)))||(ch[i+1+strlen(attribut)]!='='));i++);
+for(i=0;(ch[i])&&((ch[i]!=' ')||(strncmp(ch+i+1,attribut,strlen(attribut)))||((ch[i+1+strlen(attribut)]!='=')&&(ch[i+1+strlen(attribut)]!=' ')));i++);
 if (ch[i])
  {
- for(j=0,i=i+1+strlen(attribut)+2;(ch[i])&&(ch[i]!='"');i++,j++) chfield[j]=ch[i];
+ for(i+=1+strlen(attribut);(ch[i])&&(ch[i]!='=');i++); if (!ch[i]) ERREUR("bad format in :",ch);
+ for(++i;(ch[i])&&(ch[i]!='"');i++); if (!ch[i]) ERREUR("bad format in :",ch);
+ for(j=0,i++;(ch[i])&&(ch[i]!='"');i++,j++) chfield[j]=ch[i];
  if (ch[i]!='"') ERREUR("bad format1:",ch);
  chfield[j]='\0';
  }
@@ -128,7 +130,8 @@ for(i=0;ch[i];i++) if (ch[i]==' ') ch[i]='_';
 
 int main(int argc, char **argv)
 {
-int nbsection,i,j,k,nb,ordre,repetition,nbseq,actionsection,actionsequence,currentstate,statedebseq,action,findend,t_end[MAX_END_STATE],nbend,idac,actionfinsection,currentstatevoid;
+int nbsection,i,j,k,nb,ordre,repetition,nbseq,actionsection,actionsequence,currentstate,statedebseq,action,findend,t_end[MAX_END_STATE],nbend,idac,
+	actionfinsection,actionfinsectionimplicit,currentstatevoid;
 FILE *file,*filevoid,*fileexit;
 char *pt,ch[TailleLigne],*t_field[MAX_FIELD],*chprefix,chname[TailleLigne],chfield[TailleLigne],chcontent[TailleLigne],ch2[TailleLigne];
 
@@ -156,7 +159,7 @@ if (!(filevoid=fopen(ch,"wt"))) ERREUR("can't write in:",ch);
 fprintf(filevoid,"0\n");
 
 currentstatevoid=0;
-ordre=STRICT; repetition=False; file=NULL; actionsection=0; findend=False; nbend=0; nbseq=0; actionfinsection=0;
+ordre=STRICT; repetition=False; file=NULL; actionsection=0; findend=False; nbend=0; nbseq=0; actionfinsection=actionfinsectionimplicit=0;
 for(idac=nbsection=0;fgets(ch,TailleLigne,stdin);)
  {
  if (strstr(ch,"<section"))
@@ -172,11 +175,10 @@ for(idac=nbsection=0;fgets(ch,TailleLigne,stdin);)
     {
     sprintf(chcontent,"action(%d,%d,%d,\"#ENDSEQUENCE(%d)\",\"\")",nbsection,nbseq,idac,nbseq); actionsequence=from_action_to_index(chcontent);
     sprintf(chcontent,"action(%d,%d,%d,\"#ENDSECTION(%d)\",\"\")",nbsection,nbseq,idac,nbsection); actionsection=from_action_to_index(chcontent);
-    sprintf(chcontent,"change_section(0,\"close\",\"\")"); actionfinsection=from_action_to_index(chcontent);
     for(i=0;i<nbend;i++) fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",t_end[i],currentstate+1,actionsequence);
     fprintf(file,"%d\t%d\n",currentstate+1,PENALEND); /* in order to quit on ANY action */
     fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+1,currentstate+2,actionsection);
-    fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+2,currentstate+3,actionfinsection);
+    fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+2,currentstate+3,actionfinsectionimplicit);
     fprintf(file,"%d\n",currentstate+3);
     currentstate+=2;
     nbend=0;
@@ -185,7 +187,7 @@ for(idac=nbsection=0;fgets(ch,TailleLigne,stdin);)
    }
   nbseq=0; currentstate=0; //idac=0;
   get_field(ch,"id",chfield);
-  if (sscanf(chfield,"%d",&nbsection)!=1) ERREUR("bad value:",chfield);
+  if (sscanf(chfield,"%d",&nbsection)!=1) ERREUR("bad value:",ch);
   sprintf(ch2,"%s_section%s.txt",chprefix,chfield);
   if (!(file=fopen(ch2,"wt"))) ERREUR("can't write in:",ch2);
   /* we look for the "start" field */
@@ -208,9 +210,8 @@ for(idac=nbsection=0;fgets(ch,TailleLigne,stdin);)
   if (!(fileexit=fopen(ch2,"wt"))) ERREUR("can't write in:",ch2);
   get_field(ch,"action_end",chfield); if (!chfield[0]) { fprintf(stderr,"ERREUR: no action_end field in section: %d\n",nbsection); exit(0); }
   get_field(ch,"end",chcontent); if (!chcontent[0]) { fprintf(stderr,"ERREUR: no end field in section: %d\n",nbsection); exit(0); }
-  sprintf(ch2,"change_section(0,\"%s\",\"%s\")",chfield,chcontent);
-  remove_space(ch2);
-  actionfinsection=from_action_to_index(ch2);
+  sprintf(ch2,"change_section(0,\"%s\",\"%s\")",chfield,chcontent); remove_space(ch2); actionfinsection=from_action_to_index(ch2);
+  sprintf(ch2,"change_section(0,\"%s\",\"\")",chfield); remove_space(ch2); actionfinsectionimplicit=from_action_to_index(ch2);
   for(i=1,t_field[0]=strtok(chcontent," ");t_field[i-1];i++) t_field[i]=strtok(NULL," ");
   for(i=0;t_field[i];i++)
    {
@@ -299,11 +300,10 @@ if ((file)&&(nbseq>0))
   {
   sprintf(chcontent,"action(%d,%d,%d,\"#ENDSEQUENCE(%d)\",\"\")",nbsection,nbseq,idac++,nbseq); actionsequence=from_action_to_index(chcontent);
   sprintf(chcontent,"action(%d,%d,%d,\"#ENDSECTION(%d)\",\"\")",nbsection,nbseq,idac++,nbsection); actionsection=from_action_to_index(chcontent);
-  sprintf(chcontent,"change_section(0,\"close\",\"\")"); actionfinsection=from_action_to_index(chcontent);
   for(i=0;i<nbend;i++) fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",t_end[i],currentstate+1,actionsequence);
   fprintf(file,"%d\t%d\n",currentstate+1,PENALEND); /* in order to quit on ANY action */
   fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+1,currentstate+2,actionsection);
-  fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+2,currentstate+3,actionfinsection);
+  fprintf(file,"%d\t%d\t<epsilon>\t%d\t0\n",currentstate+2,currentstate+3,actionfinsectionimplicit);
   fprintf(file,"%d\n",currentstate+3);
   }
  }
diff --git a/main.py b/main.py
index e9bc4e3..ce64ed7 100644
--- a/main.py
+++ b/main.py
@@ -55,9 +55,9 @@ class ScriptedASR(Gtk.Window):
         vbox.pack_start(self.asr, False, True, 5)
 
         # slu
-        #self.fake_asr = Gtk.Entry()
-        #self.fake_asr.connect('key-press-event', self.simulate_asr)
-        #vbox.pack_start(self.fake_asr, False, True, 5)
+        self.fake_asr = Gtk.Entry()
+        self.fake_asr.connect('key-press-event', self.simulate_asr)
+        vbox.pack_start(self.fake_asr, False, True, 5)
 
         slu_prefix = config_dict['slu_prefix']
         slu_actions = config_dict['slu_actions']
@@ -136,10 +136,10 @@ class ScriptedASR(Gtk.Window):
     def set_section(self, section_id):
         self.xmlview.set_section(section_id)
 
-    #def simulate_asr(self, widget, event):
-    #    if event.keyval == Gdk.KEY_Return:
-    #        text = widget.get_text()
-    #        print 'foo', text
+    def simulate_asr(self, widget, event):
+        if event.keyval == Gdk.KEY_Return:
+            text = widget.get_text()
+            self.hyp_changed([text.strip()])
 
     def slu_finished(self, model, slu_output):
         #slu_output = str(slu_output)
@@ -150,6 +150,9 @@ class ScriptedASR(Gtk.Window):
 
         #for action_id in range(0, len(self.slu_actions)):
         for action_id in range(len(self.kept_actions), len(self.slu_actions)):
+            if action_id > len(self.slu_actions) - 1:
+                print "WARNING: spurious action", action_id
+                continue
             print 'NEW ACTION:', action_id, self.slu_actions[action_id]
             action = actions.parse_slu_action(self.slu_actions[action_id])
             if action.name.startswith('#ENDSEQUENCE('):
@@ -172,6 +175,7 @@ class ScriptedASR(Gtk.Window):
                 self.kept_actions = []
                 if new_section in self.slu:
                     self.slu[new_section].reset_slu()
+                actions.perform_action(action, False)
             else:
                 actions.perform_action(action, False)
         self.kept_history = self.slu_output
diff --git a/xmlview.py b/xmlview.py
index 2a32cc3..89ccdb3 100644
--- a/xmlview.py
+++ b/xmlview.py
@@ -144,6 +144,7 @@ class Keyword(Gtk.Label):
 
     def set_num(self, num):
         self.num = num
+        #self.set_markup(self.text + ' [<a href="%s">%s (%d)</a>] ' % (self.action, self.action, self.num))
 
     def link_clicked(self, widget, uri):
         actions.perform_action(actions.Action(uri, keyword=widget), False)
-- 
GitLab