Mardi 31 janvier 2012 2 31 /01 /Jan /2012 13:42

La phase 2 du projet a enfin démarré. Voici les nuages de mots que j'ai fait à partir des contextes et de l'outil en ligne gratuit Wordle :

Pour le mot "following :

following.png

following2.png

following3.png

following4.png

Pour le mot "suivant" :

s1.png

suivant1.png

suivant2.png

suivant3.png

Enfin, voici les arbres créés avec l'outil en ligne gratuit Treecloud. Pour "following", il m'a fallu utiliser une liste de stopwords (mots vides) personnalisée, la liste par défaut éliminant d'office le mot "following". Il n'apparaissait donc pas dans l'arbre.

Pour le mot "following" :

treecloud following stopwords

Pour le mot "suivant" :

treecloud_suivant_stopwords_100_mots_max.png

 

Prochaine étape et non des moindres : la création du site internet qui fera la synthèse du projet !

Par La vie multilingue du verbe
Ecrire un commentaire - Voir les 0 commentaires
Mardi 17 janvier 2012 2 17 /01 /Jan /2012 15:47

Irina semble avoir abandonné le projet, c'est donc seul que je dois terminer le programme et créer le site Internet. Mes connaissances en russe étant limitées, je suis contraint de ne pas traiter le troisième fichier d'URL. Ces URL ne figureront plus dans mes tableaux.

Depuis la dernière fois, j'ai modifié le script de façon à ce qu'iconv ne serve plus qu'à détecter si une page aspirée est en UTF-8 ou en ASCII. En effet, iconv ne fait qu'analyser les octets du fichier pour en déduire l'encodage. Or les différents encodages en 8 bits ne sont pas discernables de cette façon. Il est seulement possible de détecter de façon sûre si des caractères sont écrits en Unicode ou en ASCII.

Ainsi, pour toutes les pages qui ne sont ni en UTF-8 ni en ASCII, le programme va directement chercher un charset dans le code source.

Enfin, grâce à Serge Fleury, notre professeur, j'ai pu résoudre le problème qui empêchait l'affichage dans le tableau du nombre d'occurrences du mot étudié. La sortie de la commande egrep était envoyée à un fichier texte, et non redirigée vers la fonction wc (word count).

Après la création de fichiers texte avec le contexte, j'ai utilisé le programme minigrep multilingue pour récupérer les contextes au format HTML (via l'utilisation de la commande perl).

Enfin, j'ai fait en sorte que le script regroupe tous les contextes dans un gros fichier texte et un gros fichier HTML.

contextglobal1.jpg

(contextes regroupés dans un gros fichier texte)

minigrep1.jpg

(contextes dans un fichier HTML)

Voici donc un extrait du tableau final :

tableau.jpg

Par La vie multilingue du verbe
Ecrire un commentaire - Voir les 0 commentaires
Samedi 7 janvier 2012 6 07 /01 /Jan /2012 20:24

