Les deux révisions précédentes
Révision précédente
Prochaine révision
|
Révision précédente
|
equipes:rcln:ancien_wiki:outils:lorg [2019/04/03 13:38] rosse [Compilation des sources] |
equipes:rcln:ancien_wiki:outils:lorg [2020/11/23 18:42] (Version actuelle) garciaflores ↷ Liens modifiés en raison d'un déplacement. |
| ====== LORG ====== |
| |
Parseur syntaxique développé au NLCT de la Dublin City University. Au LIPN on travaille avec [[http://github.com/jihelhere/LORG-Release|la variante de LORG maintenue par Joseph Le Roux]]. | Parseur syntaxique développé au NLCT de la Dublin City University. Au LIPN on travaille avec [[http://github.com/jihelhere/LORG-Release|la variante de LORG maintenue par Joseph Le Roux]]. |
| |
| |
==== Entraînement ==== | ==== Entraînement ==== |
Le programme **tb2gram** lit un corpus annoté en format [[http://stp.lingfil.uu.se/~nivre/master/penn00.trees|//Penn Treebank//]] (.ptb) pour produire une grammaire hors contexte probabiliste (PCFG). Cette grammaire sera utilisée par le parseur syntaxique <tt>twostage_lorgparser</tt>. | Le programme **tb2gram** lit un corpus annoté en format [[http://stp.lingfil.uu.se/~nivre/master/penn00.trees|Penn Treebank]] (.ptb) pour produire une grammaire hors contexte probabiliste (PCFG). Cette grammaire sera utilisée par le parseur syntaxique ''twostage_lorgparser''. |
| |
* **Anglais** | * **Anglais** |
| |
Pour l'anglais, on va entraîner le parseur avec les sections [[2-21]] du Penn Treebank, qui se trouve sur <tt> /home/corpus/Treebank-3/parsed/mrg/wsj/</tt> dans le serveur lipn-rcln. Avant de lancer l'entraînement, il faut créer un répertoire sur lipn-rcl où écrire la grammaire de sortie. À partir du répertoire racine de LORG (//LORG-Resease//), on envoie: | Pour l'anglais, on va entraîner le parseur avec les sections [[2-21]] du Penn Treebank, qui se trouve sur ''/home/corpus/Treebank-3/parsed/mrg/wsj/'' dans le serveur lipn-rcln. Avant de lancer l'entraînement, il faut créer un répertoire sur lipn-rcl où écrire la grammaire de sortie. À partir du répertoire racine de LORG (//LORG-Resease//), on envoie: |
$ mkdir data/training/english/english_grammar.utilisateur.date | <code> $ mkdir data/training/english/english_grammar.utilisateur.date</code> |
| |
Maintenant on peut commencer l'entrainement, qui peut prendre quelques heures. La commande qui suit entraine avec les sections 2 à 21 du //Penn Treebank// avec l'option des messages explicites (-v) et elle produira six étapes de division/melange/lissage (option par défaut) avec 8 fils d'exécution (--nbthreads), tout en remplaçant les //tokens// qui avec occurrence=1 par les signatures ordonnées d'après son gain d'information en anglais (-w EnglishIG). | Maintenant on peut commencer l'entrainement, qui peut prendre quelques heures. La commande qui suit entraine avec les sections 2 à 21 du //Penn Treebank// avec l'option des messages explicites (-v) et elle produira six étapes de division/melange/lissage (option par défaut) avec 8 fils d'exécution (--nbthreads), tout en remplaçant les //tokens// qui avec occurrence=1 par les signatures ordonnées d'après son gain d'information en anglais (-w EnglishIG). |
</code> | </code> |
| |
Pour voir le détail des options de <tt>tb2gram</tt>, voir l'option <tt>--help</tt> où le [[https://github.com/jihelhere/LORG-Release/blob/master/README|README]] du code source. | Pour voir le détail des options de ''tb2gram'', voir l'option ''-%%-%%help'' où le [[https://github.com/jihelhere/LORG-Release/blob/master/README|README]] du code source. |
| |
Si tout s'est bien passé, le contenu du répertoire <tt>$TB2OUTPUT/english_grammar</tt> doit contenir les fichiers de la grammaire: | Si tout s'est bien passé, le contenu du répertoire ''$TB2OUTPUT/english_grammar'' doit contenir les fichiers de la grammaire: |
<code> | <code> |
$ ll $TB2OUTPUT | $ ll $TB2OUTPUT |
==== Parsing ==== | ==== Parsing ==== |
=== Préconditions === | === Préconditions === |
Le fichier d'entrée doit être déjà segmenté en phrase, une phase par ligne. Pour le présent exemple, on donnera en entrée les premières phrases d'un discours de Martin Luther King (sur lipn-rcln, on peut le trouver dans <tt>/home/lorg/LORG-Release/data/parsing/input/dream.txt</tt>). | Le fichier d'entrée doit être déjà segmenté en phrase, une phase par ligne. Pour le présent exemple, on donnera en entrée les premières phrases d'un discours de Martin Luther King (sur lipn-rcln, on peut le trouver dans ''/home/lorg/LORG-Release/data/parsing/input/dream.txt''). |
<code> | <code> |
I say to you today, my friends, so even though we face the difficulties of today and tomorrow, I still have a dream. | I say to you today, my friends, so even though we face the difficulties of today and tomorrow, I still have a dream. |
I have a dream that one day this nation will rise up and live out the true meaning of its creed: | I have a dream that one day this nation will rise up and live out the true meaning of its creed: |
"We hold these truths to be self-evident: that all men are created equal." | "We hold these truths to be self-evident: that all men are created equal." |
[[...]] | [[..:..:outils]] |
</code> | </code> |
| |
=== Segmentation en unités lexicales (//Tokenisation//) === | === Segmentation en unités lexicales (Tokenisation) === |
Le fichier d'entrée du parseur doit être segmenté en accord avec le corpus avec lequel le parseur a été entrainé. C'est à dire, si on a entrainé avec un //Penn Treebank// le texte à analyser devra être tokenisé de la même façon que le //Penn Treebank//. | Le fichier d'entrée du parseur doit être segmenté en accord avec le corpus avec lequel le parseur a été entrainé. C'est à dire, si on a entrainé avec un //Penn Treebank// le texte à analyser devra être tokenisé de la même façon que le //Penn Treebank//. |
| |
Dans l'installation de lipn-rcln, le script <tt>ptb.tokenizer.sed</tt> (répertoire <tt>scripts</tt>) permet de segmenter avec les mêmes critères que le //Penn Treebank//. La commande suivante segmente le texte <tt>dream.txt</tt> en unité lexicales distinctes séparées par un espace et écrir la sortie sur <tt>dream.ptb.txt</tt> | Dans l'installation de lipn-rcln, le script ''ptb.tokenizer.sed'' (répertoire ''scripts'') permet de segmenter avec les mêmes critères que le //Penn Treebank//. La commande suivante segmente le texte ''dream.txt'' en unité lexicales distinctes séparées par un espace et écrire la sortie sur ''dream.ptb.txt'' |
| <code> |
[[lorg@lipn-rcln|LORG-Release]]$ ./scripts/ptb.tokenizer.sed data/parsing/input/dream.txt > data/parsing/input/dream.ptb.txt | [[lorg@lipn-rcln|LORG-Release]]$ ./scripts/ptb.tokenizer.sed data/parsing/input/dream.txt > data/parsing/input/dream.ptb.txt |
| </code> |
L'étape de tokenisation peut être évité en passant l'option <tt>--input-mode raw</tt> à <tt>twostage_lorgparser</tt>, mais elle ne marche que pour l'anglais. | L'étape de tokenisation peut être évité en passant l'option ''-%%-%%input-mode raw'' à ''twostage_lorgparser'', mais elle ne marche que pour l'anglais. |
| |
=== Analyse syntaxique === | === Analyse syntaxique === |
</code> | </code> |
| |
Cette commande appel <tt>twostage_lorg</tt> avec les options suivantes:</tt> | Cette commande appel ''twostage_lorg'' avec les options suivantes: |
* **-g** indique la grammaire PCFG-LA précedemment généré dans la phase d'entraînement | * **-g** indique la grammaire PCFG-LA précedemment généré dans la phase d'entraînement |
* **-o** indique le fichier de sortie de l'analyse syntaxique | * **-o** indique le fichier de sortie de l'analyse syntaxique |
* **-w EnglishIG** indique le remplacement des occurrences uniques par ses signatures ordonnées d'après son gain d'information en langue anglaise | * **-w EnglishIG** indique le remplacement des occurrences uniques par ses signatures ordonnées d'après son gain d'information en langue anglaise |
* **--input mode tok** indique que le texte à analyser a été segmenté en unité lexicales | * **-%%-%%input mode tok** indique que le texte à analyser a été segmenté en unité lexicales |
* **--parser-type kmax --k 1** indique que l'analyse sera effectué avec Maxrule, qui produit une liste de k solutions (k=1 ici) | * **-%%-%%parser-type kmax -%%-%%k 1** indique que l'analyse sera effectué avec Maxrule, qui produit une liste de k solutions (k=1 ici) |
* **--verbose** pour imprime les scores des solutions et d'autres messages complémentaires | * **-%%-%%verbose** pour imprime les scores des solutions et d'autres messages complémentaires |
| |
Le résultat de la commande: | Le résultat de la commande: |
overall time: 6.51949s | overall time: 6.51949s |
</code> | </code> |
Et le résultat de l'analyse sur le fichier <tt>dream.txt.tok.parsed</tt> | Et le résultat de l'analyse sur le fichier ''dream.txt.tok.parsed'' |
<code> | <code> |
- ID: 1 | - ID: 1 |