Ce site concere le cours Programmation et projet encadré 2, plus familiarement connu comme cours boîte à outils pour le fait qu'on manipule différentes solutions et on apprend différentes méthodes pour resoudre des tâche d'extraction de textes (1), d'étiquetage (2), d'extraction de patrons morphosyntaxiques et de motifs lexicaux (3) et d'affichage des résultats (4).
L'objectif d'apprentissage d'un langage de programmation, son utilisation sur diverses applications pour effectuer des traitements de corpus et une analyse linguistique sur ce dernier fait suite au cours du premier semestre tenu également par les professeurs Jean-Michel Daube et Serge Fleury à l'ILPGA - Paris 3 Sorbonne Nouvelle pour le master 1 Traitement Automatique des Langues.

Outils

Le langage de programmation Perl est à la base de ce projet, ce langage nous a permis de creer des programmes simples et efficaces pour effectuer les opérations déjà citées grâce à la manipulation de chaînes de caractères, la syntaxe intuitive, les expressions regulières et la gestion de volumes de données importants, le cas ici d'une d'un recueil journalistique sur une année entière.
Ecrits en Perl et présentés plus en détail dans l'autre page dediées de ce site sont aussi l'étiqueteur treeTagger, le programme permettant de transformer les résultats de ce dernier en format XML et celui pour l'extraction de patrons à partir des données obtenu sur l'annotation de Cordial (logiciel non open source et payant utilisé sur machines universitaires). On s'est servi du langage XSLT pour extraire en revanche ceux sous forme XML.

Les Boîtes à Outils —»

Les noyaux du projet

Corpus

Le corpus réuni pour effectuer cette analyse a été composé tout au long de l'année 2016, il comprend le fils RSS des différentes rubriques du journal Le Monde. Le dossier d'entrée 2016 contient douze sous-dossiers correspondants aux mois de l'année et chaque sous-dossier contient autant de sous-dossier que de jour du mois, le dernier dossier correspond à l'heure à laquelle les fils ont été recueillis (approximativement 19h) et c'est ici qu'on retrouve les fichiers textes composants notre corpus. Chaque rubrique ayant un code unique pour l'identifier on a pu conséquemment choisir et trier les fils qu'on préférait analyser, ici on s'est concentré sur les rubriques : à l'interieur du fils RSS sont contenu plusieurs informations (nom du fichier, URL, date, etc.) alors que nous nous sommes intéressé à en extraire uniquement les titres et les descriptions de chaque articles. Après les différents nettoyages et qu'on s'assure qu'un article apparaît une seule fois, on obtient deux fichiers résultats, un .txt et un .xml.
Ces deux fichiers seront les objets de l'étiquetage, le .txt à travers Cordial, le XML est soumis à treeTagger, appelé tout de suite dans le script pour nous renvoyer un résultat immédiat (voir la sous-routine etiquette lignes 95-129 dans le script de la boîte à outils 1 et demi).

Extractions

On traitera ici la phase d'extraction des patrons morphosyntaxiques et de motifs lexicaux effectuée sur les sous-corpus résultant des boîtes à outils 1 et 2. Cette extraction a été effectuée trois fois pour chaque rubrique et pour les 5 patrons (60 fichiers résultats au total), sur le XML résultant de treeTagger, sur le .txt toujours provenant de l'étiquetage treeTagger et une troisième sur le .cnr le fichier étiiqueté produit par Cordial. Pour XML on a opéré avec des feuilles de style XSLT produisantes des fichiers textes avec les résultats des patrons recherchés à l'interieur de la structure XML, dans les deux autres cas vu qu'il s'agissait déjà de fichiers texte presentants une structure bien definie, string\tPOS\tlemma pour treeTagger et string\tlemma\tPOS pour Cordial, à travers un script on a pu analyser les différentes lignes et garder les informations qui nous interessaient (les deux versions sont presentes dans l'autre page de ce site). Avant de passer à la phase d'évaluation des extraction on a bien pris soin de nettoyer les textes des eventuelles lignes vides qui pouvait gêner la comparaison et le comptage.

