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 !).

 

  • minigrep en grèves ?

 

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.