Les transducteurs En anglais transducers
Transducteurs = automate avec sorties Objet graphique travaille sur des suites de symboles Permet de reconnaître un motif et de faire des transformations dans des parties de la zone reconnue
Exemple Soit le texte La gamme commence par do ré mi … Si le motif à reconnaître est « do <L><L> mi » L’expression « do/’C’ (<L><L>)/’D’ mi/’E’ » aura deux effets possibles soit: en insertion (on insère devant) La gamme commence par Cdo Dré Emi … soit en remplacement La gamme commence par C D E…
Automate étendu comment? On permet maintenant que les étiquettes d’arcs portent des sorties: Une étiquette d’arc s’écrira a/b a jouant le même rôle que pour l’automate seul b jouant le rôle de sortie , la sortie ne sera prise en compte que si la reconnaissance de l’automate est effective: le motif a été trouvé et l’état final de l’automate a été atteint.
Exemple - + Ensemble de sommets S={1,2,3} Alphabet = {a,b,c} Etat initial 1 Etat final = {3} Arcs={ (1,2,a),(2,2,b/I),(2,3,c)} b/I a c 1 2 3 - + Ce transducteur a 3 états L’état 1 est dit « état initial » L’état 3 est l’ « état final » L’arc (1,2) a pour étiquette « a » L’arc (2,2) a pour étiquette « b »et pour sortie I Chaîne transformée obtenue: (insertion) aIbc,aIbIbc etc
Autre exemple - + Ensemble de sommets S={1,2,3} Alphabet = {a,b,c} Etat initial 1 Etat final = {3} Arcs={(1,2,a/A),(2,2,b/B), (2,3,c/C)} b/B a/A c/C 1 2 3 - + Ce transducteur a 3 états L’état 1 est dit « état initial » L’état 3 est l’ « état final » L’arc (1,2) a pour étiquette « a »et pour sortie « A » etc. Chaîne transformée obtenue: (remplacement) ABC,ABBC, etc
Comment écrire un transducteur? On se concentre sur le motif à reconnaître , on définit l’automate Puis on rajoute les sorties C’est exactement la même chose que pour une expression régulière Attention aux boucles ab*c devient a/A(b/B)*c/C Attention cette expression n’est pas la même que a/A(b*)/Bc/C Qui, dans le cas d’insertion devant, génère : AaBbCc, AaBbbCc, AaBbbCc,… L’insertion se fait devant la zone reconnue qui est b*
Tagguer Il ne s'agit ni plus ni moins que d'insérer devant et derrière une zone reconnue Exemple (<UP>signifie une lettre en majuscule) <UP><L>* devient ( <UP><L>*)/ '<NP>' <E>/'<\NP>' ou plus simple <UP>/ '<NP>'<L>* <E>/'<\NP>'
Transducteur exemple Équivalent en notation linéaire: <L><L>*(ion\"ION"+ions\"IONS")
Automate correspondant Équivalent en notation linéaire: <L><L>*(ion+ions)
Utilisation Sur le mot Détermination Zone reconnue « détermination » étiquette avec sortie ion/ “ION” Si on utilise le mode remplacement on trouve déterminatION Si on utilise le mode insertion on trouve déterminatIONion
variante remplacement IONétermination insertion IONdétermination La sortie est cette fois sur l’étiquette <L> remplacement IONétermination insertion IONdétermination Équivalent en notation linéaire: <L>/"ION"<L>*(ion+ions)
Insertion d'une balise devant et derrière un motif Équivalent en notation linéaire: <L>/"<ION>"<L>*(ion+ions)+<E>/"<\ION>