Accueil BaO1 BaO2 BaO3 BaO4

BOITE A OUTILS 3

Extraction des patrons morpho-syntaxiques

Avec la 2ème boîte à outils nous avons annoté le contenu textuel des titres et des descriptions avec deux outils TreeTagger et Talismane. Maintenant on peut passer à l'extraction des patrons morpho-syntaxiques par plusieurs moyens.

Perl pour Talismane

Le 1er outil à utiliser est le script écrit en Perl fourni par M. Fleury et M.Daube. Le programme recherche dans le fichier Talismane l'étiquete de POS et le compare avec le 1er élément dans la séquence des patrons. Une fois qu'il y a le "match" il vérifie l'élément suivant. L'avantage de cette méthode est qu'elle ne tient pas compte de la manière de mise en page qu'on a utilisée lors de la 2ème boîte à outils (double saut de ligne, signes "$" ou "£"). Les expressions extraites sont triées en fonction du patron recherché et leur fréquence.
Pour lancer par la ligne de commande:
perl extract-terminologie-bisbis.pl *fichier_Talismane.txt* *patron.txt*

Résultats d'extraction des patrons morpho-syntaxiques de Talismane :

Python pour TreeTagger

Le script écrit en Python extrait des patrons morpho-syntaxiques des fichiers .xml étiquetés par TreeTagger. Le programme prend en entrée le document au format .xml et le fichier qui contient des patrons qui sont divisés par un saut de ligne. Il lit d'abord le fichier des patrons, les divise par le saut de ligne et ensuite recherche leurs étiquettes grâce à l'expression régulière. Le résultat est stocké dans un fichier temporaire. Le résultat nettoyé est enfin enregistré dans le fichier final. Le script calcule le nombre total des fichiers trouvés et affiche quel patron a été extrait.
La même méthode ne fonctionne pas avec les fichiers de Talismane. Le programme cherche chaque étiquette séparément:



Pour lancer le script depuis la ligne de commande:
python3 b3_tree.py *nom_de_fichier.xml* *patron.txt*

Extraction des patrons morpho-syntaxiques de TreeTagger :

XSLT

Le même traitement a du être réalisé sur les fichiers au format .xml pour TreeTagger. Le fonctionnement de chaque feuille XSLT est le suivant: quand le programme rencontre le noeud element il vérifie si la balise contient un élément de notre séquence de patron. Quand c'est le cas il continue avec l'élément suivant dans le document .xml pour vérifier l'élément suivant de la séquence. On réalise ce test avec les fonctions de XPath following-sibling et preceding-sibling. Quand on a la correspondance avec le patron, on cherche dans la suite du document .xml et on fait la sélection des éléments correspondants. Toutes les feuilles fonctionnent de la même façon seul le nombre de frères à tester change.
Le même travail pour d'autres patrons a été réalisé pour l'exercice 13 pour le projet de Document Structuré.
Les feuilles XSLT par patron:

Les résultats obtenus :



XQUERY

Les requêtes XQuery suivent quasiment la même logique. D'abord on déclare les éléments de la séquence (dans notre cas à chaque fois ce sont les frères de l'élément principal). Ensuite, on teste si cette séquence correspond au patron recherché. Enfin, le résultat est enregistré dans le fichier .xml.
Les requêtes XQuery par patron:

Les résultats de requêtes:



COMPARAISON DES EXTRACTIONS

Avant d'avoir créé ce tableau, je ne me suis pas rendue compte des résultats produits par le script en Python pour TreeTagger. Effectivement, l'extraction des patrons a été générée par les tuples - les objets de programmation qui entre autres font le tri des doublons. Pour voir le bon côté des choses, au moins on sait le nombre d'expressions uniques* trouvées. Afin de comparer ces chiffres, j'ai rajouté une dernière colonne qui contient le nombre d'expressions uniques trouvées avec Perl.
* Unique - sans doublons.
Le nombre total de patrons trouvés pour chaque type d'extraction:

Vu que XSLT et XQuery ont trouvé plus de patrons pour TreeTagger que Perl a trouvé pour Talismane, on pourrait supposer que le nombre unique de patrons trouvés pour TreeTagger soit aussi plus grand que pour Talismane. Mais ce n'est pas le cas (à part une rubrique). Cela peut vouloir dire soit qu'il existe un problème avec le script de Python, soit que cet écart vient de la différence d'étiquetage entre les deux outils (soit les deux 🙃).
En comparant le nombre total de patrons trouvés, on peut déjà conclure que la différence d'étiquetage est assez importante. TreeTagger annote plus d'expressions que Talismane. Maintenant on pourra passer à la 4ème boîte à outils pour voir qualitativement les différences entre les rubriques.