Journal



Méthodes
Utilisées pour le Mini-Projet :
1. Sélection manuelle des pages 
Nous avons commencé par faire une recherche du mot barrage sur le web, dans divers moteurs de recherche tels que : google, googleprint, citeseer, yahoo, etc...
Nous avons cherché par ailleurs à obtenir la plus large palette de sens possibles pour le mot 'barrage', utilisant pour cela une technique de plus en plus sélective avec google, afin d'écarter les pages contenant le mot 'barrage' dans certains contextes. Nous avons pour cela recherché le mot 'barrage' en écartant les co-occurrents les plus fréquents des contextes à écarter ('eau' pour barrage au sens d'ouvrage hydroéléctrique, etc.)
Exemple de recherche du mot "barrage" entrée dans google:
barrage -hydroélecrique -eau -match -"barrage de" -"trois gorges" -"barrage du" -"tir de barrage"

Cela nous permet de dégager cinq "sens" ou domaines différents pour le mot barrage :


- Ouvrage hydro-électrique

- Barrière physique

- Elément constitutif de certains instruments de musique (guitare en particulier)

- Expression 'tir de barrage' en sport

- Sens figuré du mot

Nous avons par ailleurs établit un groupe nommé 'inclassable' pour les occurrences de barrage plus difficiles à trier.

Cliquer ici pour voir l'arborescence utilisée

Les urls des pages contenant les occurrences sélectionnées sont ensuite regroupées par sens dans des fichiers au format texte.

Question technique : l'accès au corpus du Monde se fait par mot de passe, les liens vers les pages du Monde sont donc classés séparément, afin que l'on puisse les traiter plus facilement par la suite.

2. Téléchargement des pages en local

Les pages sélectionnées sont ensuite rapatriées au moyen de l'outil Wget

wget url_de_la_page

ou dans notre cas :

wget -i fichier_contenant_les_urls

On redirige les pages vers un dossier appelé Wget qui contient des sous-dossiers par sens barrierephysique/, guitare/ etc.

3. Création d'un tableau synthétique


Nous avons ensuite crée également un tableau synthétique, qui permet de lister les liens vers les pages sur internet, et les liens vers les pages correspondantes en local.

Ce fichier html contenant les adresses internet des pages récupérées et leurs correspondants sur l'ordinateur, nous permet de tester le bon fonctionnement de chacune d'entre elle, et de repérer rapidement quelques erreurs.

La table des correspondances permet une correction très rapide de ces erreurs, et une mise à jour des fichiers de liens et des répertoires de pages téléchargées.

Bien que cette opération n'ait pas nécessité beaucoup de temps. Il va sans dire, cependant, que cette solution n'est valable que pour un nombre restreint de pages. Il y a par ailleurs forcément un moyen de résoudre ce problème, mais le travail n'en reste pas moins en grande partie manuel, et une autre solution est donc adoptée : écrire un script qui prendrait en charge la création du tableau avec les liens hypertextes.

4. Automatisation des tâches au moyen d'un script

Le script doit permettre d'automatiser certaines tâches. Il est du type de celui qui nous a été donné en cours.


Avec ce script pour base, deux scripts séparés ont été crées, l'un permettant de rassembler les fichiers listant les urls en un seul fichier, et l'autre créant une page html, avec un tableau contenant les urls et leur lien hypertexte vers internet.

L'utilisation du script pour créer le tableau de liens nécessite l'organisation d'une arborescence très structurée. Donc nous avons choisi l'arborescence suivante.

En étudiant ensuite le code source d'une page similaire à celle qu'on voulait obtenir et la documentation sur le bash disponible sur internet, on a modifié le programme de base pour lui faire écrire un tableau plus complet, contenant également les liens relatifs vers les pages téléchargées.


  Le script utilisé est le suivant : lien vers le script

Notes concernant le script :

Section du script faisant appel à Wget : on s'est servi d'une option de wget qui permet de désigner un emplacement pour le fichier .log, et on rassemble ainsi les fichiers .log de chaque téléchargement dans un répertoire 'logfiles'. Cela permet par exemple de savoir facilement si le code d'accès au corpus du Monde a bien fonctionné, quelles pages n'ont pas été téléchargées, etc.
Pour éviter une exécution trop lente du script, nous avons utilisé l'option -t, qui limite le nombre de tentatives de connexion à un site (limité à cinq fois).

Section faisant appel à Lynx : La commande Lynx est lancée sur les fichiers téléchargées par Wget et pas directement sur les pages internet pour simplifier l'écriture du script (homogénéité des noms de fichiers, accès au Monde...). 

- Nous avons par ailleurs utilisé l'option -force html pour contourner la particularité des pages dont l'url se termine par .php ou .asp, et qui posaient parfois problème. Les pages de ce type sont donc bien rapatriées et traitées par lynx et egrep, cependant le nom de ces pages pose toujours problème car il a la particularité de rendre les liens relatifs du tableau inopérants (présence de '%' et autres signes dans le lien réel). Nous n'avons pas eu le temps de traiter ce problème précis. 


- Une redirection vers la commande sed  permet de supprimer les liens hypertextes des fichiers obtenus.

Section utilisant la commande egrep : on a progressivement affiné la commande afin d'obtenir le meilleur résultat possible (utilisation de l'option -i pour ignorer la casse).

Nous avons observé que le traitement des caractères diacritiques posait problème. Après des recherches, il apparaît que Lynx crée des fichiers encodés en Iso-latin15, (bien que la variable locale de l'ordinateur utilisé soit UTF-8). Aucune option de lynx ne semble permettre de contrôler ce comportement. Pour plus d'homogénéité, nous ajoutons donc une redirection du résultat de la commande lynx vers la commande recode, pour recoder les fichiers 'dumpés' en utf8.

Ce script prend également en charge la création d'un tableau listant les liens vers chaque fichier (page sur internet, page rapatriée en html, fichier au format .txt de la page et fichier contenant seulement les occurrences), triés par sens du mot (selon les noms des répertoires dans lesquels on avait classé les urls au départ.)