Présentation

  • : Avoir le pouvoir de pouvoir avoir le pouvoir !
  • : # CADRE : Master 1 PluriTAL (Paris 3, Paris 10, Inalco) - Projet encadré # MECENES : Rachid BELMOUHOUB, Jean-Michel DAUBE, Serge FLEURY # TOILE SUPPORT : page web # PEINTURE : web multilingue # PINCEAUX : scripts bash # THEME : extraction de contextes multilingues du mot "pouvoir"
  • Contact
  • Retour à la page d'accueil

Recherche

Vendredi 4 décembre 2009 5 04 /12 /Déc /2009 16:41

 

Salut !

 

 

On avance... et on poste un nouveau script. Les objectifs :

 

I - aspiration des pages web pour les enregistrer en local (wget)

II - sélection du contenu texte uniquement de ces pages, stockage en local (lynx)

III - sélection d'un contexte (unité = ligne) environnant un motif choisi (egrep)

 

Ca c'est pour les nouvelles commandes.

 

Au niveau du tableau html : création de 3 colonnes dont le contenu pointe vers le résultat respectif de ces 3 commandes.

 

Au niveau de l'organisation du stockage en local du résultat de ces commandes, on a, sur exactement le même niveau (= en chemin relatif, il suffit de remonter d'un cran pour redescendre dans le dossier désiré) :

 

/URLS / LANGUE / SENS / urls.txt

 

/ PROGRAMMES / script.sh + run.txt + un petit fichier erreur.txt mais ça c'est vraiment du luxe. En fait, comme on commence à avoir des commandes qui accumulent leur travail les unes après les autres, lorsqu'on a une erreur, on ne sait pas toujours où chercher. Du coup, on a fait une redirection des erreurs grâce à ça : 2>erreur.txt (qu'on écrit à la fin de la ligne qui lance le script ; on a donc dans cygwin : sh script.sh<run.txt 2>erreur.txt)

Avantage : le fichier est écrasé à chaque commande, donc il suffit de l'ouvrir dans Notepad++ (qui nous avertit à chaque fois que le contenu a changé) et de regarder au plus près quelle commande a fait quelle erreur. Ensuite on peut lire dans le manuel (rappel : man + nom de la commande, touche Q pour quitter) pour voir un peu quelles options existent, et quels arguments sont requis. C'est juste un petit peu plus clair que dans l'écran de commande de cygwin, mais pas du tout indispensable.

 

/ CONTEXTES / LANGUE / SENS / contexte.txt + général.txt où on concatène tous les fichiers contexte.txt

 

/ DUMP / LANGUE / SENS / dump.txt + général.txt

 

 

Pour le déroulement dans le détail :

 


I. Commande wget : enregistrement d'une page web en local

 

Il s'agit d'aspirer le contenu des différentes URLs, de l'enregistrer dans un .txt pour chacune d'entre elles,

puis de créer les liens vers ces copies dans la 2ème colonne du tableau.

Pour cela, nous avons utilisé la commande wget avec l'option -O.

Mais comme nous voulions avoir un dossier pour chaque sens à l'intérieur de "PAGES-ASPIREES",

il nous a fallut ajouter deux compteurs:  i+=1 pour chaque fichier .txt, et j+=1 pour chaque sens et des "mkdir" pour créer ces dossiers.

(nous avons fait de même pour les dossiers "DUMP" et "CONTEXTES") 

 

commande mkdir avec option -p :

 

Vous verrez sur le script une option à la commande mkdir qui est -p ("p" pour parent). Nous avons voulu créer en une seule commande un dossier par langue, à l'intérieur duquel nous voulions un dossier par sens. Soit 2 dossiers, l'un dans l'autre. Or la commande mkdir toute seule ne crée qu'une couche dans l'architecture, un seul niveau de dossier à la fois, impossible de faire un dossier dans l'autre, d'où le rajout de l'option -p. Le manuel précise que si l'un des dossiers existe déjà, il n'y aura pas d'erreur (en revanche je ne sais pas si la commande écraserait le dossier déjà existant...à tester pour confirmer)

 

II. Commande Lynx : aspiration d'un contenu texte

 

Puis, à l'aide de la commande lynx, nous avons aspiré et inscrit le contenu textuel de chaque URLs dans

des fichiers textes que nous avons sauvegardé localement et nous avons rajouté une 3ème colonne au tableau

contenant les liens qui mènent à ces derniers.

 

III. Commande egrep : retenir les lignes contenant un motif choisi

 

Ensuite, l'objectif était de faire rechercher un motif. On aurait pu faire une commande

echo "Quel est le motif recherché ?"

en début de script pour créer de l'interaction avec l'utilisateur. Mais parce que nos scripts ne sont jamais parfaits du premier coup, et qu'il faut les relancer parfois dix fois de suite...on a préféré inclure le motif dans le run qui passe en redirection d'input (chevron ouvrant) directement afin de ne pas avoir à retaper le motif dans cygwin à chaque fois.

On a donc inclu le motif [pouvoir] à la 3e ligne du run1.txt.

 

 

 

 

Une option possible de la commande egrep est de chercher un contexte un peu plus large que la seule ligne dans laquelle il apparait. Ce contexte peut être plus ou moins large suivant les paramètres appliqués à la commande egrep, en l'occurrence on a demandé 2 lignes au dessus, 2 lignes en dessous : c'est ce qu'on voit après les options A (After) et B (Before) de la commande egrep.

Chaque .txt contenant le résultat de la commande a été linké dans la 4ème colonne du tableau.(oui ça y est on invente de nouveaux mots, "linké", magnifique non ?)


commande cat avec redirection STDout : concaténation des fichiers .txt en un seul

 


Enfin, pour préparer le travail avec les nuages de mots, nous avons concaténé le contenu de tous les contextes.txt par langue dans un autre fichier, un nuage.txt

La question est : est-il préférable de faire un nuage par sens, ou nuage par langue ?

 

On a concaténé de la même manière les fichiers résultant de la commande DUMP.

 

 

Voici une capture du script des nouvelles commandes (wget, lynx, egrep + cat et mkdir)

 

Commentaire du 7/12/2009 :

Finalement on a modifié l'allure du script : tous les mkdir -p se font en une seule ligne de commande, séparés par un espace :

 

mkdir -p ../PAGES-ASPIREES/$dossier/sens$j/ ../CONTEXTES/$dossier/sens$j/;

 

 

 

Et voici notre tableau :

 

 

Restent à résoudre :


- LE PROBLEME ULTIME !! L'encodage !!!!!

On a choisi des langues qui ne seront pas encodées en ISO LATIN-1 : du japonais, et du vietnamien... Or lynx n'affiche pas d'Unicode je crois, ou bien c'est la commande Dump qui pose pb je ne sais plus... Enfin pour ça il faudra télécharger l'outil minigrepmultilingue, mais on n'y est pas encore, on travaille dessus, donc la suite au prochain épisode...

 

- Il reste une modification dans le script à faire : intégrer une boucle supplémentaire pour faire tourner le script sur chaque dossier LANGUE...

- Dans le script : modifier le nom des liens...parce que les chiffres c'est pratique, mais pas très parlant...

- Et puis histoire de peaufiner l'apparence du tableau, il va falloir se pencher sur la question des feuilles de style css. Ca aussi, c'est en cours.

 

C'est tout pour aujourd'hui ! 

 

 

B&T

Par PluriTAL-BTZ
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus