Le monde de couleur
Voici les quelques nuages de mots que nous nous sommes amusés à faire avec Wordle .... mais seulement en français et en arabe puisque le chinois et le coréen ne sont pas supportés.
Voici le premier arbre en français conçu à l'aide de Treecloud:
Afin d'éliminier les mots grammaticaux (déterminants, prépositions...) qui constituent du bruit pour une analyse de coocurrence, nous avons utilisé la commande sed qui nous a permis de substituer ceux-ci par des blancs. L'option -f de cette commande permet de récupérer des patrons dans un fichier. Nous avons ainsi obtenu un arbre plus pertinent:
Voici la liste de ce que nous avons rajouté par rapport à la semaine dernière:
- une colonne contenant tous les contextes en html, à l'aide d'un script Perl fourni en cours,
- un fichier concaténant tous les dumps en UTF-8,
- un fichier concaténant tous les contextes en format texte récupérés la semaine dernière.
En voici un rendu:
Certaines pages en chinois nous posent encore problème au niveau de la conversion en UTF-8 par la commande iconv.
Il ne nous reste plus qu'à regarder les octets .....
Nous avions deux objectifs à atteindre cette semaine:
- finir ce que nous avions commencé la semaine dernière à savoir déterminer tous les encodages de nos pages afin de pouvoir les convertir en UTF-8,
- récupérer les contextes autour du mot couleur dans chaque page.
Dans la mesure où la commande file ne nous donnait pas toujours l'information correcte pour l'encodage, nous avons, comme suggéré en cours, écrit un petit script permettant de récupérer le charset à l'aide de la commande egrep et le comparer à celui renvoyé par file. Cela nous a permis d'établir une liste de tous les charsets que nous devons manipuler.
Une fois ces informations récupérées, nous avons pu modifier notre script d'origine pour lui faire faire la chose suivante:
SI l'encodage est UTF-8;
⟶mettre le contenu textuel dans le répertoire DUMP_TEXT/langue/utf-8;
⟶récupérer le contexte autour du mot (une ligne avant, une ligne après) et le mettre dans CONTEXTES/langue;
FIN SI;
SI l'encodage n'est pas UTF-8;
⟶récupérer le charset directement dans la page aspirée à l'aide d'egrep (la liste des choix de charsets ayant été préalablement établie);
⟶⟶SI il n'y a pas de charset spécifié;
⟶⟶⟶on demande à l'utilisateur de le saisir à la main;
⟶⟶FIN SI;
FIN SI;
Voici le détail du script:
Et voici le rendu:
Cette article permet d'expliquer la ligne suivante présente dans notre script qui nous permet de répérer l'encodage directement dans une page html:
egrep -i -o "(charset ?=.*\"|\'|encoding ?=.*?(\"|\'))" ../PAGES-ASPIREES/$(basename $fic)/$j.html | uniq
La commande egrep permet d'afficher les lignes correspondant d'un motif donné dans un fichier donné (un fichier .html dans notre cas).
La syntaxe de la commande egrep est la suivante :
egrep -options motif fichier
L'option -i permet d'ignorer les différences entre majuscules/minuscules dans le motif et dans le fichier de recherche.
L'option -o affiche seulement le motif recherch.
Dans notre script pour le motif recherché, ("(charset ?=.*\"|\'|encoding ?=.*?(\"|\'))") nous avons utilisé un ensemble d'expressions régulières.
Dans ce cas le résultat doit afficher soit :
- charset= suivi de n'importe quel caractère jusqu'au caractère " (guillemet) ou ' (simple cote)
- encoding= suivi de n'importe quel caractère jusqu'au caractère " (guillemet) ou ' (simple cote)
En effet les expressions régulières suivantes ont été utilisées :
? qui signifie une occurence unique de charset ou encoding
. qui signifie un caractère quelqueconque (après le signe = dans l'expression utilisée)
* qui signifie que ce caractère quelqueconque a 0 ou n occurences
Enfin la commande uniq permet d'éliminer les lignes dupliquées dans un fichier trié. En effet dans certaines pages html le charset apparaissant plusieurs fois, la commande egrep affiche toutes ces occurences.
Cette commande n'est malheuresement pas idéale et ne fonctionne pas pour touts les liens, cependant il était nécessaire de l'expliquer en détail.
A suivre !
| Mai 2012 | ||||||||||
| L | M | M | J | V | S | D | ||||
| 1 | 2 | 3 | 4 | 5 | 6 | |||||
| 7 | 8 | 9 | 10 | 11 | 12 | 13 | ||||
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | ||||
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | ||||
| 28 | 29 | 30 | 31 | |||||||
|
||||||||||