Accéder au contenu principal

#Article 7 : Finalisation du script


Lors de notre dernier billet, nous avons cherché une manière d’obtenir les encodages de toutes les pages et de convertir en UTF-8 celles qui ne l’étaient pas déjà.
Nous avons vu en cours une manière plus simple et efficace que celle que nous avions trouvée :
egrep -io "charset=\"?[^\",]+\"?" ./PAGES-ASPIREES/$numerotableau-$compteur.html | cut -f2 -d"=" | tr -d '("|\\|>)' | sed "s/'//g" | tr '[a-z]' '[A-Z]'
L’expression régulière charset=\"?[^\",]+\"? permet de trouver l’encodage, puis nous nous débarrassons de « charset= » grâce au cut -f2 -d"=", ainsi que des éventuels guillemets (simples et doubles) encadrant l’encodage et autre signes (barres obliques et balises) avec tr -d '("|\\|>)' | sed "s/'//g" |, et enfin nous passons le résultat en majuscules avec tr '[a-z]' '[A-Z]'.  Nous  avons ajouté à cette commande les instructions |sort|uniq après avoir constaté que le charset était renseigné à deux reprises sur certains sites.


Nous avons également ajouté les dernières colonnes du tableau (cinq colonnes).

Tout d’abord, une colonne avec un lien vers un fichier texte montrant le motif cherché en contexte. Nous avons pour cela ajouté au début du programme une troisième variable à déclarer lors du lancement du script. La variable 3, que l’on renomme motif, contient le motif entre guillemets : en ce qui nous concerne, le mot « geek ». Voici la commande pour créer ce fichier :
egrep -i -C2 $motif "./DUMP-TEXT/$numerotableau-$compteur.txt" > ./CONTEXTES/$numerotableau-$compteur.txt
La fonction -C de la commande egrep permet d’afficher la ligne contenant le motif accompagné des n lignes précédentes et des n lignes suivantes (ici 2). Nous ajoutons -i  (pour case insensitive) afin d’avoir également les résultats pour « GEEK » en majuscules. Et nous enregistrons le fichier dans le répertoire « CONTEXTES ».

La colonne suivante affiche un lien vers un fichier html contenant chaque ligne où apparaît le motif, accompagnée, en bleu et italique, de la ligne précédente et de la ligne suivante. Les numéros de lignes sont précisés en bleu et le motif apparaît en rouge. Cette présentation plus visuelle du motif en contexte est permise par le programme Perl minigrep que nous avons téléchargé. Il s’utilise comme suit :
perl ./minigrep/minigrepmultilingue.pl "UTF-8"  ./DUMP-TEXT/$numerotableau-$compteur.txt minigrep/parametre-motif.txt;
mv resultat-extraction.html ./CONTEXTES/$numerotableau-$compteur.html;
Nous appelons le programme avec la commande perl puis nous donnons trois arguments dans cet ordre : encodage, fichier dans lequel le motif est recherché, fichier dans lequel nous avons écrit le motif à chercher. Le fichier de résultat est généré automatiquement avec le nom « resultat-extraction.html ». Nous le renommons pour qu’il ne soit pas écrasé à chaque tour de boucle et le déplaçons dans le répertoire « CONTEXTES ».

               La colonne suivante contient un lien vers un index : l’ensemble des mots et le nombre d’occurrences de chacun est présenté dans un fichier texte. Pour créer ce fichier, nous écrivons la commande suivante :
egrep -o "\w+" ./DUMP-TEXT/$numerotableau-$compteur.txt | sort | uniq -c | sort -gr > ./DUMP-TEXT/index-$numerotableau-$compteur.txt
L’expression régulière \w+ permet de lister tous les mots du fichier contenant le texte de la page web. Nous trions ces mots dans l’ordre alphabétique avec sort, nous n’affichons qu’une fois chaque mot, en ajoutant le nombre d’occurrences devant avec uniq -c et nous classons les résultats dans l’ordre décroissant d’occurrences avec sort -gr.

               L’avant-dernière colonne contient un lien vers un fichier texte listant les bigrammes, c’est-à-dire les couples de mots qui se suivent. Le fichier est généré ainsi :
egrep -o "\w+" ./DUMP-TEXT/$numerotableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -gr > ./DUMP-TEXT/bigrams-$numerotableau-$compteur.txt
Nous créons un premier fichier temporaire avec la liste des mots, grâce à la regex vue plus haut. Nous créons ensuite un second fichier temporaire à partir du premier, dont nous retranchons la première ligne (donc le premier mot) grâce à la commande tail -n +2. Nous concaténons les lignes de ces deux fichiers grâce à la commande paste dans un troisième fichier qui contient donc les bigrammes. Nous retravaillons ce fichier en triant les résultats comme nous l’avons fait pour l’index.

               La dernière colonne affiche le nombre d’occurrences du motif. La commande est la suivante :
nbmotif=$(egrep -coi $motif ./DUMP-TEXT/$numerotableau-$compteur.txt)
Nous créons une variable nbmotif qui contient le nombre d’occurrence (egrep -co) de notre motif.


L’ensemble des étapes permettant de remplir les colonnes du tableau est un long processus qui doit être répété à plusieurs reprises : deux fois pour les fichiers dont nous avons trouvé l’encodage dans le protocole http (pour les fichiers déjà en UTF-8 puis pour les autres après conversion), puis deux fois pour les fichiers dont nous avons trouvé l’encodage dans le code source (idem).
Afin d’alléger un peu le programme, nous avons donc souhaité créer une fonction. Voici comment créer une fonction en bash :
nom_de_la_fonction()
{
Instructions
}
Pour l’appeler, nous écrivons tout simplement le nom de la fonction ainsi que ses éventuels paramètres (sans parenthèses).
Nous avons rencontré un problème lors de la création de la fonction. En effet, la dernière étape de la fonction consiste à écrire dans le tableau. Ce tableau est désigné par son chemin relatif, dans lequel notre répertoire « TABLEAU » est désigné à l’aide d’une variable $2 qui sera passée en paramètre lors de l’appel du script. Cependant si nous écrivons une variable à l’intérieur d’une fonction, un paramètre est attendu pour la fonction elle-même. C’est pourquoi j’ai renommé « $2/tableau.html » en « $1/tableau.html » et passé $2 en paramètre lors de l’appel de la fonction.
Voici notre fonction :



J’appelle cette fonction avec la commande : constit_tableau $2;

Notre tableau est terminé ! Nous n’avons plus qu’à analyser  les données que le script nous a permis de recueillir. Cela fera l’objet des prochains billets !



Commentaires

Enregistrer un commentaire

Posts les plus consultés de ce blog

#Article 10 : Création du Site Web

Ce dixième et dernier article du blog aura pour objet la création de notre site web associé au projet. Nous avons choisi une mise en forme personnalisée, sur la base d'un modèle trouvé en ligne, et, ayant tous les trois quelques connaissances en HTML/CSS, nous avons ajouté et modifié nous-mêmes les pages dudit site. Il reprend certaines parties de ce blog: présentation de l'équipe, du projet. Nous y avons ajouté une section traitant des programmes utilisés tout au long de notre recherche, ainsi qu'une page dédiée aux données traitée. Par la suite, une section se consacre au script et à son écriture, une aux résultats obtenus, et enfin une à l'analyse de ces résultats. Contrairement à ce blog, le site contiendra plus de visuels et sera probablement un peu plus agréable dans sa navigation. Pour pouvoir travailler ensemble sur les fichiers, ceux-ci ont été partagés sur un drive commun. En effet, il serait autrement compliqué d'y avoir accès aisément depuis différentes

#Article2 Présentation de l’équipe

Avant de vous présenter le projet lui-même et de vous expliquer ce qui nous a amenés à choisir le mot « geek » pour notre étude, laissez-nous vous faire une rapide présentation de l’équipe. Aurore : (langues : français et anglais) : Je suis titulaire d’une licence en Sciences du Langage à Nanterre. En dernière année, avec le parcours Traitement Informatique de Corpus j’ai pu suivre une initiation à la linguistique informatique et la linguistique de corpus. Ayant apprécié l’expérience, j’ai décidé d’entreprendre le Master TAL. En 3ème année de licence, dans le cadre d’une enquête sociolinguistique, mes camarades et moi-même avions travaillé sur les anglicismes dans les jeux vidéos. C’est l’envie d’entreprendre un projet sur un sujet connexe qui m’a conduite à vouloir travail sur un thème proche du gaming. Corentin : (langues : français, japonais, italien) Titulaire d’une Licence en Science du Langage à Nanterre, passionné par langues et la linguistique, et versé dans l’informatique,