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