Démarche de travail

Le résumé de trois mois de travail... acharné !

Étapes initiales

À la recherche DU mot…

Nous avons d'abord dû trouver un sujet de recherche pour lequel la mise en oeuvre d'une chaîne de traitement textuel semi-automatique sur des corpus multilingues pouvait représenter un outil d'analyse intéressant.

Après quelques temps de réflexion et d'indécision, nous sommes finalement parvenus à un accord sur le thème de la mort de Mouammar Kadhafi.

Nous pensions qu'il pouvait être intéressant de comparer les différents points de vue sur la mort de Kadhafi en fonction des médias français, anglais et arabophones. Notre hypothèse était qu'en se basant, pour chacun de ces pays, sur un corpus de presse assez large, il serait possible, en analysant le champ lexical des contextes dans lequel le nom de Kadhafi apparaîssait de mettre en évidence certaines tendances propres à chaque pays quant à la perception de cet évènement médiatique.

La récolte des URLs

Pour ce projet, nous avons donc commencé par constituer notre corpus en relevant sur internet pour chaque pays une cinquante d'articles de presse en rapport avec le thème choisi. Pour cela, chacun d'entre nous a cherché les URLs suivant une langue. La récolte des URLS s'est bien passée pour les médias francophones et anglophones (bien que le nom Kadhafi s'ecrit de trois manières differentes en anglais : Kadhafi, Gaddafi, Gadhafi). Pour les médias arabophones, nous nous sommes trouvés face à un problème : peu d'url sont dans un format exploitable par notre chaîne de traitement (html).

Création de l'environnement de travail

Pour ce travail de groupe, nous avons mis au point un environnement de travail commun afin de faciliter nos échanges. Il était en effet plus facile de vérifier ou de reprendre le fonctionnement d'un script si nous nous basions tous sur les mêmes noms de fichiers et de dossiers ainsi que sur la même arborescence pour que les chemins relatifs restent valables d'un ordinateur à l'autre.

La création automatique de cet environnement de travail a d'ailleurs été l'occasion pour nous de mettre au point notre premier script bash :

environnement.sh---------------------- #!/bin/bash
#ce script doit se trouver dans le répertoire utilisateur
#dans le terminal, on doit se placer dans le dossier "Desktop" du dossier utilisateur avant la création de l'espace de travail
cd Desktop;
#on crée ensuite un nouveau dossier pour le projet puis on se place dans ce nouveau dossier où on crée les sous-dossiers dont on aura besoin
mkdir PROJET-MOT-SUR-LE-WEB;
cd PROJET-MOT-SUR-LE-WEB;
mkdir CONTEXTES DUMP-TEXT IMAGES minigrepmultilingue-html PAGES-ASPIREES PROGRAMMES TABLEAUX URLS;

Création du blog de travail

Afin de partager entre nous, mais aussi avec nos enseignants et les autres étudiants de notre promotion l'avancé de notre travail, nous avons créé un blog qui décline pas à pas le développement de notre projet. On y retrouve entre autres les principales difficultés que nous avons rencontrées ainsi que les solutions que nous avons pu mettre en oeuvre pour résoudre ces problèmes.

Vous pouvez visiter ce blog à l'adresse suivante : http://les-manchots3.blogspot.fr


Phase 1/ Automatisation des tâches

La première phase de notre projet consistait donc, à partir de la liste des URLs relevées sur le web, de créer une chaîne de traitement automatique afin d'extraire de ces articles de presse les contextes autours d'un même mot clefs : "Kadhafi".

Pour mettre en oeuvre cette chaîne de traitement, nous avons repris le schéma de l'algorithme proposé en cours : algorithme projet mots sur le web

Cet algorithme consiste à aspirer les pages web à partir de la liste des URLs relevées sur internet pour pouvoir ensuite travailler dessus localement. Après avoir régler les éventuels problèmes d'encodage, il s'agit ensuite d'en extraire le contenu textuel puis les contextes autour des mots choisis. Chaque URL ainsi que les fichiers produits au cours de cette chaîne de traitement sont classés dans des tableaux au format HMTL (un tableau par langue).

Voici quelques précisions concernant chacun de ces points.

Création d’un tableau en HTML

Les tableaux produits par notre script bash sont composés des huits colonnes suivantes :

  • Le numéro des URLs traitées
  • Les liens vers ces URLs
  • Les liens vers les pages aspirées
  • Les éventuelles messages d'erreur en rapport avec l'aspiration de ces pages web
  • Le contenu textuel brut de chaque page aspirée (au format UTF-8)
  • Les contextes autour du mot clefs choisi au format texte
  • Les contextes présentés au format HTML (plus lisibles grâce à la mise en forme)
  • Le nombre d'occurences du mot clef choisi pour chaque URL

  • Nous avons prévu de cette manière un tableau par langue et la dernière ligne de chacun de ces tableaux fournit un lien vers un fichier texte contenant l'ensemble des contextes receuillis autour du mot clef choisi pour toutes les URLs du tableau.

    Cette présentation sous forme de tableaux permet d'avoir un accès rapide aux données, mais également une vue d'ensemble sur les éventuelles erreurs qui ont pu se produire au cours de la chaîne de traitement.

    Aspiration locale des pages : CURL

    Après avoir récupéré au moyen d'une boucle le lien de chaque URL ligne par ligne, la commande CURL de bash nous a permis d’automatiser l’aspiration des pages web que nous avions sélectionnées. Dans le cas où l'aspiration n'a pas été possible (problème avec CURL, page inexistante, format incompatible), nous avons prévu un moyen de l'indiquer dans une des colonnes de nos tableaux. Pour cela, nous nous sommes basé sur le message d'erreur que renvoie CURL ou encore sur le contenu des différents messages d'erreur affichés par le navigateur lorsqu'une page web n'est pas accessible. Cela a malheureusemenet été le cas pour la plupart des URLs relevées en arabe.

    Récupération du texte brut des pages web et problèmes d'encodage

    La commande lynx permet de récupérer le contenu textuel de la page aspirée et une redirection vers un fichier texte sauvegarde ces données dans le répertoire DUMP.

    Nous souhaitions à l'issue de cette étape ne plus travailler que sur du texte encodé en UTF-8 qui constitue de nos jours le format d'encodage le mieux adapté au web multilingue.

    Comme les URLs que nous avions sélectionnées n'étaient pas toutes encodées dans ce format, nous avons eu de nombreux problèmes de conversion, y compris en suivant l'algorithme proposé plus haut.

    Nous avions d'abord prévu, une fois extrait le contenu textuel de la page web, de détecter l'encodage du fichier DUMP grâce à la commande file de bash. Une fois l'encodage reconnu, il était alors possible grâce à la commande iconv de convertir ce fichier dans l'encodage voulu (UTF-8). Pour cela il fallait vérifier que l'encodage détecté par la commande file faisait bien partie de la bibliothèque de la commande iconv (iconv -l). Nous avions également prévu dans le cas où la commande file ne détectait aucun encodage de récupérer dans la balise meta charset du code html de la page web le bon encodage.

    Nous avions donc mis au point un script assez développé pour prendre en compte toutes ces conditions. Si tout semblait bien se passer au moment de l'execution du script, quelques problèmes persistaient lorsqu'on observait les résultats produits.

    C'est finalement en cherchant à résoudre un des ces problèmes que nous nous sommes aperçu qu'il était en fait possible d'ajouter une option à la commande lynx afin d'obtenir un fichier dump directement encodé en UTF-8 ! Vous trouverez plus d'informations concernant cette solution sur notre blog. D'après notre expérience sur l'encodage des caractères français et arabes, on peut dire que cela marche parfaitement sous UNIX et que cette option nous a permis de grandement simplifier notre script.

    Choix du mot clef

    Afin de mettre en évidence la manière dont la mort de Kadhafi était perçue en fonction des médias, nous pensions d'abord relever les contextes autour du mot "mort" et notamment afin de voir comment elle était qualifiée selon les pays.

    Mais finalement, nous avons trouvé plus judicieux de récupérer seulement les contextes autour du nom de Kadhafi et de voir quels étaits les mots qui apparaissaient le plus fréquemment dans ces contextes. Dans les médias français par exemple, parle-t'on majoritairement de "mort", de "décès", d'"assassinat", de "délivrance", de "complot", de "meurte", d'"execution" ? Est-ce que ce sont des termes équivalents qu'on retrouve dans la presse anglaise et arabophone ?

    Un autre avantage au choix de ce mot clef est qu'il est relativement facile de trouver une seule expression régulière permettant de faire une recherche sur l'ensemble de notre corpus. Voici les contraintes orthographiques de Kadhafi pour chacune des langues :




    Nous avons donc pu travailler avec l'expression régulière suivante : \Kadhafi|Kaddafi|Gadhafi|Gaddafi|القذافي\b

    Récupération des contextes dans le texte brut

    A partir de cette expression régulière nous avons ensuite, créé deux types de fichiers de résultats : l’un en texte brut, qui nous servira pour les nuages de mots, et l’autre en HTML, pour présenter de manière plus lisible les contextes des mots recherchés.

    Le fichier en texte brut a été obtenu à l'aide de la commande egrep de bash alors que pour la création des fichiers au format HTML nous avons utilisé le miniegrepmutlilingue disponible à l'adresse suivante :
    http://www.tal.univ-paris3.fr/cours/minigrepmultilingue.htm


    Phase 2/ Création des nuages de mots

    Étape préparatoire

    Avant tout chose, il nous fallait concaténer les fichiers DUMP (contenu textuel entier des pages aspirées) et les fichiers textes des contextes où apparaît le mot "Kadhafi".

    Les nuages

    Sous Wordle :
    http://www.wordle.net/
    C’est une application accessible via Internet qui permet de générer des nuages de tags (mots-clés) non-dynamiques en fonction du contenu textuel ou d’une adresse de page Web qu’on lui donne.
    Plus la fréquence d’un mot-clé est importante dans le texte, plus il apparaîtra en gros caractères. Quelques options permettent d’améliorer le rendu visuel du nuage selon nos envies (couleurs, polices, etc.). Mais cette application ne reconnaît pas l'arabe. Nous n'avons donc pas pu faire le nuage pour nos contextes en arabe sur ce site. Nous nous sommes permis d'enlever des nuages les mots "Kadhafi" et "Muammar" et certains mots outils qui avaient été mal filtrés.

    Sous TreeCloud : http://www.lirmm.fr/~gambette/ProgTreeCloud.php
    Cette application permet de construire des nuages arborés, pour, entre autre, visualiser le contenu global d'un texte (selon la fréquence des mots).
    Nous l’avons utilisée pour créer les nuages à partir des fichiers concaténant les différents contextes par langue. Au fil des branches, on voit ainsi se détacher différents regroupements de mots pour chaque sens.


    Phase 3/ Analyse des résultats

    Lorsqu'on compare les nuages de mots produits pour chacune des langues sur les contextes autour du nom "Kadhafi", on s'aperçoit que les champs lexicaux mis en évidence en français et en anglais sont relativement proches. "Mort" et "Death" sont les mots les plus fréquents dans ces deux langues, ainsi que "tué" et "killed". En revanche, pour l'arabe, les termes les plus fréquents sont relatifs aux villes de Lybie ainsi qu'au titre de noblesse de Kadhafi. Il semble qu'on pourrait en conclure que les journaux arabophones mentionnent à peine la mort ou le meurtre de Kadhafi. Mais à cause de notre problème d'URLs arabes (non html), nous avons un corpus beaucoup plus restreint pour cette presse que pour les deux autres. Il est donc difficile d'en tirer une conclusion objective.