CACOGRAPHIE n. f. XVIe siècle. Composé de caco- et de graphie.
Litt. Mauvaise écriture ; mauvais style ou orthographe fautive.

 (Dictionnaire de l'Académie Française, neuvième édition)

Le script tel qu'il a été présenté dans le billet précédent posait problème car certaines étapes étaient manquantes ou dans un ordre incorrect, si bien que les pages web qui n'étaient pas en UTF-8 mais dont l'encodage était détecté par file -i étaient traitées comme si l'encodage était inconnu de iconv. Le script allait alors chercher l'encodage directement dans les métadonnées des pages web, parfois sans résultat (d'où l'apparition de cases "Encodage non détecté" dans les tableaux précédents).

 

tumblr_ljlzgjlOig1qds441.png

 

Il nous a fallu du temps pour repérer l'erreur et la corriger. Nous avons tenté de réécrire tout le script à partir de zéro, mais cela a créé plus de problèmes qu'il n'en a réglé, c'est pourquoi nous nous sommes efforcés de corriger le script existant. Nous en avons profité pour réorganiser les commentaires et la présentation du script, qui était devenu difficilement lisible pour un être humain.

Au final, nous avons perdu du temps (presque un mois sans nouveau billet sur le blog) mais nous comprenons à présent mieux l'organisation du script et l'ordre des tâches à programmer.

Voici donc le script corrigé :

script1.png script2.png script3.png script4.png

(cliquer sur les vignettes pour agrandir les images)

 

Nous avons également peaufiné l'affichage des données dans le Terminal :

console.jpg

(idem)

Malheureusement, nous n'avons toujours pas pu résoudre le problème qui fait s'afficher le message [: 202: Illegal number: Bad request quand egrep détecte un Bad request dans une page web. Cela ne semble pas empêcher le bon fonctionnement du programme, mais le Terminal semble détecter une erreur.

Voilà le tableau obtenu après exécution du script :

tab1.jpg tab2.jpg tab3.jpg tab4.jpg tab6.jpg tab7.jpg tab8.jpg

(idem)

Remarques : Il n'y a plus aucune cellule indiquant "Encodage non détecté". 

L'URL numéro 21 du premier tableau a fait l'objet d'un dump texte initial avant conversion en UTF-8, alors même que sa cellule Dump-texte indique qu'il s'agissait d'UTF-8. Après vérification dans l'historique du Terminal et vérification manuelle avec file -i, nous nous sommes aperçus que file -i détectait l'encodage de la page comme "unknown-8bit" (d'où nécessité d'aller chercher le charset dans le code source de la page web).

Il y a maintenant un problème d'encodage avec les URLs en russe, problème que nous avons détecté dès la rédaction du billet précédent, mais que nous avons remis à plus tard à cause des problèmes inhérents au script.

Comme les captures du tableau l'indiquent, la totalité des pages aspirées en russe (troisième et dernier tableau) ont été détectées par file -i comme de l'ISO 8859-1.

Or :

- Firefox a indentifié l'encodage comme étant du windows-1251 (et comme il a affiché les pages sans aucune anomalie visible, on présume qu'il avait raison), cf. image ci-dessous

russe.jpg

- Le charset ISO 8859-1 ne permet d'afficher que des caractères latins (pour l'alphabet cyrillique, il s'agit de l'ISO 8859-5).

Par conséquent, le dump texte ne s'est pas effectué comme attendu, et le résultat pour nos URLs en russe est illisible. Voici comment s'affiche le dump initial de la première URL du troisième tableau, dans un éditeur de texte et dans Firefox avec réglage par défaut (il interprète ce qu'il lit comme de l'ISO 8859-1 et se trompe, fatalement)

dumpp.jpg

En changeant manuellement l'interprétation du fichier par Firefox (en choisissant Cyrillic (Windows-1251)), on retrouve un texte lisible :

dumq.jpg

En revanche, après conversion de ce dump imparfait vers un fichier texte en UTF-8, rien ne va plus. Le texte est devenu complètement illisible, quelle que soit l'interprétation choisie sous Firefox.

Si nous ne pouvons pas régler ce problème, nous craignons de devoir nous passer complètement des pages en russe pour notre projet, ce qui serait dommage.

Prochaine étape : l'extraction des contextes !

Par La vie multilingue du verbe
Ecrire un commentaire - Voir les 0 commentaires
Dimanche 11 décembre 2011 7 11 /12 /Déc /2011 10:59

http://www.phdcomics.com/comics/archive/phd120211s.gif    

Le problème signalé dans la note précédente été réglé en mettant entre guillemets la variable controlducurl après la condition if.

