mardi 15 octobre 2013

Perl, manipulation des fichiers texte et du contenu.


Hé hé hé !!!

L'utilisation de Perl est justifiée par la faible quantité de données de nos corpus alliée à la simplicité syntaxique de Perl travailler sur les données textuelles.

Il ne s'agit pas ici d'un tutorial Perl général, plutôt l'utilisation de Perl dédiée à notre projet.


Entrées/Sorties Fichier Texte

Débutons par les entrées/sorties fichier avec Perl. Nous allons travailler sur des fichiers textes, donc voici la manipulation de ceux-ci via Perl.


OUVRIR LE FICHIER TEXTE POUR ACCÉDER À SON CONTENU

- ouverture en interne, fichier à traiter indiqué à l'intérieur du script.





° Fonction open() : premier argument, nom du flux à ouvrir et
second argument, chemin vers le fichier texte. Retourne un flux vers le fichier.

 Pour écrire dans le fichier, ouvrir EN ÉCRITURE, indiquer ">" devant le fichier.

° Utiliser alors la fonction print FLUX string pour écrire avec ce même flux.


- ouverture externe, fichier  à traiter indiqué en argument du script

° On utilise l'opérateur diamant <> pour récupérer l'argument en entrée

while ($ligne = <>) { --> exemple d'utilisation dans une boucle "while", lecture ligne par ligne. Chaque ligne est ici enregfistrée dans la variable $ligne ; donc une nouvelle ligne à chaque tour de boucle.
La boucle s'arrête lorsqu'il n'y a plus rien à lire.

Deux variables magiques : $_ est la valeur de la ligne courant et $. est le numéro de la ligne courante.


° Aussi, conventionnellement est défini @_ qui contient la liste des arguments. $_[] permet d'accéder à un élément de cette liste.

Par exemple, $_[0] est le premier élément donné en argument.







L'ouverture permet d'atteindre le contenu texte de notre fichier.
Ce qui nous intérèsse c'est la manière dont on va traiter ce contenu textuel, voici les fonctions usuelles et utiles à cet égard.


TRAITEMENT DU CONTENU TEXTUEL


° Fonction split() : premier argument, expression régulière notée entre // permettant de définir la délimitation, second argument chaîne de caractères à découper.

Exemple

$cible = "Un Deux Trois Quatre";
@table = split(/ /g,$cible);

Ici on récupère le tableau table les différentes séquences issues du découpage de cible avec l'espace pour délimiteur. Retourne la liste de séquences si affectation à une liste @ ou le nombre de séquences si affectation à un scalaire $.

Ainsi, on obtient :

$table[0] : "Un"
$table[1] : "Deux"
etc.

° Concaténation de deux chaînes de caractères avec l'opérateur .

Exemple

$a = "moi"
$b = "je"
$a . $c -> "moi je"

° opérateur répétition x

Exemple "a" x 3 -> "aaa"

° Majusculer up() et minusculer lc() : texte à modifier en argument.

° Fonction index() vérifie si une chaîne de caractères est contenue dans une autres ; premier argument, la sous-chaîne et second argument, la chaîne.
Renvoie -1 si faux, 0 si vrai.

Permettra notamment de compter le nombre d'ouccurences d'une certaine expression d'un texte.


° Fonction length() permet de donner la taille d'une chaîne de cacaractères.
Un argument : une chaîne de caractères. Renvoie l'entier correspondant à la taille.



FERMETURE FICHIER

Après avoir traité les données, penser à fermer le flux ouvert précédemment.

° Fonction close() : un argument, le nom du flux donné dans open(). <> si ouverture externe, via entrée standard.


Nous verrons dans le prochain article un peu plus profondémment l'utilisation des expressions régulières.




Kévin Deturck











dimanche 13 octobre 2013

Premier envol théorique

Bonjour à tous !


À l'approche de la date fatidique à laquelle il faudra avoir finalisé la création de ce blog, et défini le sujet sur lequel nous allons orienter notre travail au sein de ce projet encadré, un billet introductif s'impose.


Nous sommes Johan, Kevin et Diane, trio formé dans le cadre du "Projet Encadré" dépendant du Master 1 TNM 2013-2014, de l'INALCO et Paris 3. Ici Diane, qui rédige présentement ce billet pour vous permettre de comprendre les directions que vont prendre notre projet.


Le but de ce projet étant de développer une recherche basée sur des corpus de textes multilingues, à l'aide de moyens informatiques qui nous seront enseignés au court de l'année, nous avons trouvé judicieux de choisir un sujet pluridimensionnel et vaste, nous permettant différentes approches possibles.


Venant tous les trois de parcours différents, pas tous de l'INaLCO, ayant des goûts relativement éclectiques, nous avons exclu d'office l'idée de travailler sur un sujet purement linguistique. Nous avions plein d'idées en tête, notamment celle de travailler sur des icônes internationales, cela nous offrant un angle d'attaque extrêmement vaste. Mais le fait de devoir construire des corpus multilingues posait problème à certains égards. Me concernant, désireuse de travailler sur un corpus en indonésien, je me suis retrouvée confrontée à l'impossibilité de trouver suffisamment de textes en indonésien, la grande majorité de ceux-ci étant en anglais (dans un souci de communication avec l'étranger, très certainement). Ensuite, les sujets récents ou d'actualités à partir desquels je trouvais suffisamment de textes en langue mère, n'étaient pas compatibles avec les langues étudiées par Kevin et Johan. C'est pourquoi, ces contraintes imposées par l'indonésien nous ont obligés, tous les trois, à trouver un sujet universel possédant des caractéristiques propres à chaque région du globe: l'alimentation.


Le titre que nous avons donc décidé de donner à ce projet est le suivant: De la langue au palais, étude multidimensionnelle des comportements alimentaires sur les cinq continents. (Notez le jeu de mots. Il faut savoir faire les choses avec passion et méticulosité!)
Sujet à première vue rébarbatif, il est en fait passionnant à plusieurs niveaux.
D'abord, il nous a permis, lors de la construction des corpus de textes, d'apprendre énormément de vocabulaire de chacune des langues sur lesquelles nous travaillerons. Ensuite, les comportements alimentaires sont le miroir de nombreux paramètres qui n'en sont pas moins passionnants: 
- Le climat (Consommation omniprésente de tel ou tel produit, car climat favorable? Ou importation? Etc.),
- L'économie (Pays en crise, donc aliment omniprésent car peu cher? Etc.),
- L'histoire (Aliment omniprésent car historiquement présents sur le territoire? Ou importation issue des anciennes colonies et habitude gardée?),
- Les comportements sociaux (En fonction de nos connaissances personnelles sur chacun des pays étudiés, quelles conclusions peut-on faire sortir des occurrences majoritairement pointées par nos outils informatiques?),
- La géographie (Par exemple, pourquoi une variété peu élevée d'aliments sort de nos résultats? Est-ce une région dont les ressources terriennes sont difficilement exploitables? Sujet croisé avec le climat. Etc.)
- Etc.


Pour illustrer cette recherche, Johan, Kevin et moi avons décidé de construire des corpus de langues internationales et représentatives de chacun des continents.
Kevin construira deux corpus de langues:
- (1) En anglais, focalisé sur les habitudes alimentaires d'Amérique de Nord,
- (2) En français, focalisé sur les habitudes alimentaires des pays d'Afrique noire francophones.
Johan construira un corpus de textes:
- (3) En japonais, focalisé sur les habitudes alimentaires dudit pays.
Pour finir, je travaillerai sur un corpus de textes:
- (4) En espagnol, focalisé sur les habitudes alimentaires d'Amérique Latine, ainsi que sur un corpus en,
- (5) indonésien, focalisé sur les habitudes alimentaires d'Indonésie.
Si cela est possible, j'essayerai également de former un corpus en malais.


Nous espérons que cette étude vous passionnera tout autant qu'elle nous passionne pour l'instant.

Merci de votre lecture et à bientôt.


Diane pour le groupe.

Retour à l'Accueil
Retour à Théorisation du projet tenants et aboutissants

Un peu d'HTML ???

Pour satisfaire à un petit exercice demandé en cours nous allons faire ici une petite page HTML toute simple visant à afficher un tableau avec nos noms et le thème du projet. Une fois le texte tapé cela donne ça :

Ce qui bien sûr, le fichier texte une fois ouvert par votre navigateur préféré sera interprété comme ceci :

Restera à initialiser cela avec un script bash et à expliciter les balises, ce que nous nous chargerons de faire ultérieurement.

A+
Joe

Retour à Exercices
Retour à l'Accueil

samedi 12 octobre 2013

Comment compter les fichiers d'un dossier avec une/des commande(s) bash ?

Hello !

Pour répondre à une petite interrogation qui était de savoir comment compter les fichiers présents dans un dossier.
Nous allons ici utiliser deux commandes à savoir find et wc.

Tout d'abord on se place dans le fichier Bureau qui sera notre base de travail du jour et on affiche son contenu avec ls comme ceci :






Nous constatons la présence de deux dossiers – test1 et test2.

Si on tape la commande find avec pour argument -type f – fichier ; on demande à trouver les types de fichiers présents dans le dossier Bureau ou nous nous trouvons. Ce qui affiche :



Reste à utiliser wc (word count) avec l'argument -l (pour ligne) afin d'obtenir le décompte.



« Oui mais moi je veux juste le décompte du fichier test2 ... »

Aucun problème, il suffit de taper le chemin en début de commande, après find.



Voilà, je pense que cette question est résolue.

A+ Joe



Pour retourner à la page des Exercices
Pour retourner à l'Accueil

jeudi 10 octobre 2013

Les commandes ls, pwd et cd

Une petite suite concernant les commandes bash ??? On vous a laissé sur votre faim la dernière fois ???

Et bien remédions y sans plus attendre !!!
Penchons nous aujourd'hui sur trois commandes basiques mais vraiment indispensables , j'ai nommé :lspwd et cd

Après l'ouverture du terminal on se trouve dans le fichier ~ qui représente notre répertoire courant.
Mais que contient-t-il ?
Pour le savoir tapons la commande ls (list segment) ce qui a pour effet d'afficher les fichiers suivants :


« Mon invite de base ne ressemblait pas à ça !! »

Tout à fait, car je me suis avant tout dirigé dans un sous dossier (ici, vous l'aurez deviné, je parle du dossier Ubuntu One/Master 1 TAL ...etc), ceci dit cela n'a pas grande importance pour l'instant.
Par contre ce qui nous intéresse davantage c'est ce qui s'affiche sur l'écran en dessous. Ainsi on voit apparaître une série de nom en bleus et d'autres en blancs.
Les bleus représentent des dossiers les blancs des fichiers.

« Mais alors comment on déplace la dedans pour obtenir le même écran ? »

Avant de se déplacer, au risque de se perdre il convient de savoir ou on se trouve, cela c'est le rôle de la commande pwd (print working directory) ce qui affiche dans mon cas :





On savait que je me trouvais dans le dossier Ubuntu One/ ...etc maintenant on sait que celui qui contient ce même dossier est /home/joe. Le répertoire courant est donc celui-ci chez moi, ou encore appelé ~.

Pour finir, la commande cd (change directory), qui vous permettra de vous déplacer dans l’arborescence de vos fichiers :


Et voilà je suis maintenant dans le dossier Perl. Une chose utile pour reculer d'un dossier il faut taper cd .. .
Puisque nous savons désormais nous déplacer, nous verrons la prochaine fois comment créer des dossiers et des fichiers.

A+ Joe

Retour à la page Bash/Linux
Retour à l'accueil

samedi 5 octobre 2013

Un peu de Bash ...

Hello !!

Puisqu'il faut bien commencer quelque part chers lecteurs... un peu de bash ça vous dit ???

Commençons par définir – succinctement – ce qu'est le bash : sous le système d'exploitation Unix , et ici plus précisément Linux c'est le shell, nous allons donc bien sur parler de consoles et/ou de terminaux... (je laisse la terminologie aux spécialistes du genre ce qui n'est pas ma prétention dans l'immédiat, ainsi je vous prie d'excuser les incohérences de lexique qui pourraient se glisser dans les propos de vos humbles rédacteurs - car oui nous serons plusieurs - nos chers followers.

Je reprends donc après cette intermède laborieuse, ici je vous parlerais donc de terminal.

« Kézako ??? » C'est un peu la réaction que certains ont eue, parmi nous cette semaine en voyant s'ouvrir devant leurs yeux ébahis, cet univers parfois – pour pas beaucoup heureusement … non, non je ne dirais pas si j'étais du nombre – insoupçonné.

« Mais de quoi parle-t-il ? » diront certains : de ça 



Pour l'obtenir, il suffit de faire la manip suivante : pour les plus fainéants dont je fais parti : crtl+alt+t (ou encore d'aller dans les applications et de sélectionner le terminal).
Ainsi vous devriez obtenir quasi la même chose.
Comment l'interpréter :
joe        → c'est moi, normal c'est mon ordi
@         → chez/ou sur la machine
Ubuntu → ici la machine/l'ordinateur c'est Ubuntu
:            → a juste pour fonction d'être un séparateur
~           → dans le dossier courant
$           → représente une invite de commande

«Mais à quoi cela peut-il servir ???»

Nous verrons cela dans un prochain billet, et oui il ne faut pas gâcher le suspens.
Pour l'instant on se contente de taper la commande exit qui comme vous l'aurez deviné, fermera le terminal.

A+ Joe

Retour à la page Bash/Linux
Retour à l'accueil