mercredi 7 décembre 2011

Extraction du contexte et comptage du mot "jouer"

On devra encore un peu ajuster notre script, mais on peut quand même continuer notre aventure. Le but de la prochaine phase est de ajouter trois colonnes à notre tableau. La première colonne contient l’extraction du contexte autour du mot qu’on a choisi (« jouer » et sa traduction en anglais et en italien) en format .txt et la deuxième colonne contient la même chose en format .html. La dernière colonne va contenir le contage du mot choisi. La commande egrep est la commande de filtrage qui permet à la machine de faire une recherche d’une chaîne de caractères dans un fichier. La syntaxe de la commande est : 

egrep -options
chaîne_de_caractères  nom_du_fichier

Pour identifier dans les contextes le mot « jouer », on aura besoin d’utiliser les expressions régulières ! Les expressions régulières, même si difficiles à déchiffrer, sont très utiles parce que servent pour décrire de manière générique des chaînes de caractères pour les traiter. Par exemple, on a déjà utilisé une expression régulière quand on a localisé dans la page html la chaîne de caractères « charset ». Grâce à une expression régulière, on va construire un « modèle » : le programme cherche le modèle et il trouve toutes les chaînes de caractères qui ressemblent au modèle choisi. Par exemple, le modéle \ble\b pour trouver l’article « le » ou le motif « le ».

Comment implémenter les expressions régulières ? En utilisant des caractères spéciaux, des opérateurs:
[ ] représente un caractère (Ex. R [iau]ng = ring, rang, rung)
| permet de marquer une alternative (Ex. Francesca|Ardas – Francesca, Ardas)
( ) pour délimiter la portée de l’opérateur | (Ex. in (any|every) – in any, in every)
[0-9] un caractère entre 0 et 9
^ négation d’une chaîne de caractères: comme ça on désigne un caractère qu’on ne veut pas (Ex. [^Dd] = ni D ni d). On peut l’utiliser pour supprimer de balises html, comme par exemple dans :
Sed –e s/<[^<>]*>//

Puis on a des caractères qui permettent de quantifier des expressions :
? option par rapport à l’expression qui le précède
* ce qui précède: il n’y a pas ou il y a pour n occurrences
+ au moins une occurrence
. permet de représenter n’importe quel caractère sauf le retour à la ligne

Et des opérateurs de frontière :
^ début de chaîne de caractères
$ fin de chaîne de caractères
Donc ^$ est une de chaîne de caractères vide
\w n’importe quel caractère alphanumérique
\b frontière de mot

Le paranthesage nous permet d’organiser la portée d’un opérateur. Toutefois, il y a un ordre d’importance, une hiérarchie à respecter :
fermeture  (*) > concaténation > union