Boîte à Outils 3
Objectif: Extraire un patron morphosyntaxique donné à partir d'un script perl et une feuille de style. Pour cette boîte à Outils n°3 nous avons deux scripts pour traiter la sortie de Cordial et un script pour traiter la sortie de Treetagger.
Structure des données étiquetées: le script parcourt le fichier étiqueté de Cordial qui se structure en 3 colonnes et chaque ligne est un token différent:
-
Les 3 colonnes sont :
- le token
- son lemme
- sa catégorie morpho-syntaxique
Script pour la sortie de cordial
Solution n°1 (script proposé par Jean-Michel Daube).
Ce script permet de parcourir le fichier étiqueté par Cordial.
Le premier argument de ce script c'est le fichier étiqueté par Cordial. On analyse donc ce fichier ligne par ligne. Et quand il trouve la forme et le POS, il les enregistre dans deux variables. Le deuxième argument de ce script c'est le fichier PATRONS. Il va essayer de trouver une correspondance entre les catégories morpho-syntaxiques qu'on a indiqué dans ce fichier et les différentes lignes qu'on a analysé.
Ce script a un avantage car une fois que nos motifs sont trouvés, on peut l'écrire dans un fichier txt pour afficher le résultat.
Solution n°2 (script proposé par Serge Fleury).
Dans ce script, nous parcourons également notre fichier étiqueté par Cordial ligne par ligne. La seule différence qu'on a avec le premier script c'est que ce dernier n'a besoin que d'un seul argument(ici c'est le fichier étiqueté par cordial). Nous n'avons pas besoin d'un fichier PATRONS pour indiquer les motifs qu'on veut chercher , car ils sont déjà indiqués dans le script. Nous donnons également une séquence d'étiquettes morpho-syntaxiques séparées par un espace en argument. Cette séquence constitue le motif que nous cherchons à reconnaître.
Le déroulement du script :
➝ On stocke en mémoire chaque ligne du fichier à parcourir dans une liste @lignes
➝ lecture ligne par ligne en stockant le premier argument de la ligne @lignes dans une variable $ligne
➝ Suppression du retour à la ligne grâce à chomp
➝ Puis on crée 2 variables $sequence et $longueur qui vont être remplies.
➝ Ensuite, on fait une succession de condition avec if : on test cette condition sur la 3ème colonne (donc sur la catégorie morphosyntaxique)
➝ On cherche le motif qu'on a indiqué (ici c'est DET) et il doit correspondre au premier motif donné en argument
➝ Enfin, si la valeur de la variable $longueur est égale à la dernière longueur qu'on a cherché alors nous avons trouvé tous les motifs que nous cherchions.
➝ Et, nous affichons la séquence suivi d’un retour à la ligne
Télécharger
Script pour la sortie Treetagger
Ce script fonctionne à l'identique du précédent, le seul changement concerne la ligne d'expression régulière à tester.
Le déroulement du script:
➝ On stocke en mémoire chaque ligne du fichier à parcourir dans une liste @lignes
➝ lecture ligne par ligne en stockant le premier argument de la ligne @lignes dans une variable $ligne
➝ Nous nous servons désormais du format structuré d'XML pour viser l'étiquette morpho-syntaxique afin de vérifier notre condition.
Ouverture d'une boucle :
➝ 1ère condition (On cherche à extraire 3 motifs différents ici)
Nous recherchons en nous appuyant sur la structure du document XML le motif lexical correspondant au premier motif.
➝ 2ème condition
Nous recherchons en nous appuyant sur la structure du document XML le motif lexical correspondant au second motif.
➝ 3ème condition
Nous recherchons en nous appuyant sur la structure du document XML le motif lexical correspondant au troisième motif.
➝ Et enfin la dernière condition, qui est en dehors de la boucle vérifie que le motif extrait est bien composé de 3 éléments.
➝ Si c’est le cas alors nous affichons la variable $sequence qui stocke en mémoire les éléments lexicaux correspondants aux catégories demandées.
Télécharger
Extraction via à une feuille de style
On commence par repérer les motifs morphosyntaxiques en utilisant une feuille de style XSLT appliquée au document XML étiqueté par Treetagger. La feuille de style permet de sélectionner uniquement les éléments et contenus qui nous intéressent et de les mettre en avant sur une page html, ou dans un autre type de document.