mardi 13 décembre 2011

Séance #7 - application (1)

Pour pouvoir faire une analyse linguistique pertinente sur le mot qu'on a choisi pour notre projet, il est nécessaire de l'extraire des pages web récupérées avec son contexte.
La première solution que nous avons utilisée pour cette étape est d'inclure à notre script le programme minigrep qui nous a été fourni.

Pour cela, rien de plus "simple", il "suffit" d'ajouter quelques lignes de code dans notre script. Où? Eh bien, puisqu'il s'agit d'extraire un contexte textuel et qu'on veut toujours travailler en utf-8, il faut se situer juste après les commandes lynx (dump) ou, éventuellement, après les commandes iconv (conversions éventuelles si le fichier original n'était pas en utf-8), et là, on tape:
  • perl [chemin relatif vers le programme]  "UTF-8" [chemin relatif vers le fichier cible] [chemin relatif vers le motif à extraire] ;
Bien évidemment, cette commande suppose que l'on a bien téléchargé le programme minigrep multilingue, et qu'on a créé un fichier txt contenant le motif recherché sur le même modèle que celui donné lors du téléchargement de minigrep (c'est-à-dire, MOTIF=regexp).
  • mv resultat-extraction.html ./CONTEXTES/$i/$j-minigrep.html ;
Petit rappel: mv (move) est une commande très utile qui permet de déplacer un fichier, et/ou bien de le renommer (le processus étant en réalité le même...). Ici, la commande renomme ET déplace le résultat de l'extraction faite par minigrep.
L'utilité de cette ligne? Tout simplement de stocker le résultat pour pouvoir y accéder dans le tableau, ce qui ne serait pas possible autrement... En effet, l'output de minigrep est spécifié à l'intérieur même du script et ne peut donc pas comporter dans son chemin les variables $i et $j issus du script bash et dont on se sert pour spécifier les noms de fichiers dans lesquels on stocke les informations liées aux différents urls. Propos testés et approuvés.

/!\ Problème lors de l'exécution du programme minigrep:
Il est possible de tomber sur une erreur qui commence par "Can't locate Unicode/String.pm in @INC" qui signifie qu'il manque des paquets à perl pour exécuter le programme minigrep, ou encore "ERROR: Can't create '/usr/local/lib/perl/5.12.4/Unicode' mkdir /usr/local/lib/perl: Permission non accordée at /usr/share/perl/5.12/ExtUtils/Install.pm line 494", autre problème dû au fait qu'installer un programme ou modifier le paramétrage du système doit être fait à travers le compte administrateur (cf. sudo). Ce problème a été réglé avec la commande suivante: sudo perl -MCPAN -e 'install Unicode::String'.

Tout cela nous donne le tableau suivant:
Si on clique sur les liens vers les résultats de l'extraction par minigrep, on se rend compte que parfois, tout marche très bien...

... et parfois beaucoup moins.
Dans le dernier fichier, on remarque que le motif a été trouvé dans des balises html et des urls, ce qui n'est pas pertinent pour notre projet. Next: améliorer l'expression régulière du motif?

1 commentaire: