Révisions

Une fois installée la chaîne de traitement Alpc, trois modes d'utilisation sont disponibles, à savoir:

  • utilisation directe en ligne de commande
  • utilisation via le shell FRMG (frmg_shell)
  • utilisation d'un serveur de parseur (parserd)

Mode ligne de commande

Ce mode est seulement présenté pour des raisons historiques et pour aider à l'intégration de FRMG.

Il s'appuie sur les commandes frmg_lexer et frmg_parser.

  1. > echo "il mange une pomme." | frmg_lexer | frmg_parser -loop -disamb -conll
  2. <latency_time> 102ms
  3. <token> E1F5 .
  4. <token> E1F4 pomme
  5. <token> E1F3 une
  6. <token> E1F2 mange
  7. <token> E1F1 il
  8. Answer:
  9. L = [-disamb,-conll]
  10. SId = E1
  11. N = 5
  12. A = 0
  13. ## sentence=E1 mode=full best=yes
  14. 1 il il CL CLS n=s|p=3|s=suj 2 suj _ _ R_subjectsubject 5
  15. 2 mange manger V V m=ind|n=s|p=3|t=pst 0 root _ _ R_root -1
  16. 3 une un D DET n=s 4 det _ _ R_detdet 2
  17. 4 pomme pomme N NC n=s|s=c 2 obj _ _ R_objectobject 4
  18. 5 . . PONCT PONCT _ 2 ponct _ _ R_ponctvoid 1

L'option '-loop' pour frmg_parser permet en fait de traiter un séquence de phrases. Il est donc possible de traiter le contenu d'un fichier

> cat myfile.txt | frmg_lexer | frmg_parser -loop -disamb -conll -multi

Par ailleurs, le lexer frmg_lexer accepte une chaîne de caractères en entrée et appelle le segmenteur sxpipe dessus. Mais il est également possible de passer au lexer le résultat d'une telle segmentation sous forme d'un DAG (ou treillis de mots).

> echo "il mange une pomme." | sxpipe | dag2udag | frmg_lexer | frmg_parser -loop -disamb -conll

Mode Shell

Le mode shell, avec la commande frmg_shell, est conseillé pour une première utilisation de l'analyseur FRMG.

  1. > frmg_shell
  2. Welcome on FRMG shell [type help for more information]
  3. (default: sentence 1)> help
  4. FRMG shell commands
  5. quit : exit this shell
  6. (alias: q | bye )
  7. ....
  8. (default: sentence 1)>:conll il mange une pomme
  9. ...
  10. ## sentence=E1 mode=full best=yes
  11. 1 il il CL CLS n=s|p=3|s=suj 2 suj _ _ R_subjectsubject 5
  12. 2 mange manger V V m=ind|n=s|p=3|t=pst 0 root _ _ R_root -1
  13. 3 une un D DET n=s 4 det _ _ R_detdet 2
  14. 4 pomme pomme N NC n=s|s=c 2 obj _ _ R_objectobject 4
  15. [1] il mange une pomme
  16. (default: sentence 1)>1:xml:|
  17. ...
  18. (default: sentence 1)> quit
  19. Goodbye ! à bientôt

La commande peut être aussi utilisée en mode batch

> echo ":xml:passage il mange une pomme." | ./frmg_shell --quiet > foo.xml

Elle peut également être utilisée pour traiter des corpus jouets. Par exemple, la commande suivante traite les phrases de mycorpus.txt pour produire des sorties en format CONLL (schéma FTB), stockées sous mycorpus/ à raison d'une phrase par fichier.

> echo "corpus mycorpus.txt mycorpus :conll" | frmg_shell --batch

Mode Serveur

Ce mode, un peu plus compliqué à mettre en oeuvre, permet cependant le traitement de gros corpus sur des clusters de machines. Il repose sur l'utilisation du serveur parserd (qui devra tourner sur chaque noeud du cluster) et sur le contrôleur dispatch.pl qui a la charge d'envoyer les phrases du corpus aux noeuds, récupérer les résultats, et gérer les problèmes éventuels.

Le serveur parserd peut être lancé à l'aide de parserd_service, installé par alpi.

  1. > parserd_service status
  2. parserd is stopped
  3. > parserd_service start
  4. Starting parserd: Running the server user=clerger group=alpage [ OK ]

Le traitement d'un corpus peut alors être lancé, en précisant un certain nombre d'options dans un fichier de configuration (ou directement sur la ligne de commande)

  1. > cat mycorpus.conf
  2. ## path to dags for mycorpus built with SxPipe
  3. dagdir mycorpus.dag/
  4. dagext udag
  5. ## where and how to save the results
  6. results mycorpus.results
  7. collsave
  8. compress
  9. tar
  10. ## emits some statistics
  11. time
  12. date
  13. stats
  14. ## output schema
  15. #dis_xmldep
  16. #passage
  17. conll
  18. # Control of the parser
  19. robust
  20. timeout 300
  21. # Specif of the hosts and of the number of workers per host
  22. host nodeA_%i@nodeA^i=1..8
  23. host nodeB_%i@nodeB^i=1..12
  1. Et finalement,
  2. > dispatch.pl --config mycorpus.conf
  3. ....