Les patrons morphosyntaxiques. Comme on l'a dit, ici à partir des annotations effectué par les deux programmes on obtient des listes d'éléments qui peuvent nous aider à comparer et comprendre comment un programme travaille par rapport à l'autre voire s'il y a des éléments ambigue sur lesquels il faudrait améliorer. Il y a des considerations importantes à faire avant de procéder aux résultats, en premier lieu on pourrait s'attendre que l'extraction de patrons sur l'étiquetage treeTagger soit la même qu'il s'agit de résultats provenants du script ou de l'extraction à travers XSL, evidemment ce n'est pas le cas. Ces résultats presentent très peu de points commun, ceci est sûrement dû à la non parfaite extraction de la part du script, qui à la base était fait pour travailler sur le fichier Cordial et du coup a été adapté pour en tester un peu à l'aveugle les capacités.
Un autre point important, le volume des extraction n'est pas du tout le même sur des mêmes patrons, il n'y a pas des enormes différences non plus mais le nombre de résultats extraits n'arrive jamais à être le même. On comprend bien à partir de ce point aussi que les patrons extraits diffèrent largement. Une dernière consideration doit évidemment être reservé à la qualité des annotations pas toujours impeccable, on retrouve pas mal de bruit dans les résultats et souvent concernant les mêmes éléments. On peut en général considérer que vu les outils à disposition, treeTagger est un projet gratuit toujours améliorable et la version de Cordial utilisée un peu daté, les annotations obtenues ne sont pas mauvais et en enlevant le bruit on peut se rendre compte assez bien du corpus qu'on avait à disposition et de ces caractéristiques.

Les couples ou triples de patrons recherchés correspondent au motifs qui a ont été soumis aux scripts et aux requêtes XPath nous donnant les résultats suivants, vous aurez à disposition les liens pour les fichiers complets de chaque résultat et pour celui des annotations communes si disponible :

Graphes et concordanciers

Dans cette deuxième partie d'extraction on s'est concentré sur des motifs lexicaux précis pour en comprendre le contexte et leur signification à l'interieur du corpus. Des motifs qui dans un corpus couvrant toute une année peuvent nous montrer quels sujets concernent le présent et le futur du 2016 dans ces différents domaines. La recherche de ces motifs à travers le programme de graphe sur les patrons morphosyntaxiques extraits n'a pas apporté de résultats, ce qui peut être considéré un résultats en soi aussi, conséquemment on s'est concentré sur la recherche et l'affichage de ces motifs sur le total des rubriques, ce qui a cette fois apporté trop de résultats et difficilement analysables. Tout en restant un outils très intéressant, pour le but de notre extraction le programme de graphe a été mis d'à côté lui préferant une autre méthode. Une solution pour l'utiliser de façon pertinent aurait été peut-être celle de rechercher les motifs les plus fréquents à l'interieur de chaque patron et/ou de chaque rubrique pour s'en servir comme noyaux des graphes. Par contre de cette méthode se serait éloignée de notre but qui était d'avoir la vision du présent et du futur de chaque rubrique, étant donné que pour la rubrique Technologies parmi les motif les plus fréquents il y a achats, commerce, dollars, pour Sciences France, Paris, projet, personnes, pollution, pour Médias France, chaîne, groupe, journalistes, médias, grève et pour Culture Paris, matinale, choix, selection.
La méthode que l'on a préférée pour garder l'objectif de notre extraction est l'utilisation des feuilles de style XSLT, qui nous ont permis de construire des concordanciers et analyser d'une autre façon le contexte par rapport à la vision des graphes. Les concordanciers sont peut-être aussi puissants que les graphes, voire plus, mais ils apportent du bruit parfois, n'ayant pas la possibilité de rechercher un motif en inserant des barrières de mot (\b) cela nous a affiché par exemple confiné, définition, financement lorsqu'on avait comme motif fin. Ce bruit était présent uniquement dans ce motif et on a bien pris soin de le nettoyer. Les motifs recherchés comprennent :