next up previous
suivant: Principales commandes OpenFST monter: Utilisation de boîtes à précédent: Mise en place du

Un exemple OpenFST pas à pas: premier automate

On peut spécifier directement un automate en OpenFST au moyen d'un fichier texte donnant les transitions et les états finals de l'automate. L'état initial est le premier état mentionné dans le fichier. Reproduisez le calcul décrit ici en faisant un copier-coller des fichiers et des commandes.

Voici un premier exemple.

1 2 1
1 1 1
1
2 3 2
3 1 3
3 4 3
3 4 4
4

La première ligne dit qu'il y a une transition de l'état 1 à l'état 2 avec le symbole 1. La deuxième ligne nous dit que l'état 1 est un état final.

Supposons que notre fichier texte s'appelle exemple-1.txt. Il faut d'abord compiler ce fichier, ce qui produit un fichier binaire au format interne FSM, que nous allons appeler exemple-1.fst. La compilation s'écrit:

fstcompile --acceptor exemple-1.txt > exemple-1.fst

L'option --acceptor spécifie qu'il s'agit d'un automate et non d'un transducteur.

On peut obtenir un dessin représentant l'automate avec la commande suivante (à condition d'avoir installé la librairie graphviz qui fournit la commande dot):

fstdraw  --portrait --acceptor exemple-1.fst > exemple-1.dot
dot -Tpng exemple-1.dot > exemple-1.png

Pour visualiser le résultat, on puet utiliser la commande suivante:

display exemple-1.png

151

Remarquez que les états ont changé de nom par rapport au fichier: ils on été renumérotés à partir de 0.

On peut voir que cet automate est non-déterministe: il existe deux transitions avec le symbole 1 depuis l'état initial et il y a deux transition avec le symbole 3 depuis l'état 3 (renuméroté 2). Si on essaye de minimiser cet automate (commande fstminimize), il y a un message d'erreur qui nous dit que seul un automate déterministe peut être minimisé.

> fstminimize exemple-1.fst > exemple-1-min.fst
FATAL: FST is not deterministic

Il faut donc commencer par déterminiser, puis minimiser. Il aurait fallut éliminer les epsilons-transitions en premier, s'il y en vait eu.

fstdeterminize exemple-1.fst > exemple-1-det.fst
fstminimize exemple-1-det.fst > exemple-1-min.fst

On peut calculer et visualiser les formes graphiques de ces automates.

fstdraw --acceptor --portrait exemple-1-det.fst > exemple-1-det.dot
dot -Tpng exemple-1-det.dot > exemple-1-det.png
fstdraw --acceptor --portrait exemple-1-min.fst > exemple-1-min.dot
dot -Tpng exemple-1-min.dot > exemple-1-min.png

154

157

160

On peut avoir de l'information sur les automates en utilisant la commande fstinfo.

> fstinfo exemple-1.fst
fst type                                          vector
arc type                                          standard
input symbol table                                none
output symbol table                               none
# of states                                       4
# of arcs                                         6
initial state                                     0
# of final states                                 2
# of input/output epsilons                        0
# of input epsilons                               0
# of output epsilons                              0
# of accessible states                            4
# of coaccessible states                          4
# of connected states                             4
# of connected components                         1
# of strongly conn components                     2
input matcher                                     y
output matcher                                    y
input lookahead                                   n
output lookahead                                  n
expanded                                          y
mutable                                           y
error                                             n
acceptor                                          y
input deterministic                               n
output deterministic                              n
input/output epsilons                             n
input epsilons                                    n
output epsilons                                   n
input label sorted                                y
output label sorted                               y
weighted                                          n
cyclic                                            y
cyclic at initial state                           y
top sorted                                        n
accessible                                        y
coaccessible                                      y
string                                            n
> fstinfo exemple-1-min.fst
fst type                                          vector
arc type                                          standard
input symbol table                                none
output symbol table                               none
# of states                                       4
# of arcs                                         5
initial state                                     2
# of final states                                 3
# of input/output epsilons                        0
# of input epsilons                               0
# of output epsilons                              0
# of accessible states                            4
# of coaccessible states                          4
# of connected states                             4
# of connected components                         1
# of strongly conn components                     2
input matcher                                     y
output matcher                                    y
input lookahead                                   n
output lookahead                                  n
expanded                                          y
mutable                                           y
error                                             n
acceptor                                          y
input deterministic                               y
output deterministic                              y
input/output epsilons                             n
input epsilons                                    n
output epsilons                                   n
input label sorted                                y
output label sorted                               y
weighted                                          n
cyclic                                            y
cyclic at initial state                           y
top sorted                                        n
accessible                                        y
coaccessible                                      y
string                                            n

On peut produire la représentation en texte de l'automate avec la commande fstprint.

> fstprint --acceptor exemple-1-min.fst
2       0       1
2
0       0       1
0       1       2
0
1       2       3
1       3       4
3


next up previous
suivant: Principales commandes OpenFST monter: Utilisation de boîtes à précédent: Mise en place du
barthe 2017-12-06