Ensuite, j'ai procédé à un nettoyage du code : les sauts de ligne ont été supprimés et les commentaires se situent à présent après les lignes de code, sur la même ligne, et non sur la ligne précédente. L'indentation a été corrigée automatiquement grâce à GNU Emacs (ouvrir le script avec Emacs et appuyer sur la touche de tabulation à chaque ligne dont on souhaite corriger l'indentation).

J'ai abandonné Gedit en faveur de l'éditeur de texte Kate, dont la mise en page par défaut est plus élégante. Les caractères ont une taille plus petite, la coloration du texte est moins criarde, et il est possible de masquer des boucles entières (utile pour chercher une boucle en particulier dans un script très long). Enfin, il est possible d'afficher les numéros de ligne.

Autre amélioration du code : l'usage d'un fichier d'input, nommé input.txt, que l'on place dans le dossier à partir duquel on va exécuter le script (~/PROJET-MOT-SUR-LE-WEB, et non ~/PROJET-MOT-MOT-SUR-LE-WEB/PROGRAMMES). Dans ce fichier, on inscrit le chemin correspondant aux fichiers d'URLS (soit le répertoire URLS) et, à la ligne suivante, le nom du fichier html où stocker les tableaux de liens. Dans le script, on ajoute un dièse devant les deux premières occurences de la commande echo, afin de les faire passer pour des commentaires. Cela permet de ne pas traiter ces lignes comme des commandes, et de ne pas avoir à les effacer (on ne sait jamais).

Puis on lance le script avec la commande suivante : sh ./PROGRAMMES/nomduscript.sh < input.txt

Le Terminal ira "prendre" son input dans le fichier texte au lieu de le demander à l'utilisateur à chaque lancement du script.

La tâche suivante consistait à détecter l'encodage des pages aspirées, à en extraire le texte si l'encodage est en UTF-8, et à faire le nécessaire dans le cas contraire : détecter l'encodage puis faire le Lynx, ou ne rien faire. Ilaine Wang et Juliette Hamelin l'ont très bien expliqué dans leur blog : http://projet-rever.blogspot.com/2011/11/seance-6-application.html Aussi, je me permets de ne pas exposer ici dans le détail l'utilisation des commandes file, egrep et iconv, mais voici l'intégralité du code de notre script :

kate1katekate3

Voici le tableau que nous obtenons après exécution du script :

tableau1.pngtableau2.pngtableau3.pngtableau4tableau5.png

Les bonnes pages ont bien été aspirées et le dump texte fait. Il reste néanmoins quelques problèmes :

Nous n'avons pas réussi à totalement éliminer ce problème de crochets dans le script : le Terminal renvoie un message d'erreur à de nombreuses reprises :

erreurterminal-copie-1.png

Cela ne semble pourtant pas empêcher le bon fonctionnement du script.

Autre problème : certaines lignes du code source de notre tableau commencent par des crochets fermants, comme si une balise html avait été coupée en deux (on le voit très bien, par exemple, à la ligne 5) :

tableausource.jpg

Prochaine étape : l'extraction du contexte de nos mots-clés !

Par La vie multilingue du verbe
Ecrire un commentaire - Voir les 2 commentaires
Lundi 28 novembre 2011 1 28 /11 /Nov /2011 08:25

Après avoir téléchargé les pages web, on cherche à se débarrasser des balises HTML. Pour cela, on va utiliser Lynx, qui est un navigateur en ligne de commande. Il s'exécute dans le terminal. On va tout simplement enregistrer l'output de Lynx dans un fichier, qu'on place dans le sous-répertoire DUMP-TEXT.

 

Tout d'abord, voici le code :

   lynx

 

Puis voilà le tableau obtenu et un exemple de texte extrait d'une page aspirée :

 

lynxpage

 

lynxdump


(cliquez sur les vignettes pour agrandir)

 

Ensuite, et avant même de se soucier des encodages, il fallait faire en sorte que le script détecte la présence de chaînes de caractères du type Bad Request ou Accès Interdit. J'ai recopié la solution employée par Laetitia Antunes et Linda Massé (http://lintia.over-blog.com/article-recuperation-du-contenu-textuel-dump-89533216.html) mais la condition if n'a pas fonctionné : au lieu d'afficher Bad Request dans la colonne du code d'erreur de curl, je n'ai toujours que le code d'erreur de curl (soit 0, la plupart du temps).

 

Voici le code à problème, tel que je l'ai écrit :

brerreur.png

 

Voici le début du terminal, quand j'exécute ce script :

terminal-copie-1.png    

Le terminal affiche 0 comme valeur du retour de curl, or une vérification manuelle indique que les deux premières URLs du premier tableau donnent des Bad Request. RETOUR CURL devrait donc indiquer "Bad Request" au lieu de 0, à la fois dans le terminal et dans le tableau (le tableau obtenu est identique à celui créé par le script précédent).

firelist.jpg

(cliquez sur l'image pour agrandir)

Par La vie multilingue du verbe
Ecrire un commentaire - Voir les 1 commentaires

Présentation

  • : La vie multilingue du verbe "suivre"
  • La vie multilingue du verbe "suivre"
  • : programmation bash extraction perl ingéniérie linguistique Divers
  • : Nous sommes étudiants en première année de Master Ingéniérie Linguistique à l'Université Paris 3 Sorbonne Nouvelle. Ceci est le journal de bord qui rendra compte de notre travail pour le cours de Programmation et Projet Encadré, du premier semestre 2011-2012, consacré au verbe "suivre".
  • Partager ce blog
  • Retour à la page d'accueil
  • Contact

Recherche

Calendrier

Mai 2012
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus