Le projet commence par la récolte des URLs des pages contenant un mot, polysémique de préférence, dans différentes langues. Les URLs de chaque sens dans chaque langue sont ensuite regroupés dans un fichier texte brut spécifique. Par exemple : anglais sens1, anglais sens 2, français sens 1, etc.


Quand les URLs sont prêts, on entre dans l'écriture d'un script bash qui sera exécuté sous cygwin.

D'abord, à l'aide d'un script, une arborescence est créée qui contient des répertoires PAGES-ASPIREE, DUMP-TEXT, CONTEXTES, etc. Ensuite, on demande à l'utilisateur de choisir le répertoire des fichiers d'URLs à utiliser (par ex., URLS/anglais) et de donner le nom et le chemin du fichier qui stockera le résultat (par ex., TABLEAUX/anglais.html). On demande aussi à l'utilisateur la langue à traiter afin de créer des répertoires correspondants.


Par la suite, on crée un fichier html avec quelques lignes de commande simples echo "..." > nomfichier.


Pour compter le nombre des sens pour chaque langue, on introduit un compteur i et le met dans une boucle for qui s'applique à tous les fichiers txt d'URLs dans le répertoire choisi.


On crée FICHIERSGLOBAUX au même endroit que PAGES-ASPIREES, etc. Puis on prépare un répertoire pour chaque langue sous FICHIERSGLOBAUX, PAGES-ASPIREES, CONTEXTES, DUMP-TEXT (par ex., DUMP-TEXT/anglais) et, sous le répertoire pour chaque langue sous DUMP-TEXT, un répertoire pour UTF-8.

Maintenant on entre dans la première boucle.


La création de répertoires continue ... Sous ceux créés pour chaque langue, des nouveaux pour chaque sens (par ex., DUMP-TEXT/anglais/sens_1), de même sous DUMP-TEXT/anglais/UTF-8 qui donne DUMP-TEXT/anglais/UTF_8/sens_1, etc.


Comme on a besoin de compter les URLs pour chaque sens, un deuxième compteur j est introduit, et un troisième pour compter les dumps convertis avec succès en UTF-8.


Ici on est prêt à entrer dans une autre boucle, imbriquée dans la première, qui s'applique au contenu de chaque fichier txt d'URLs, plus précisément chaque ligne de ces fichiers.

On commence par aspirer localement les pages Web à travers les URLs par wget. Si wget ne travaille pas bien, on fait appel à curl (curl ne marche pas avec les URLs comportant des lettres accentuées, et donc je la prends comme une alternative).


Si wget ou curl fait bien son boulot, je m'attaque à la détection d'encodage des pages aspirées premièrement à l'aide de la commande file -i, qui me dira si la page aspirée est en UTF-8 ou non (elle a du mal à distinguer plus loin les autres encodages).


Si la réponse est "oui", tout est bien et j'utilise la commande lynx -dump -nolist pour n'enregistrer que le contenu textuel de chaque page, avec l'encodage initial de la page, sous, par exemple, DUMP-TEXT/anglais/sens_1/ et aussi DUMP-TEXT/anglais/UTF_8/sens_1/ (copie conforme !).


Si la réponse est "non", je vérifie d'abord que l'indication d'encodage est présente dans le code source de la page aspirée. Puis j'utilise la commande egrep pour extraire cet encodage. Je vérifie ensuite que cet encodage peut être traiter par la commande iconv (important). Si c'est le cas, j'enregistre le contenu textuel en codage initial de la page sous, par exemple, DUMP-TEXT/anglais/sens_1 (mais pas DUMP-TEXT/anglais/UTF_8/sens_1/ !)


Voilà à quoi sert-t-il d'appliquer iconv : convertir l'encodage initial de la page en UTF-8. Si l'encodage initial n'est pas connu par iconv, la conversion n'aura pas lieu.


S'il n'y a pas d'indication d'encodage dans le code source de la page, on n'enregistre aucun dump.<:p>

Plus haut, si wget et curl refusent de travailler toutes les deux, on arrête cette boucle-ci et procède à celle-là du prochain URL.

A l'origine, on doit récupérer le contexte par la commande egrep à partir du dump en format texte brut. Cela implique l'introduction du motif dans le script, puisque la saisie à la console en caractères non-ASCII ne fonctionne pas. Mais là, on rencontre une grande difficulté ! Pour écrire les motifs tels quels dedans, j'étais obligée de converti mon script en UTF-8. Pourtant les liens comportant des caractères non-ASCII n'étaient plus accessible depuis. La raison est que les fichiers txt d'URLs ont été enregistrés en ANSI et la conversion en UTF-8 de ces fichiers donne des résultats monstrueux.


Toutefois, on peut contourner ce problème, en extrayant les contextes à l'aide de l'outil minigrep qui enregistre le résultat d'extraction en UTF-8 dans un fichier HTML, et puis faisant un dump de ce dernier sous, par exemple, CONTEXTES/anglais/sens_1/. (la plus part du temps minigrep fonctionne bien, sauf quand il y a des caractères latins et non-latins dans la même page - alors minigrep ne traite que les premiers).


Une petite note sur minigrep : un fichier txt contenant le motif sous forme de MOTIF=xxx est nécessaire, qui doit être créé préalablement.


Une fois que le fichier html de contexte sera prêt, on pourra utiliser lynx pour obtenir un fichier txt de contexte sans souci d'encodage.