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
Par rapport au cas des automates les deux différences sont:
--acceptor
--osymbols
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
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