next up previous
suivant: Transducteur avec OpenGRM monter: Utilisation de boîtes à précédent: Exercice 2

Transducteurs en OpenFST

Le format texte pour définir un transducteur en OpenFst est identique à celui des automates, avec seulement un quatrième élément à fournir pour chaque transition: le symbole en sortie.

0 0 a x
0 0 b y
0 0 c z
0

Ce transducteur traduit les a en x, les b en y et les c en z.

Pour le compiler et crer la représentation graphique, en supposant que le fichier texte s'appelle exemple-4.txt:

fstcompile --isymbols=ascii.syms --osymbols=ascii.syms exemple-4.txt > exemple-4.fst
fstdraw --portrait --isymbols=ascii.syms --osymbols=ascii.syms exemple-4.fst > exemple-4.dot
dot -Tpng exemple-4.dot > exemple-4.png
display exemple-4.png

169

Par rapport au cas des automates les deux différences sont:

Les deux opérations de composition et de sélection sont considérés comme la même opération par OpenFST et elles sont réalisées par la commande fstcompose.

Par exemple, faisons la sélection du transducteur pour le spécialiser dans la traduction du langage ab*c+. Compilons à la main cette expression, cela donne l'automate suivant (fichier exemple-5.txt):

0 1 a
1 1 b
1 2 c
2 2 c
2

fstcompile --acceptor --isymbols=ascii.syms exemple-5.txt > exemple-5.fst
fstcompose exemple-5.fst exemple-4.fst > result-compo.fst
fstdraw --portrait --isymbols=ascii.syms --osymbols=ascii.syms result-compo.fst > result-compo.dot
dot -Tpng result-compo.dot > result-compo.png
display result-compo.png

172

On peut ensuite, si on le souhaite, projetter le résultat sur la sortie.

fstproject --project_output result-compo.fst > result-proj.fst
fstdraw --portrait --acceptor --isymbols=ascii.syms result-proj.fst > result-proj.dot
dot -Tpng result-proj.dot > result-proj.png
display result-proj.png

175


next up previous
suivant: Transducteur avec OpenGRM monter: Utilisation de boîtes à précédent: Exercice 2
barthe 2017-12-06