Dans ce chapitre, nous allons parler de notre projet, comme nous vous l’avons déjà annoncé dans notre présentation qui se trouve dans la page A propos, nous sommes trois étudiants en M1 Traitements Automatique des Langues, qui ont pour objectif à faire un Weblog (Web site + Blog ) pour notre cours de Projet Encadré. Dans le tout premier cours on a appris ce que vaut dire les termes (Shell,Bash,Linux etc), Leurs fonctionnalités, du quoi ils s’agissent et à quoi servent-ils ? Ne paniquez Pas, car tout cela nous apparait bizarre et incompréhensive pour la première fois mais après et petit à petit on a compris.
Pour ce Projet il y a une date limite où nous devons achever notre blog et le site internet et sera fin de semestre vers la fin de mois de décembre.
21/09/2016
Pour exécuter, tapez dans bash la commande « sh exerciceA .sh »
Exercice B
Ecrire un script (dans le dossier PROGRAMMES) permettant de générer dans le répertoire TABLEAUX un fichier html contenant 1 tableaux avec 2 lignes (sur la première, votre nom, sur la seconde, le mot choisi pour votre projet).
Pour faire l’exercice B, il faut d’abord savoir comment écrire un fichier html et comment insérer le tableaux dedans. Je cherche sur Internet et apprends à le faire.
05/10 à 19/10/2016
Dans cette partie de notre blog, on expliquera brièvement comment on devra travailler pour la mise en œuvre de notre projet et quelles sont les commandes pour le faire apprises pendant le cours. Le but est de créer un fichier de sortie HTML, avec un tableau où écrire des informations concernant nos URLs, comme le numéro du lien, la page aspirée, l’encodage, etc. Tout doit être codé en UTF-8 (un codage de caractères informatiques). Pour arriver à ce résultat on partira de notre fichier contenant les URLs .
Pour bien présenter les étapes qu’on dois faires pour le projet, on a fait une graphe synthétiaue qui explicite clairement le déroulement du programme:
la graphe à faire
Maintenant on va aller chercher les urls sur le navigateur. Dès que les urls sont pretes, on les placera toutes dans un fichier text brut, il nous faut au moins 50 urls et il faut les placer dans le répertoire (dossier) qu’on a fait auparavant et qu’on l’a appelé URLS.
Ensuite, pour bien nous entraîner, on a suivi les étapes du premier pdf de cette séance: page officielle du projet.
Sur cette page, il y a déjà des solutions (scripts) proposées, mais quand je les lance directement sur mon ordinateur, ils me donnent des erreurs. Alors, je fais un peu des modifications pour que les scripts marchent avec mes urls sous mon ordinateur.
1) . Premier script: créer un tableau des liens
26/10/2016
Dans cette partie je vais vous expliquer les expressions régulières, ne vous arrachez pas les cheveux ;D pour la première fois ça l’air incompréhensible mais je vous promets que à la fin de cette partie, vous partirez avec une connaissance suffisante pour traiter vos textes facilement. Maintenant on se trouve avec des fichiers où on trouve une masse de données contextuelle, des fois ces données sont importantes des fois ces données sont inutiles. la question qui se pose à ce stade est : comment on peut arriver à séparer les données qui nous intéresse de celles qu’on veut se débarrasser ? C’est à ce point où les Expressions Régulières devient inévitable et d’une importance majeure. Alors que signifie une EXREG ? Une expression régulière, est, en informatique, une chaîne de caractères, que l’on appelle parfois un motif, qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Regardez l’exemple suivant : (b|c)*(ba|abc$) pour certaines personnes, cela est de charabia mais en fait c’est une expression régulière qui a un début et une fin et surtout un objectif. Pour arriver à comprendre ces expressions régulières, je vous invites à regarder leurs syntaxes et comment on les forme : La syntaxe est la suivante : egrep —->(Exreg)—-> fichier. On utilise toujours le mot egrep avec l’expression régulière et on travaille toujours sur un fichier. Par exemple si vous voulez utiliser les Exreg sur un navigateur, cela ne va pas marcher. Comme nous avons dit, il y a un syntaxe pour écrire une expression régulière mais aussi il y a des opérateurs à comprendre et à savoir leurs fonctions. Voilà un tableau des opérateurs qui va vous éclaircit :
Métacaractère//// | Comportement | Exemple |
* | Correspond zéro ou plusieurs fois au caractère qui précède.
Équivalent à {0,}. |
Lo*ng correspond à « lng » ou « long » ou « loong » ou « loooooooong » |
+ | Correspond une ou plusieurs fois au caractère ou à la sous-expression qui précède.
Équivalent à {1,}. |
zo+ correspond à « zo » et « zoo », mais pas à « z ». |
? | Correspond zéro ou une fois au caractère ou à la sous-expression qui précède.
Équivalent à {0,1}. |
zo? correspond à « z » et « zo », mais pas à « zoo ». |
^ | Lorsqu’il est utilisé comme premier caractère dans une expression hors crochets Correspond à la position au début de la chaîne recherchée.
Lorsqu’il est utilisé comme premier caractère dans une expression entre crochets, ^ vaut dire négation de ces caractères. |
^[abc]correspond à 3 caractères au début de la chaîne recherchée.
[^abc] correspond à tout caractère sauf a, b, et c. |
$ | Correspond à la fin de la chaîne recherchée. | ba$ correspond à « b » ou « ba ». |
. | Correspond à tout caractère unique sauf le caractère de saut de ligne \n. | a.c correspond à « abc », « a1c », et « a-c ». |
[] | Marque le début et la fin d’une expression entre crochets. | [1-4] correspond à « 1 », « 2 », « 3 » ou « 4 ».[^aAeEiIoOuU] correspond à tout caractère à l’exclusion des voyelles. |
{} | Marque le début et la fin d’une expression avec quantificateur. | a{2,3} correspond à « aa » et « aaa ». |
() | Marque le début et la fin d’une sous-expression. Les sous-expressions peuvent être enregistrées pour une utilisation ultérieure. | A(\d) a pour correspondance « A0 » à « A9 ». Le chiffre est enregistré pour une utilisation ultérieure. |
| | Indique un choix entre deux éléments ou plus. | z|food correspond à « z » ou « food ».(z|f)oodcorrespond à « zood » ou « food ». |
\w | un caractère lettre ou chiffre ; équivaut à [A-Za-z0-9] | Dans la chaîne recherchée « le petit chien blanc… », \w+correspond à « le », « petit », « chien » et « blanc ». |
\ | Marque le caractère suivant comme un caractère spécial, un littéral, une référence arrière ou une séquence d’échappement octale. | \n correspond à un caractère de saut de ligne. \(correspond à « ( » . \\ correspond à « \ » . |
On a recueilli 50 urls afin d’exécuter le script pour créer un tableau html contenant plusieurs colonnes dont : le n° de lien, le lien, statut curl, page aspirée, encodage, dump initial, dump utf8, contexte utf8 et finalement la fréquence du motif.
On a exécuté le script et on a rencontré plusieurs problèmes : Problème n°1 : Curl a des limites : cela vaut dire que curl ne peut traiter que les liens qui ont un code de 200 et n’est pas capable de traiter les autres codes.C’est que le tableau affiche l’encodage de utf8 ce qu’on demande mais il nous affiche aussi d’autres encodage, voire des fois, il n’affiche rien du tout. On doit transcoder tout encodage en utf8 et pour les liens où curl ne détecte rien, il faut trouver l’encodage.
La séance 10 est une séance de transition, on va finir la première phase de notre projet et commencer à préparer des corpus pour l'analyser.
Le programme "minigrep-multilingue" permet de rajouter une nouvelle colonne "CONTEXTE HTML" dans notre tableau de résultat; cette colonne est facultative mais elle rend les résultat plus clair et on décide de le faire.
on peut installer le programme en suivant les explications présentées ici et installer préalablement une bibliothèque Perl en suivant mode d'emploi ici.
et plus précisément, les étapes d'installation avec images sous Ubuntu :
Après l'installation du programme minigrep, on va lire détaillement le script étape 3 pour bien comprendre comment ça marche avant de le lancer.
on va facilement trouver cette ligne dans le script: perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur.txt parametre-motif-extraction.txt; en suivant ce répertoire, on met le dossier décompressé du minigrep dans le dossier PROGRAMME. et en exécutant cette ligne, une nouvelle colonne "CONTEXTE HTML" sera rajoutée dans le trableau, dans cette colonne où stocke notre corpus à analyser.
Maintenant, on peut lancer notre script étape 3, et voilà!
pour la colonne "CONTEXTE HTML", ci-dessous la sortie d'un URL arabe:
Et voilà pour le chinois:
On a quasiment fini la première phase du notre projet à l'aide du programme minigrep, mais avant de passer à la deuxième phase avec le Trameur, on va préparer des corpus pour l'analyser.
Pour mieux décrire le comportement du mot choisi, il faut l'analyser dans son context, et pour cela, on s'intéresse donc aux deux fichiers: DUMPS et CONTEXTES; le premier est le texte complet qui contient le mot et le deuxième est son vrai contexte, des lignes autour du mot choisi.
On va REGROUPER tous les fichiers DUMPS (d'une même langue) dans un fichier pour le premier corpus et les CONTEXTES pour le second corpus. Le prof nous a donné une archive concat.zip qui contient un petit programme qui nous permet de concaténer tous les fichiers qui se trouvent dans un même répertoire. Puisque on a déjà lancé le programme minigrep, on a donc des pages html dans nos dossiers CONTXTES. Ensuite on les déplace temporairement et double-clic sur le programme qui est dedans. Génial, ça marche très bien!
On fait la même chose pour le dossier DUMPS, oops, qui nous a trouvé des erreurs, concernant le chinois :
C'est parce que dans le fichier DUMPS, il y a des fichiers qui sont pas en UTF-8, on doit les déplacer et garder les fichiers transcodés en UTF-8 et le problème est résolu.
Concernant l'arabe, il nous a trouvé des problèmes également, ce ne sont pas des problèmes techniques, mais plutôt des problèmes issus du croisement des langues, car on est parti chercher les urls dans les journaux bilingues voire trilingues dont la concaténation extrait toutes les langues confondues.
le script traite déjà ce problème mais si le script ne le fait pas, une expression régulière peut etre un bon remède à ce problème.
voilà le résultat après nettoyage :
Pour ce qui concerne la langue italienne, on n'a pas trouvé des problèmes d'encodage.
Par contre, le corpus des DUMPS contient les BUTTONS qui permettent de partager un article sur des reseaux sociaux comme Facebook, Twitter, etc.
Pour éviter que ceux-ci apparaissent dans notre analyse avec le Trameur comme des mots avec une fréquence élevée, il faut alors nettoyer le corpus.
Voici notre corpus après la concatenation:
Voici maintenant notre corpus après le nottoyage fait graçe à des expressions regulières:
Comme le chinois est normalement écrit sans espaces entre les mots contrairement aux autres langues dans notre corpus, j'ai été obligé de segmenter les textes avant de les traiter dans le Trameur. J'ai trouvé sur Internet un logiciel Stanford Word Segmenter pour segmenter le chinois.
Après avoir télécharger le logiciel, je l'ai décompressé et lu attentivement le manuel README. En suivant les instructions, j'ai choisi la manière appropriée de segmentation.
Quand je lance la commande bash segment.sh -k pku CONCATFILE.txt utf-8 0 sur le terminal, il m'affiche que dans la ligne 65, java not found. Donc, j'ai cherché sur Internet et téléchargé le java 1.8 sur le teminal; ensuite je relance la commande:
Il marche très bien et m'affiche directement le résultat sur le terminal!
Puis, afin d'écrire les résultats dans un fichier .txt au lieu de les afficher directement, je rajoute l'opérateur > à la fin de la commande:
bash segment.sh -k pku CONCATFILE.txt utf-8 0 > output.txt
et voilà, les résultats sont bien écrits dans le fichier output.txt.
Mais si on le lit déraillement, il reste encore des erreurs et des négligences qui rendent le résultats de l'analyse moins fiables. Pour diminuer les interférences, on peut examiner manuellement encore une fois les résultats.
Et on fait exactement la même chose pour le deuxième fichier de concaténation. N'oubliez pas de nommer autrement le output du 2e fichier, sinon, le 2e résultat va écraser le premier!
© 2017 Designed by YOUSEF GIULIA XI