En moyenne, je passais 20 heures par semaine sur le projet, ce
qui est une estimation approximative. Si
on compte à partir de fin de septembre, jusque à la date de rendu, ça fait 14
semaines environ, soit à peu près 300 heures.
J’exprime ici mes remerciements à mon ancienne partenaire Yulia, qui malheureusement n’est plus dans ce parcours,
pour la récolte des URLs en anglais et en russe, ainsi que la conception d’une partie de l’arborescence.
Je remercie également nos professeurs pour leur aide
enthousiaste et toujours fort appréciée.
On remarque plus facilement les inconvénients ;-)
* Sous cygwin, qui n'est pas du "vrai" Linux, on peut pas saisir les caractères non-ASCII.
* curl ne fonctionne pas quand il y a des caractères non-ASCII dans l'URL.
* Le nombre d'encodage que file "connaît" est très limité. lynx connaît moins d'encodage que iconv.
* iconv ne fonctionne pas toujours correctement, même avec un encodage "connu".
* Même si j'ai installé LeTrameur depuis le disque, il refuse de charger le fichier ("Permission denied").
* L'installation sur machine de TreeCloud est compliquée, et l'exécution en ligne fait souvent planter mon navigateur.
- lynx "ne connaît pas gbk ni gb18030".
Par conséquent le dump enregistré n'est pas en bon codage, ce qui empêche iconv de faire son travail.
Mais si on assigne le codage gb2312 aux fichiers en gbk ou en gb18030 pour que lynx fonctionne, et par la suite indique l'encodage initial à iconv qui connaît bk et gb18030, on a une forte chance d'obtenir le bon résultat.
- iconv ne peut pas convertir gb2312 en utf-8 ?
Parfois cygwin me dit :
Presence d'un charset...
charset extrait : gb2312
VERIF : <> ==> connu par inconv
ENCODAGE final : gb2312 (avant conversion vers utf-8)
iconv: ../DUMP-TEXT/chinois/sens_2_1_a/2.txt:109:32:cannot convert
Cependant, je pourrais quand même obtenir un dump converti en utf-8, mais pas toujours avec succès (c'est curieux !).
C'est plutôt parce que dans le dump converti en UTF-8 par iconv, les caractères n'ont pas gardé leurs formes originales (par exemple, lettres cyrilliques sont transcrites en lettres latines).
- Indication d'encodage dans les pages Web est souvent irrégulière :
Espace(s) avant et/ou après =, nom d'encodage entouré de double quotes ou de simple quotes, sinon absence totale de l'indication. Tout ça rend très difficile la recherche de motif par egrep en énumérant les encodages possibles. Heureusement, on peut toujours compter sur les expressions régulières qui font bien leur tâche.
- Transformation des fichiers de format DOS en UNIX
Comme nous travaillons sous cygwin
qui est une simulation du système Linux, si nous voulons utilise les fichiers créés
sous Windows, il est possible que nous recevions des messages d'erreur. C'est
en fait à cause du fameux retour à la ligne, encodé différemment sous Windows,
sous Mac et sous Unix. Le remède est une commande simple : dos2unix.
- basename pour la suppression d'extension du nom de fichier
Utile quand on a besoin de nommer un répertoire d'après le nom d'un fichier, et bien sûr dans beaucoup d'autres cas !
- minigrep pour l'extraction de contexte
Comme un script en UTF-8 n'est pas compatible avec les
fichiers d'URLs en ANSI, ça ne m'est pas faisable
d'écrire les motifs de recherche dans le script, et egrep
ne peut alors m'aider à obtenir le contexte. Mais on a minigrep,
qui travaille parfaitement si le dump qui contient le motif a été correctement
converti en UTF-8. Par minigrep, un joli fichier HTML
sera généré dans lequel le motif, l'encodage est les numéros de ligne sont
précisés. Hélas, ce beau format me pose de nouveaux problèmes : comment enlever
ces marques pour l'étape suivante, la représentation graphique ?
- sed pour le nettoyage de
contextes
Nécessaire pour la représentation graphique du contexte en
forme de, par ex., nuages des mots, arbres sémantiques, etc. L'option -r nous
permet d'utiliser les expressions régulières étendues. Par exemple, pour
remplacer tous les signes de ponctuation dans un fichier par un blanc : sed -r 's/[[:punct:]]/ /g' ; pour supprimer les "Ligne n°x : " au
début de chaque ligne : sed -r 's/Ligne[^\:]+://g'.
- Expressions régulières pour la détection d'encodage
C'est plutôt fatiguant d'énumérer les encodages possibles et
l'irrégularité d'indication dans les codes-sources ne peut que compliquer
encore plus la situation. Les expressions régulières vont encore une fois nous
sauver la nuit, employées dans la commande egrep.
Essayez egrep -m 1 -o "charset ?=( |\"|\'| \"| \')?[^\"]+\b",
suivie de cut -d= -f2 | cut -d\' -f2 | cut -d\" -f2 : ça marche jusque là
très bien pour moi.