Canalblog
Suivre ce blog Administration + Créer mon blog

Projet_encadré

Projet_encadré
Publicité
Archives
26 décembre 2007

Cloture du projet

Mercredi 26 décembre

Après la construction du site pour la présentation des résultats finaux, le projet touche à sa fin.

Site visible ICI

Publicité
Publicité
16 décembre 2007

SCRIPT FINI

Dimanche 15 décembre


Ca y est. Le script est enfin terminé...

Tous les petits problèmes ont été résolus :

    - pour les pages que le programme semblait "oublier", c'était tout simplement notre motif d'egrep qui ne prenait pas certains mots en compte (lorsqu'ils étaient précédés ou suivis d'une virgule, par exemple).
Nous avons donc améliorer notre motif et cela nous donne :

  egrep  "(^|\.|,|;| )$traduction(s| |\.|;|,|$)"

C'est à dire que le programme cherche le mot de la variable
    en début de ligne, en fin de ligne,
    précédé ou suivi d'un point
    précédé ou suivi d'une virgule
    précédé ou suivi d'un espace
    suivi d'un s.

- Un nouveau problème s'est cependant ajouté :
Nous avons voulu que le mot cherché apparaisse en rouge dans la colonne du contexte, mais avec une ligne de commande toute simple : sed "s/$traduction/<FONT COLOR=red>$traduction/g", le résultat n'était pas satisfaisant :  si le  programme rencontré la même chaine de caractères à l'intérieur d'un mot, il l'appliquait quand même, et il ne tenait absolument pas compte ni des mots en majuscules ni des s pluriels.
Pour le premier souci, une solution proposée a été de créer une nouvelle ligne de commande :

tr 'A-Z' 'a-z' qui transforme toutes les majuscules en minuscules;
Pour le deuxième, on a utilisé la commande

perl -pe

"s

/ motif à remplacer : (^|[^a-zA-Z0-9-])$traduction(s?)([^a-z])

/ par :<FONTCOLOR=red>\1$traduction\2\3<\/FONT>

/ig"

qui, comme c'est une commande perl, permet d'utiliser les expressions régulières dans la substitution.
on a donc le mot cherché, au pluriel ou non, en début de ligne, non précédé d'une lettre, d'un chiffre ou d'un tiret et non suivi d'une lettre. Afin que l'environnement du mot soit conservé après substitution, on met les expressions régulières entre parenthèses ce qui permet au programme de les considérer comme des variables que l'on réécrit dans le motif changé sous la forme \num .

Et juste un petit mot sur la syntaxe d'une commande de substitution : c'est la même chose que pour sed, mais ici, on a ajouté i qui permet de ne pas tenir compte de la casse. Cela nous évite donc au final d'utiliser la commande tr (présentée précédemment).

        - pour les autres problèmes, cela ne dépend pas de nous, puisque c'est soit des problèmes d'aspiration des pages, soit que la page n'existe plus (ou est devenue payante, notamment pour les articles).

Nous avons cependant décidé de garder les URL's, et d'ajouter dans notre script une ligne qui vérifie si les principales commandes ont pu être appliquées (wget, lynx, ...) en vérifiant la taille en octet du fichier crée.

Cela nous permet ainsi, de traiter les pages qui pour l'instant fonctionnent encore mais pourraient aussi ne plus exister par la suite.




10 décembre 2007

Autres petits problèmes

Lundi 10 décembre

