Evguénia Krougovaïa - Projet Plurital
Attention : Le travail a été effectué sous Mac. Ainsi, certains caractères s'affichent mal dans les fichiers de script Perl.
Boîte à outils 1 - Filtrage
- Ce script est basé sur le script fourni : parcours-arborescence-fichiers.pl
- Le nom : "Evguénia Krougovaïa" a été ajouté à la balise entre les balises <Nom>.
- L'expression régulière suivante a été ajoutée pour n'écrire dans le fichier de sortie que le nom de fichier du fil et non son arborescence complète : $filename=~s/.*\/(.*)$/$1/;
- L'expression régulière suivante a été ajoutée pour ne conserver que le contenu des balises <Description> : if ($ligne =~/<description>(.*)<\/description>/) {
- L'expression régulière suivante a été ajoutée pour ne conserver que les descriptions d'articles et pas celles des fichiers : $Descr = $1; if ($Descr !~/Toute l'actua.*au moment de la connexion/) {
- La variable $DUMPFULL1 est completée pour chaque nouvel article : $DUMPFULL1 = $DUMPFULL1 . "\n<FICHIER>\n<NOM>$filename</NOM>\n<CONTENU>\n" . $Descr . "</CONTENU>\n</FICHIER>";
Boîte à outils 2 - Etiquetage
Le script Perl de transformation TreeTagger - XML : treetagger3xml.pl
- Ce script est basé sur le script fourni : treetagger2xml.pl
- L'appel aux fonctions d'écriture d'entête et de fin a été supprimé car chaque fichier de sortie de ce script doit être inséré dans le fichier XML global (contenant tous les fils RSS) qui a sa propre structure.
- Ce script est basé sur le script fourni : parcours-arborescence-fichiers.pl et reprend tous les éléments du script créé pour le filtrage : scriptFiltrageRss.pl
- Pour chaque description d'article récupéré dans la variable $Descr, on remplace tous les espaces par des sauts de ligne pour le traitement avec TreeTagger : $Descr =~s/\s/\n/g;
- La variable $Descr est écrite dans un fichier pour être traitée par TreeTagger : open (FILETEMP, ">./Partie2/temp.txt"); print FILETEMP $Descr;
- On lance Treetagger depuis Perl avec la fonction "system" : system "./Outils/TreeTagger/bin/tree-tagger -token -lemma ./Outils/TreeTagger/lib/french.par ./Partie2/temp.txt ./Partie2/sortie.txt";
-
- Le fichier créé par Treetagger est transformé en XML : system "perl ./Partie2/treetagger3xml.pl ./Partie2/sortie.txt";
- Le fichier XML créé est stocké dans la variable $Descr qui vient d'être réinitialisée : open (FILEXML, "./Partie2/sortie.txt.xml"); while ($line = <FILEXML>) { $line=~s/<unknown>/unknown/g; $Descr = $Descr . "$line"; }. Cette ligne contient une expression régulière permettant de supprimer du fichier XML les balises simples "Unknown", ceci afin d'avoir à la fin du traitement un document XML bien formé et pouvant s'afficher par exemple sur le navigateur Firefox.
- La variable $DUMPFULL1 est completée pour chaque nouvel article : $DUMPFULL1 = $DUMPFULL1 . "\n<FICHIER>\n<NOM>$filename</NOM>\n<CONTENU>\n" . $Descr . "</CONTENU>\n</FICHIER>";
- Les fichiers temporaires créés sont effacés : system "rm ./Partie2/sortie.txt"; system "rm ./Partie2/temp.txt"; system "rm ./Partie2/sortie.txt.xml";
- Pour avoir moins d'éléments "Unknown", il aurait fallu supprimer les caractères de ponctuation (',' '.' ';' ...). Ce problème est réglé dans la 3ème partie (Extraction terminologique).
Le script Perl de transformation Cordial - XML : Cordial.pl
- L'expression régulière suivante permet de récupérer l'indice (le numéro), la chaîne de caractères, le lemme et la partie de discours (le "type"). Les différents éléments sont stockés dans les variables perl $1 à $4.
- Lorsque l'indice est égal à 1, et qu'il s'agit donc d'une nouvelle dépêche, on ferme l'élément précédent (</file>) et on ouvre le suivant (<file>).
Boîte à outils 3 - Extraction terminologique
Extraction Treetagger
- Exécution du script trouve_term.pl sur le fichier SORTIE-TREETAGGER.txt avec le fichier de patrons patron-1.txt. Résultat : TerminoTreeTagger1.txt.
- Exécution du script trouve_term.pl sur le fichier une-description-etiquetee-avec-treetagger.txt avec le fichier de patrons patron-2.txt. Résultat : TerminoTreeTagger2.txt.
- Exécution du script trouve_term.pl sur le fichier SORTIE-TREETAGGER.txt en créant le fichier de patrons patron-3.txt. Résultat : TerminoTreeTagger3.txt.
- Nous avons enfin ajouté quelques lignes au code perl du programme d'étiquetage (voir scriptEtiquetageRss-Extraction.pl). Tous les résultats partiels des traitements Treetagger sont stockés dans une variable. Le contenu de celle-ci est ensuite copié dans un fichier sur lequel on éxécute le script d'extraction terminologique : system "perl trouve_terme_treetagger.pl extracttermino.txt patron-1.txt";. Résultat : ExtractionTerminologiqueRSS.txt.
- Nous avons ici réglé le problème que nous avions rencontré dans la partie Etiquetage. En effet, le fait que nous ne séparions pas les signes de ponctuations des termes qui les précédaient, outre que cela conduisait treetagger à ne pas reconnaître un certains nombre de token ("unknow"), cela empêchait le programme trouve_term.pl de fonctionner. C'est pourquoi nous avons ajouté au script d'étiquetage la ligne suivante : $Descr =~s/[\.!?;,]/\n\./g; qui permet, lors de la création du fichier temporaire qui sera traité par Treetagger, de faire précéder les signes de ponctuation d'un saut de ligne.
Extraction Cordial
- Travaillant sous Mac, nous avons télecharger le package "dosunix" et éxécuté les commandes suivantes afin de modifier les fichiers d'entrétré et de patrons : "dosunix -U fichier_patrons_cordial fichier_patrons_cordial_unix", "dosunix etik.cnr etik_unix.cnr".
- Exécution du script trouve_terme_cordial.pl sur le fichier etik_unix.cnr avec le fichier de patrons fichier_patrons_cordial_unix. Résultat : Extraction-Cordial-Etik.txt
- Filtrage terminologique sur l'arborescence complète des fils RSS. Le fichier Cordial dont nous disposions était légérement différent du fichier etik.cnr fourni puisqu'il contenait des numéros au début de chaque ligne. Voir Sortie-Cordial_cnr_unix.txt. C'est pourquoi nous avons ajouté dans le script trouve_terme_cordial.pl la ligne suivante : push(@number, $liste[$i++]." ") qui précède le stockage des lemmes, tokens et patrons dans les tableaux. Résultat : Extraction-Cordial-RSS.txt
Boîte à outils 4 - Des textes aux graphes
Prise en main des outils
- Crétion du fichier Hawai.net - Cette partie ne posait aucune difficulté particulière. Nous avons téléchargé le processeur TestXSLT pour Mac et avons obtenu le fichier au format Pajek suivant : Hawai.net
Les patrons dans les fils
- On lance le script patron2graphml.pl sur le fichier de termes NomAdj.txt. On obtient le fichier suivant au format Graphml : patron-graphml.xml
- Ce fichier est ensuite transformé au format Pajek avec GraphML2Pajek.xsl sous TestXSLT. On obtient le fichier Pajek suivant : Fils.net
Les patrons dans les fils (suite)
- L'objectif est à pré de reproduire les mêmes opérations sur l'arborescence complè des fils RSS du quotiden le Monde.
- Pour cela, on exécute le script d'extraction terminologique (trouve_term.pl) sur le fichier TreeTagger le fichier SORTIE-treetagger-191105-260206.txt avec le fichier de patrons patron.txt qui ne contient que "Nom Adj". On obtient le fichier TermespourGraphe.txt
- On exécute le script patron2graphml.pl, sur le fichier nouvellement créé. On obtient le fichier suivant : graphmlRSS.xml
- On lance ensuite le processeur XSLT sur ce fichier. On obtient le fichier pajek suivant : PajekRSS.net