Révisions

Une fois installée la chaîne de traitement Alpc, quatre 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)
  • utilisation d'un service Web (frmg_server.pl)

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

ou (pour des sorties en format Passage/XML et mode robust) :

> echo "corpus mycorpus.txt mycorpus :passage:xml:robust" | frmg_shell --batch

Voici l'aide (à peu près à jour) des options de FRMG Shell

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. ....

Mode Service Web

Le package FRMG inclut le script frmg_server.pl qui permet de lancer un service Web sous Mojolicious, par exemple en lançant

morbo ./frmg_server.pl

Des réglages de configuration peuvent être fournis dans frmg_server.conf, (voir le modèle d'exemple frmg_server.conf.sample).

Il suffit ensuite d'ouvrir une fenêtre de navigateur sur l'adresse et port retourné lors du démarrage du service. C'est ce genre de service WEB qui est utilisé par le visualisateur de sorties syntaxiques de ce site. Il est directement accessible ici. Dans l'interface WEB, le champ 'Options' peut être rempli par les mêmes options disponible pour le shell FRMG (mais séparées par des espaces plutôt que par ':').

NOTES: pour l'instant (Mars 2018), alpi m'installe pas correctement tous les éléments nécessaires au service WEB. En particulier, il faut installer manuellement le module Perl DepXML

  1. source <prefix>/sbin/setenv.sh
  2. cd <prefix>/src/corpus_proc/DepXML
  3. perl Makefile.PL
  4. make
  5. make install

La compilation de DepXML va requérir d'autres modules Perl (Devel::Declare, B::Hooks::EndOfScope), pouvant être installés via cpanm