On constate encore quelques petites problèmes quant à l'aspiration des pages web, et a leur enregistrement dans un fichier texte.

  • En effet, la fonction -dump ne fonctionne pas dans les documents en .pdf (c'est le cas des URL 3 et 4 du contexte "ski" en français)
  • De même certains sites n'ont plus l'air de fonctionner, necessitent un abonnement au site pour consulter les archives, ou sont tout simplement mit à jour. (aviation/anglais/URL 3 ; traces/français/URL 8 ; vélo/anglais/URL 3)
  • La fonction de recherche semble tout simplement "oublier" certaines occurrences des mots rechercher. (aviation/anglais/URL 6 ; course_auto/anglais/ URL 2 et 3 ; traces/français/URL 10)

Pour ce dernier problème, nous n'avons pas encore trouvé de quoi il s'agissait.
Affaire à suivre !

6 décembre 2007

Dernière étape : le contexte : le script !!!

Jeudi 6 décembre

On s'approche de la version finale du script !
Téléchargeable ici : script
Et le résultat : test

Il ne reste plus qu'à travailler sur la mise en page et à affiner la recherche de
grep pour ne pas avoir un grand bloc de texte pas forcément pertinent.

4 décembre 2007

Dernière étape : le contexte : Problème

Lundi 4 décembre

A partir de ce que l'on a dit précédemment,

on imagine assez facilement ce qu'on va devoir ajouter à notre programme :

    1. Une condition if, qui va nous permettre de séparer #mot_ou_traduction  et  les URL's,
A partir de là, deux cas :
si la ligne commence par #, alors on prend le mot comme variable,
sinon, on traite la ligne d'URL, c'est à dire qu'on applique ce qu'on a dans notre programme pour l'instant (wget, ...) et on ajoute  egrep  avec comme motif : la variable précédente (à noter que la variable précéde toujours les URLs dans lesquelles on la retrouve) + le traitement html,

    2. Il ne faut pas oublier que l'on avait au début de notre programme une petite boucle FOR qui nous permettait de compter le nombre de lignes du fichier, afin d'avoir le nombre de lignes à donner au tableau.     Il nous faut donc ici, modifier un peu cette boucle et ajouter une condition : on ajoutera 1 au compteur quand la ligne commence par http, c'est à dire quand c'est une URL.

Petit problème rencontré pour le 1.:

à partir d'un fichier texte de la forme
    #runway
    http://.....
    #landing strip
    http://

lorsqu'on lui demande d'afficher les lignes une par une, il écrit pour la 3ème ligne,
    #landing
    strip,

c'est à dire qu'il fait comme si l'espace entre les deux était un retour chariot.

en fait,

Comme nous l'a expliqué Mr Fleury,

Quand on fait dans le script un for ligne in `cat $fichierURL
Dans un premier temps, la commande cat va afficher le contenu du fichier :
            #runway
            http://....
            http://....
            #landing strip   
            http://
Etc.

Ensuite la boucle for consiste à traiter chacun des éléments de la pseudo-liste que l’on peut associer à la sortie précédente et les associer dans un premier temps à la variable ligne.

Cette pseudo liste est en fait constitué par le découpage de cette longue chaîne de caractère en prenant comme séparateur le caractère espace. Cette liste ressemble donc à ceci :

(#runway, http://..., http://...,#landing, strip, http://..., etc)

Et on voit bien qu’il va y avoir un pb !

solution : relier landing et strip par - , l'ensemble traité sera donc #landing-strip, pour avoir une variable du mot que l'on veut repérer ensuite dans la page dumpée, on utilisera 2fois la commande sed associée à une substitution

"s/ce_que_l'on_veut_enlever/ce_par_quoi_on_veut_le_remplacer/g"

ce qui nous donne les deux commandes suivantes :
                                                sed -e "s/#//g" tempo.txt

                                                sed -e "s/-/ /g"

Publicité
Publicité
3 décembre 2007

Dernière étape : le contexte : Introduction

Dimanche 3 décembre

On a encore une dernière colonne à réaliser dans les tableaux : il s'agit de récupérer les lignes des fichiers dumpés contenant le mot PISTE ou ses équivalents en anglais.
A partir de là, nouvelle question : comment indiquer au programme les mots que l'on veut retrouver?

Première solution (très simple) envisagée : entrer directement au clavier les mots souhaités.
Problème : cela va nous obliger à rentrer un certain nombre de mots pour l'anglais, puisqu'on a jusqu'à trois traductions anglaises pour un sens.

Nous avons donc opté pour une deuxième solution qui consisterait à ajouter, dans nos fichiers d'URLs de départ, une ligne contenant le mot, et surmontant les URL's concernés.
Nous avons décidé de commencer la ligne par un '#' afin de la distinguer plus facilement.

Cela nous donnera donc

ex

29 novembre 2007

Script avec le dump

Jeudi 29 novembre


Le voici le voilà !
Après une petite semaine d'interruption passé sur la Génération automatique de textes : THE script est enfin arrivé !


Avec ajout de la fonction dump, qui récupère le texte des pages aspirées et l'enregistre dans un fichier texte.
On ajoute donc la commande :

lynx -dump URL > URL.txt


Les fichiers textes sont enregistrés dans un nouveau fichier que l'on appel Dump


Résultats
Le script : aspir_htmlv3
Le tableau : jkfhejhejkezkjl

25 novembre 2007

script avec les pages aspirées.

Dimanche 25 novembre

Voici le nouveau script
Il n'y a rien de très nouveau, puisqu'il s'agissait surtout de faire fonctionner l'ancien script avec la nouvelle arborescence,

On notera donc quelques changements, mais pas de nouvelles notions depuis le dernier script.

A noter simplement, l'utilisation de la commande
basename
qui se présente sous la forme basename nom_du_fichier extension_à_éliminer
et qui nous permet ici de créer un dossier pour chaque langue dans pagesaspirees, en récupérant le nom des dossiers à partir des fichiers .txt du dossier PISTE.

Dans l'invite de commande, durant l'aspiration des pages, nous avons pu observer le "travail" effectué par le script, et ainsi noter que certaines pages n'arrivent pas à être aspirées du premier coup (ligne jaune). Dans ce cas, le script essaye une deuxième fois (en l'occurence, cela a fonctionné la deuxième fois : lignes rouges). Et comme nous avons gardé l'option -t2 qui limite à deux le nombre d'essai, il s'arrête ensuite là.

wget2

D'autre part, certaines pages ne sont pas aspirées et l'invite de commande nous indique une erreur (cadre jaune). A comparer avec les indications de l'invite lorsque la pages est aspirée (cadre rouge)

wget1

voici donc le script :aspir_htmlv3

et le résultat : tableau


18 novembre 2007

Changement d'arborescence.

Dimanche 18 novembre

Comme nous l'avons dit dans l'article précédent, le résultat de notre script ne nous satisfait pas totalement. En effet, nous avons obtenu un tableau par sens et par langue, ce qui rend la page html relativement longue. De plus, et c'est surtout cela qui nous embêtait, notre script traite d'abord tous les sens en anglais, puis en francais. D'un point de vue linguistique, il nous semble pertinent de pouvoir comparer d'un coup d'oeil le contexte à la fois en francais et en anglais. Nous avons donc décidé de changer un peu le script.

Cependant, nous nous sommes vite rendues compte que notre organisation d'alors (un dossier par langue contenant des sous-dossiers par sens) n'était pas la plus simple et la plus pratique pour le résultat que nous voulions obtenir.

Nous avons donc décidé de changer notre organisation, et de créer sept sous-dossiers, un pour chaque sens, dans le dossier PISTE, puis d'y insérer les fichiers texte contenant les URL's, un en français et un en anglais.

Cela nous donne l'arborescence suivante :

arborescence

15 novembre 2007

Script du tableau HTML - 2éme partie

Jeudi 15 novembre

Nous avons donc maintenant :

  1. un script qui aspire les liens URL dans les différents dossiers de notre arborescence
  2. un script qui crée un tableau en html en allant chercher les url dans les dossiers où elles se trouvent.

En concaténant ces deux scripts nous devrions donc pouvoir :

  • aller chercher les URL une à une dans les différents fichiers de notre arborecence
  • placer ces url dans le tableau (une url par ligne)
  • aspirer les pages web et les ranger dans le fichier pagesaspirees, lui même divisé en sous dossier (comme pour le programme aspirer.sh vu précédement)
  • faire un lien vers les pages aspirées dans la deuxième colonne du tableau, de façon à ce qu'elles se trouvent sur la même ligne que l'url de la page web correspondante.

On utilise les mêmes commandes Unix que pour le programme aspirer.sh.
Par rapport au premier script de tableau, on doit ajouter un deuxième compteur pour les pages aspirées en veillant à le nommer autrement afin qu'il n'entre pas en conflit avec le premier.

On obtient un script Bash qui commence a devenir un peu compliqué : aspirerv2.sh

Le résultat est le suivant : aspirerv2
(Bien entendu, les liens vers les pages aspirées ne fonctionnent pas ici. Et l'extension .html du nom de fichier a été rajouté à la main, canalblog ne permettant pas l'hébergement de fichier sans extension.)

Inconvénient : Du fait que le script aspire systématiquement toutes les pages URL, son éxécution prend facilement deux à trois minutes à chaque fois, ce qui peut s'avérer un peu long lorsque l'on tente des modifications du code. Mais dans l'ensemble, il nous évite un grand nombre de manipulations répétitives, et permet d'effectuer toutes les opérations avec une seule application.

A noter que le script devrait subir des modifications prochainement par rapport à la présentation des tableaux qui ne nous convient pas pour le moment.

Publicité
Publicité
1 2 > >>
Publicité