Notre travail est basé sur quelques scripts, mais certains n'étaient utiles que pendant le travail.
Les scripts marchent à partir de quelques données en entrée et sont dépendants de la configuration de fichiers et données.
Voici l'arborescence obligatoire pour le script :
Le chemin absolu des fichiers du script se trouve dans le fichier rm_don.txt, qui est lui même répertorié dans le dossier PROGRAMMES, tous les scripts prennent la variable dossier dans ce fichier.
****************************************************************************
le nettoyeur | le script principal | le script général | le script pour concaténer | mode d'emploi
****************************************************************************
Il a pour tâche d'aspirer les pages web sur le disque local, d'en extraire le texte et de montrer le contexte du mot choisi.
En entrée, il a besoin de savoir où travailler, (il le prend du fichier avec les données, explication en point 2.3), de la liste des URLS (variables fic, fic1, fic2 pour les 3 langues étudiées), du nom du fichier html avec des tableaux à créer (variable tablo) et de la liste des sens puisque qu'on a travaillé sur un mot français possédant des variantes sémantiques et lexicales en anglais et polonais (variable sens)
--------------------------------------------------------
#!/bin/bash | |
#!/bin/bash | |
read chemin; | |
read fic; | # fichier contenant les liens français : "; |
read fic1; | # fichier contenant les liens anglais: "; |
read fic2; | # fichier contenant les liens polonais : "; |
read tablo; | # fichier html ou stocker les liens : "; |
read sens; |
--------------------------------------------------------
#création des dossiers selon les sens répertoriés:
--------------------------------------------------------
mkdir $chemin/PAGES-ASPIREES/FR/$sens/;
mkdir $chemin/DUMP-TEXT/FR/$sens/;
mkdir $chemin/CONTEXTES/FR/$sens/;
mkdir $chemin/PAGES-ASPIREES/EN/$sens/;
mkdir $chemin/DUMP-TEXT/EN/$sens/;
mkdir $chemin/CONTEXTES/EN/$sens/;
mkdir $chemin/PAGES-ASPIREES/PL/$sens/;
mkdir $chemin/DUMP-TEXT/PL/$sens/;
mkdir $chemin/CONTEXTES/PL/$sens/;
--------------------------------------------------------
#on crée le site web qui contiendra les tableaux. On va écrire progressivement les lignes dans le fichier html (variable tablo)
--------------------------------------------------------
<.table><.tr><.td><.p>echo "<.html><.head><.meta http-equiv=\"Content-Type\" content=\"text/.html; charset=ISO 8859-2\"/><.title>tableau sens<./.title><./.head><.body>" > $tablo;<./.td><.td><./.td><./.tr><./.table>
--------------------------------------------------------
# création de la première partie du tableau, pour le français:
1. on écrit les lignes permettant de créer le tableau, avec tous les paramètres de largeur, couleur etc.
--------------------------------------------------------
echo "<.table border=\"4\" align=\"center\" table width=90%><.tr><.td colspan = 4 align=center><.h2> FRANCAIS <./.h2><./.td><./.tr>" >> $tablo;
--------------------------------------------------------
2. on initialise notre compteur et on crée une boucle : pour chaque ligne dans le fichier contenant des URLS (et donc pour chaque adresse web d'une langue donnée) on fait un certain nombre d'opérations :
--------------------------------------------------------
i=1
for nom in `cat $fic`;
{
--------------------------------------------------------
wget: on aspire les pages web et on les stocke dans les PAGES-ASPIREES. Option -O pour stocker le site dans un fichier.
lynx: regarde le site aspiré et en extrait le texte seul en l'écrivant dans un fichier texte. Option -dump pour stocker dans un fichier; -nolist pour ne pas écrire les liens contenus dans le site.
--------------------------------------------------------
wget -O $chemin/PAGES-ASPIREES/FR/$sens/$i.html $nom
lynx -dump -nolist $nom > $chemin/DUMP-TEXT/FR/$sens/$i.txt
--------------------------------------------------------
lire le motif (il dépend du sens, le script va chercher le motif en boucle: si la boucle tourne pour la 4ème fois, il cherchera le sens 4 dans un fichier.
egrep: extraire les lignes contenant le motif et les stocker dans un fichier texte. Option -i pour ne pas tenir compte de la casse dans le motif
--------------------------------------------------------
read motif < $chemin/PROGRAMMES/MOTIF/fr$sens.txt;
egrep -i "\b$motif\b" $chemin/DUMP-TEXT/FR/$sens/$i.txt > $chemin/CONTEXTES/FR/$sens/$i.txt
--------------------------------------------------------
à la fin de la boucle, on remplit une ligne du tableau, en mettant les liens vers les fichiers créés et on augmente le compteur.
--------------------------------------------------------
echo "<.tr><.td><.a href = \"$nom\">url $i<./.a><./.td><.td><.a href=\"../PAGES-ASPIREES/FR/$sens/$i.html\">page aspirée $i<./.a><./.td><.td> let "i+=1" ;
}
--------------------------------------------------------
la boucle est finie
la deuxième boucle fait exactement la même chose mais pour les URLS des sites en anglais
-------------------------------------------------------- echo "<.tr><.td colspan=\"4\" align=center><.h2> ANGLAIS <./.h2><./.td><./.tr>" >> $tablo;
a=1
for nom in `cat $fic1`
{
read motif < $chemin/PROGRAMMES/MOTIF/en$sens.txt;
wget -O $chemin/PAGES-ASPIREES/EN/$sens/$a.html $nom
lynx -dump -nolist $nom > $chemin/DUMP-TEXT/EN/$sens/$a.txt
egrep -i "\b$motif\b" $chemin/DUMP-TEXT/EN/$sens/$a.txt > $chemin/CONTEXTES/EN/$sens/$a.txt
echo "<.tr><.td><.a href = \"$nom\">url $a<./.a><./.td><.td><.a href=\"../PAGES-ASPIREES/EN/$sens/$a.html\">page aspirée $a<./.a><./.td><.td> let "a+=1" ;
}
--------------------------------------------------------
la 3eme boucle est un peu différente compte tenu de l'encodage du polonais qui pose des problèmes. Jusqu'au commentaire suivant tout se passe de la même manière
-------------------------------------------------------- echo "<.tr><.td colspan=\"4\" align=center><.h2> POLONAIS <./.h2><./.td><./.tr>" >> $tablo;
b=1
for nom in `cat $fic2`;
{
read motif < $chemin/PROGRAMMES/MOTIF/pl$sens.txt;
wget -O $chemin/PAGES-ASPIREES/PL/$sens/$b.html $nom;
--------------------------------------------------------
Lynx prend par défaut l'encodage du système, il faut le forcer à encoder les fichiers en sortie en UTF-8, d'où l'option -display_charset=UTF-8
-------------------------------------------------------- lynx -dump -nolist -display_charset=UTF-8 $nom > $chemin/DUMP-TEXT/PL/$sens/$b.txt;
--------------------------------------------------------
Pour obtenir les motifs en UTF-8 et pour avoir un rendu correct du site en sortie, on utilise le script écrit en perl par Pierre Marshal et M. Fleury. On a fait quelques modifications sur ce script, pour les voir, rendez vous sur le blog ).
Les commentaires sur le fonctionnement de ce script et le script sont visibles ici: site plurital.
Pour installer le minigrep --> page de Pierre
-------------------------------------------------------- perl $chemin/minigrep/minigrepmultilingue2.pl "UTF-8" $chemin/DUMP-TEXT/PL/$sens/$b.txt $chemin/PROGRAMMES/MOTIF/pl$sens.txt $chemin/CONTEXTES/PL/$sens/$b.html;
--------------------------------------------------------
la sortie de perl étant en .html et non en .txt, c'est le seul changement.
-------------------------------------------------------- echo "<.tr><.td> let "b+=1";
}
echo "<./.table><.br>" >> $tablo;
#fin du tableau
--------------------------------------------------------
et on finit la page html.
-------------------------------------------------------- echo "<./.body><./.html>" >> $tablo;