Utiliser l'analyseur FRMG
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
.
> echo "il mange une pomme." | frmg_lexer | frmg_parser -loop -disamb -conll <latency_time> 102ms <token> E1F5 . <token> E1F4 pomme <token> E1F3 une <token> E1F2 mange <token> E1F1 il Answer: L = [-disamb,-conll] SId = E1 N = 5 A = 0 ## sentence=E1 mode=full best=yes 1 il il CL CLS n=s|p=3|s=suj 2 suj _ _ R_subjectsubject 5 2 mange manger V V m=ind|n=s|p=3|t=pst 0 root _ _ R_root -1 3 une un D DET n=s 4 det _ _ R_detdet 2 4 pomme pomme N NC n=s|s=c 2 obj _ _ R_objectobject 4 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.
> frmg_shell Welcome on FRMG shell [type help for more information] (default: sentence 1)> help FRMG shell commands quit : exit this shell (alias: q | bye ) .... (default: sentence 1)>:conll il mange une pomme ... ## sentence=E1 mode=full best=yes 1 il il CL CLS n=s|p=3|s=suj 2 suj _ _ R_subjectsubject 5 2 mange manger V V m=ind|n=s|p=3|t=pst 0 root _ _ R_root -1 3 une un D DET n=s 4 det _ _ R_detdet 2 4 pomme pomme N NC n=s|s=c 2 obj _ _ R_objectobject 4 [1] il mange une pomme (default: sentence 1)>1:xml:| ... (default: sentence 1)> quit 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
.
> parserd_service status parserd is stopped > parserd_service start 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)
> cat mycorpus.conf ## path to dags (word lattices) for mycorpus built with SxPipe # using something along: cat mycorpus/file.txt | sxpipe -u -l=fr | dag2udag > mycorpus.dag/file.udag dagdir mycorpus.dag/ # specify that that dag files use suffixes .udag or .udag.bz2 (compressed) dagext udag ## where and how to save the results ## the following will save everything under mycorpus.results with archives of the form <file>.tar.gz for each ## file of the corpus, and a file per sentence in the archive. results mycorpus.results collsave compress tar ## emits some statistics in <file>.log.bz2 where <file> is one of the corpus files time date stats ## output schema for the sentences #dis_xmldep #passage #udep conll # Control of the parser # partial analysis robust # timeout of 300s to kill parses that takes too long timeout 300 # Specif of the hosts and of the number of workers per host # two instances on nodeA host nodeA_1@nodeA host nodeA_2@nodeA # alternatively, the following lines use a shortcut notation for 8 instances on nodeA and 8 on nodeB host nodeA_%i@nodeA^i=1..8 host nodeB_%i@nodeB^i=1..12
Et finalement, > dispatch.pl --config mycorpus.conf ....
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 (par défaut: http://127.0.0.1:3000/process
) . 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 de base tous les éléments nécessaires au service WEB. En particulier, il faut installer le module Perl DepXML
alpi --prefix=<prefix> --pkg=DepXML
La compilation de DepXML va requérir d'autres modules Perl (Devel::Declare, B::Hooks::EndOfScope), pouvant être installés via cpanm
- Version imprimable
- Connectez-vous ou inscrivez-vous pour publier un commentaire