Réalistion
du programme bash
Nous avons essayé
d'automatiser toutes les étapes
de sorte qu'il suffit d'avoir en entrée un dossier contenant
toutes les urls à traiter, triés dans
des fichiers en fonction de leur sens, pour réaliser d'un
coup, toutes les étapes et obtenir un projet
en
sortie contenant le tableau
de
présentation des résultats., un fichier
log
répertoriant les opérations
effectuées ainsi que les éventuelles erreurs lors
de
l'exécution du script et les dossiers comprenants les pages
aspirées et les textes
dumpés.
Les noms de
chaque fichier en entrée indique le sens du mot
barrage dans leurs urls.
Ces noms sont utilisés pour le titre de chaque tableau en
sortie.
Avant de programmer nous avons écrit l'algorithme au
format pdf.
Il est sous forme d'un diagramme de flot, ce qui permet d'avoir une vue
synthètique du programme.
Ensuite nous l'avons écrit en bash, après avoir lu le guide avancé sur le bash.
Les étapes importantes sont l'aspiration
des pages avec wget, le dumpage
avec lynx, la recherche
des lignes contenant une occurrence du mot barrage avec egrep
et la réalisation
du tableau en html.
Aspiration:
Avec wget, nous aspirons les pages une par une, et nous les renommons
pour être sûr de ne pas en avoir plusieurs du
même nom (problème rencontré lorsque
nous traitions toutes les urls d'un coup).
Après étude du manuel de wget, quelques options ont retenu notre attention.
- -E : force au format html
- -a : pour spécifier le fichier log (écrit à
la suite du fichier s'il existe déjà car on l'utilise dans une boucle. Pour
écraser le fichier ancien utiliser -o)
- -nv : no verbose, pour ne pas avoir d'information inutile dans le fichier log
Après l'aspirations, nous vérifions avec un test
que la page a bien été créé
et qu'elle n'est pas vide (Cela arrive parfois quand wget ne peut pas
aspirer) dans ce cas là, on va traiter le prochain url
et on incrémente de 1 une variable contenant le nombre
d'url
invalide.
Dumpage:
Avec lynx, on transforme les pages aspirées en texte.
Après étude du manuel de lynx, quelques options ont retenu notre attention.
- -dump : permet de dumper la page, c'est à dire de nettoyer les balises
- -nolist : pour que les références des liens dans la
page ne soit pas écrites à la fin. Sinon cela
génère du bruit par la suite.
Si on utilise pas -nolist, à l'intérieur du texte,il reste encore
des liens susceptibles de contenir une occurrence de barrage et donc de
générer du bruit par la suite. Ces liens se
trouvent en général à la fin du
fichier dans la partie
« référence ».
On pourrait donc tronquer le fichier et s'en débarasser.
Acquisition
des lignes contenant "barrage":
Avec egrep
: c'est un outil qui permet de sélectionner les lignes contenant
un motif sous forme d'expression régulière.
Après étude du manuel de egrep, quelques options ont retenu notre attention.
- -i : rend insensible à la casse
- -c : permet d'indiquer le nombre de lignes avant et après en même temps
- -o : toute la ligne doit correspondre au motif
L'option -o permettant de définir le motif de
toute la ligne, n'est pas compatible avec d'autres options comme -i
(pour lever la sensiblité à la casse) ou -c (pour
avoir les lignes du contexte). Ceci nous a posé
problème car il fallait choisir entre avoir du bruit ou de
ne pas avoir les occurence de barrage contenant des majuscules. Au
départ, barrage été contenu dans une
variable $mot mais pour régler ce problème nous
avons fait figurer directement barrage dans le motif sous la forme
[bB][aA][rR]....
Par chance, on a trouvé une option dans lynx qui réglait
le problème en amont, ce qui permettait d'avoir un
résultat satisfaisant avec une recherche simple.
Pour avoir de meilleurs résultats on aurait pu utiliser
d'autres programmes comme unitext qui permet de faire une recherche de
pattern avancé.
Production du
tableau:
En html, chaque ligne du tableau contient le nom de
l'url avec une
référence à la page
aspirée, un lien vers le texte dumpé, et toutes
les lignes respectant le motif recherché par egrep. Nous avons
décidé de faire figurer directement les lignes
egrepées dans le tableau car cela permet une vie d'ensemble plus
fonctionnelle. On s'aperçoit directement des urls qui posent
problèmes avec l'expression régulière utilisée dans
egrep ou des autres ennuis techniques. Les résultats pourrait
aussi être enregistrer dans des fichiers pour d'autres
traitements.
A la fin du document, on affiche le nombre d'url qui n'ont pas pu
être wgetté et traité.
Appréciation
du résultat:
L'avantage de ce type d'outils et de pouvoir rapidement
réaliser un programme dont le résultat peut
donner des pistes pour réaliser un travail de plus grande
ampleur.
Avec nos résultats, on peut déjà
observer les différentes constructions du mot barrage en
fonction de ses différents sens, et trouver des
requètes plus avancées pour produire un meilleur
résultat. Le but serait de déterminer
les contextes correspondant à un sens particulier. Pour
ceci, la recherche lexicométrique des mots les plus
fréquents dans les textes en fonction de leur usage avec des
logiciels tel que lexico3 peut également donner des
résulats interessants.