next up previous
suivant: Exercice 3 monter: Utilisation de boîtes à précédent: Transducteurs en OpenFST

Transducteur avec OpenGRM

On peut spécifier les mêmes machines au moyen d'OpenGRM. Voici le fichier source exemple-6.grm.

export transducteur_1 = ( ("a":"x")|("b":"y")|("c":"z") )* ;
export automate_4 = "a" "b"* "c"+ ;
export result_compo_2 = automate_4 @ transducteur_1 ;
export result_proj_2 = Project[ result_compo_2 , 'output' ] ;
export result_proj_2_opt = Optimize[ result_proj_2 ];

Pour compiler ce fichier et extraire les résultats:

thraxmakedep exemple-6.grm
make
farextract exemple-6.far

On peut s'assurer que le résultat obtenu par les deux outils sont équivalents au moyen de la commande fstequivalent.

>fstequivalent result_proj.fst result_proj_2_opt 
 echo $?
0
> fstequivalent result_proj.fst exemple-5.fst
> echo $?
2

La commande fstequivalent n'affiche pas de résultat mais elle renvoie 0 si les deux machines sont équivalentes et un autre entier si elles ne sont pas équivalent. La commande echo $? permet d'afficher le résultat renvoyé.

La commande thraxrewrite-tester permet de tester la traduction de chaîne par un transducteur.

> thraxrewrite-tester --far=exemple-6.far --rules=transducteur_1
Input string: abc
Output string: xyz
Input string: aabbcc
Output string: xxyyzz
Input string: aababaca
*Output string: xxyxyxzx
Input string: adb
Rewrite failed.
Input string: aaa
Output string: xxx
Input string: ^C



barthe 2017-12-06