Projet encadré
                    plurital


Recherche et programmation sur le mot "barrage"

  Aurélia Trinquier

  Claire Bonasso






I RECHERCHE D'INFORMATIONS SUR LE MOT "BARRAGE"
II AUTOMATISATION DES TACHES
III PROBLEMES RENCONTRES



I RECHERCHE D'INFORMATIONS SUR LE MOT "BARRAGE"

Premièrement, nous cherchons les différents sens du mot barrage à l'aide de moteur de recherche sur Internet. Nous tapons seulement le mot barrage.

Nous découvrons plusieurs sens, et nous créons cinq groupes: hydroélectrique, sport, obstacle, expression, et titre.
En effet, on peut avoir un barrage hydroélectrique, mais le terme "barrage" est souvent utilisé au football, il sert aussi d'expression "faire barrage à tel homme politique",  il peut aussi désigner un obstacle, un barrage pour empêcher les enfants de descendre un escalier par exemple, et enfin ce mot peut aussi être le nom de restaurants ou de livres.

On constate déjà certains problèmes: quelques sites ne contiennent que des photos et pas de texte, pour affiner la recherche on cherche des pages qui ne contiennent pas les mots "construction", "hydroélectrique, "football", "tir", "rupture". A la suite de ces nouvelles recherches on trouve des pages qui contiennent une très faible occurence du mot "barrage" (en général une seulement). Par conséquent pour faciliter la recherche on peut regarder en mode "cache".

Enfin, on choisit cinquante URL (Uniform Ressource Locator) pertinentes qui contiennent différents sens du mot "barrage" pour constituer notre corpus et on les met toutes dans cinq fichiers "URL" différents: fichier hydroélectrique, sport, expression, titre, obstacle.
Le programme ci-dessous permet de générer un tableau de ces URLs dans une pages html :


#!/bin/bash
echo "donne nom de fichier contenant les liens http"; #c'est la liste des pages wgettées
read fic; #le programme connait le fichier de liens sous le nom $fic
echo "donne nom de fichier html où stocker ces liens"; #c'est le tableau de liens à créer
read tablo; #enregistre nom donné par utilisateur dans la variable $tablo
echo "<html><head><title>tableau de liens</title></head><body bgcolor="#CCFFFF"><table border=1>" > $tablo; #code de début de tableau
for nom in `cat $fic` #$nom est la variable dans laquelle sera stocké chaque lien
do
 echo "<tr><td><a href="$nom">$nom</a></td></tr>" >> $tablo; #création d'un tableau à une colonne et autant de lignes qu'il y a d'URL

done
echo "</table></body></html>" >> $tablo; #code de fin de tableau
#le fichier dont le nom correspond à la variable tablo est maintenant créé, ouvrez-le

En appliquant ce programme on donne les cinq fichiers d'URLs en argument et on obtient ce tableau.


II AUTOMATISATION DES TACHES


    On doit à présent écrire des programmes pour automatiser des tâches sur notre corpus.


    1) Aspirer les URL avec la commande wget et l'option -i et les mettre dans un tableau


Wget est une commande qui permet, à partir de l'URL d'un site, d'enregistrer la page html, on parle de "pages aspirées".

On utilise plusieurs options:

            -i spécifie que toutes les URL à aspirer se trouvent dans un fichier
            -o -nv nom_du_fichier_de_sortie pour enregistrer les messages de réponse
            -P adresse_du_dossier_de_sortie  pour enregistrer les pages dans le dossier voulu
            -E  pour enregistrer au format html

Dans la fenêtre de commande cygwin (interface Unix) on saisit cette commande sous la forme :

wget -i c:/Projet/expression.txt -o c:/Projet/exp.txt -nv -E -P c:/Projet/Expression

Ce qui donne en sortie un repertoire ( ici il se nomme "Expression" ) contenant les pages html dont l'URL était contenue dans le fichier appelé (ici expression.txt).


 2)  Transformation des fichiers html en fichier texte avec la commande lynx -dump
        le résultat se trouve dans un deuxième tableau

Lynx est une commande qui permet de transformer un fichier html ou htm en un format texte, nous l'appliquons ici pour avoir ensuite la possibilité d'utiliser une autre commande (egrep) qui permettra d'extraire les occurrences du mot barrage.


#!/bin/bash
echo "donner le chemin du repertoire contenant les pages html";
read rep;
cd $rep;
ls $rep > ls.txt;
echo "nom du fichier dans lequel créer le tableau";
read tab;

echo "<html><head><title>tableau de liens dump</title></head><body bgcolor="#CCFFFF"><table border=1>" >> $tab;

for nom in `cat ls.txt` #$nom est la variable dans laquelle sera stocké chaque lien
do
if [ $nom != "ls.txt" ]
then
lynx -dump $nom > $nom.txt;
echo "<tr><td><a href="$nom">$nom</a></td><td><a href="$nom.txt">$nom.txt</a></td></tr>" >> $tab;
fi
done
echo "</table></body></html>" >> $tab;


On fait agir ce programme sur les cinq dossiers et on obtient :
- Hydroelectrique
- Expression
- Obstacle
- Sport
- Titre


    3) Extraire des fichier textes obtenus précédemment, les phrases contenant le mot "barrage",
     grâce à la commande egrep.

            Ici encore nous allons utiliser plusieurs options, -i, -A 2 et -B 2 afin d'avoir en plus de la phrase contenant le mot barrage, les deux phrases la précédant et les deux phrases suivantes . Ainsi nous pouvons étudier le contexte.


#!/bin/bash
echo "donner le chemin du repertoire contenant les pages html";
read rep;
cd $rep;
ls $rep > ls.txt;
echo "nom du fichier dans lequel créer le tableau";
read tab;

echo "<html><head><title>tableau de liens dump</title></head><body bgcolor="#CCFFFF"><table border=1>" >> $tab;

for nom in `cat ls.txt` #$nom est la variable dans laquelle sera stocké chaque lien
do
if [ $nom != "ls.txt" ]
then
lynx -dump $nom > $nom.txt;
egrep -A 2 -B 2 -i 'barrage' $nom.txt > egrep$nom.txt

echo "<tr><td><a href="$nom">$nom</a></td><td><a href="$nom.txt">$nom.txt</a></td><td><a href="egrep$nom.txt">egrep$nom.txt</td></tr>" >> $tab;
fi
done
echo "</table></body></html>" >> $tab;

On fait agir ce programme sur les dossiers ne contenant que les pages html et les étapes deux et trois (lynx et egrep) sont faites en une seule fois.
On obtient :
- Hydroelectrique
- Expression
- Obstacle
- Sport
- Titre



III PROBLEMES RENCONTRES

    L'utilisation de ces commandes (wget, lynx et egrep) peut causer quelques difficultés. Par exemple pour ce qui est de wget certaines pages sont refusées, mais cette même commande lancée sur les même URLs mais d'un autre ordinateur peut fonctionner. Il se pose également un problème avec les pages contenant des images, wget ne les prend pas en compte et les pages aspirées s'en trouve atteintes (il existe cependant une commande permettant de les enregistrer, mais cela génére un nombre très important de fichiers supplémentaires non indispensables à une analyse linguistique).

    Le principal problème est de créer un tableau de liens entre les URLs et les pages aspirées par wget. l'ordre des fichiers dans le dossier créé ne correspond pas à celui de la liste d'URLs dans le fichier de départ. On peut toujours établir ce tableau manuellement mais cela ne pourrait pas être appliqué à un corpus de plus grande envergure.


Conclusion