Personal tools
You are here: Home Data Mining Linguastream Fouille de données avec Linguastream
Document Actions

Fouille de données avec Linguastream

by François Rioult last modified 2008-01-30 12:57

Ce document est disponible ici au format PDF.

Linguastream est une plateforme logicielle dédiée au traitement du langage, développée à l'Université de Caen Basse-Normandie. Elle permet, à l'aide d'une interface graphique, d'organiser des traitements complexes sur des flux de données. Les traitements sont représentés à l'aide de composants graphiques reliés entre eux.

Linguastream.jpg





































Ce document décrit la réalisation d'une chaîne complexe de traitement de données, fondée sur le problème de la classification supervisée. Les données sont discrétisées, la classe est le premier attribut de chaque objet.

Le fichier d'entrée est identifié par le paramètre ${data} et a l'extension .bin. Ce fichier est réparti en deux fichiers : un fichier d'apprentissage et un fichier d'instances réservées au test. La répartition coupe le fichier original en ${total} parties, le fichier de test contient les instances de la partie ${index}.

À partir du fichier d'apprentissage, un modèle est créé, constitué de règles de décision. Ce modèle est ensuite filtré pour ne conserver que les règles utiles à la classification. Un composant classeur prononce alors une décision sur les instances de test anonymées (la classe est effacée). La qualité de la classification est évaluée par un score, inscrit dans le fichier .res correspondant.

fscore.png




















Préliminaires


Une chaîne de traitement est réalisée par l'enchaînement de composants Linguastream. Les composants ont leurs entrées à gauche, les sorties à droite. Par convention, les traitements principaux sont alignés de gauche à droite. Les entrées sont en haut, les sorties en bas.

composantsList.png






Composants Linguastream

Les composants de base permettent de structurer les flux de données :

Les composants structurels :
  • les sources : fichier ou dynamique (pour un macro-composant)
  • les destinations : fichier ou dynamique (macro-composant), observeur, poubelle
  • les répartitions de flux : concentration, séparation

composants.png


Les composants externes :
  • l'exécutable pipé

Les composants pour la gestion des appels système
  • concentrateur avec sortie standard
  • séparateur
  • source
  • segmenteur
macro.png










Paramètres

Chaque chaîne Linguastream est accompagnée de paramètres, qui permettent ainsi de fixer la valeur de variables globales pour la chaîne. Ces paramètres peuvent identifier un nom de fichier auquel s'applique le traitement, ou une valeur numérique caractéristique de l'exécution. Ce mécanisme évite d'éditer les propriétés d'un composant.

Chaque paramètre dispose d'un nom et d'une valeur. Dans les propriétés des composants, l'évaluation des variables se produit à l'aide de la syntaxe ${nomVariable}.

Macro-Composants

Linguastream propose la réalisation de macro-composants. Ces composants particuliers sont eux-mêmes des chaines Linguastream, dont les entrées et les sorties ont été remplacées par des sources ou destinations dynamiques. Le name et le sourceName par défaut (stdin ou stdout) de ces composants dynamiques doit être remplacé par un nom explicite.

Pour des raisons d'accès aux fichiers, les macros composants doivent être placés dans des dossiers qui n'ont pas de rapport hiérarchique avec les chaînes (y compris les autres macro-composants) qui les utilisent. Une façon simple de développer ces macro-composants est de leur réserver à chacun un dossier.

Les macro-composants acceptent les paramètres des chaînes appelantes. Pour cela, il faut propager ces valeurs dans les paramètres du composant.











Pré-recquis

Cette application fonctionne sous Linux et systèmes compatibles. Elle requiert des utilitaires de base : bash, sed, cut, paste, awk, et des utilitaires plus évolués, développés en C++ ou en Clips, présents dans la distribution MVminer, disponible sur les machines du département d'informatique de l'Université de Caen.



Migration d'une application Linguastream


Les fichiers de chaînes Linguastream sont au format XML. Ils comprennent de nombreux chemins absolus. Pour déplacer une application, il faut donc renommer ces chemins.

Prenons l'exemple du projet Classification, représenté ci-dessus. Sa localisation originale est /users/ens/frioult/these/linguatest/classification. Supposons que l'on souhaite la faire migrer vers le répertoire /home/toto/classification. Une fois l'application téléchargée ICI et installée dans ce répertoire, il faut y exécuter la commande suivante (de la distribution MVminer) pour mettre à jour les chemins :

[classification]$ mvballade.sh "mvsedlingua.sh /users/ens/frioult/these/linguatest/classification/ /home/toto/classification/ *.ls"
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' anonym.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' classeur.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' discretisation.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' freqClips.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' freqMVminer.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' modele.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' regles.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' repartition.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' score.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' segmentation.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' selection.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' test1.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' classeur.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' discret.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' frequents2.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' frequents.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' fscore.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' modele.ls
sed 's/\/users\/ens\/frioult\/these\/linguatest\/classification\//\/home\/toto\/classification/g' regles.ls

(mvballade.sh est un utilitaire qui applique récursivement une commande shell dans tous les répertoires de l'arborescence courante. mvsedlingua.sh remplace la chaîne source par la chaîne destination dans tous les fichiers passés en argument.)


Calcul du modèle


Les données utilisées pour cette démonstration sont les suivantes :
[data]$ cat sample.bin
# fichier de test
1 3 5
2 3 5
1 4 6
2 3 6
1 4 7
1 3 5
2 3 6
2 4 7
L% mmdèle utilisé pour la classification est celui des règles d'association. Elles sont calculées en deux temps : extraction des motifs fréquents puis dérivation des règles.

Motifs fréquents

frequent.png


































Deux modes de calcul sont proposés ici. Le premier (en haut) utilise le langage Clips pour l'extraction, dans un but pédagogique.
paramFreqClips.png
Le second utilise un programme C++ spécialement développé pour l'extraction des motifs delta-libres et de leurs fermetures. On obtient les motifs fréquents en fixant un delta négatif (option -d -1).
paramFrequent.png




















Dans les deux cas, un paramètre minsup fixe le seuil minimal de fréquence pour l'extraction. Chacun des traitements est également précédé ou succédé par un filtre sed ou awk.


Calcul des règles

Ce travail est confié à un programme Clips. Le paramètre minconf précise la confiance minimale requise pour les règles.

regles.png




























Modèle


La dernière étape concerne l'assemblage des parties précédentes à l'aide de macro-composants : répartition en fichier d'apprentissage et de test, calcul du modèle sur l'ensemble d'apprentissage.
modele.png


































Application du modèle


Le modèle est appliqué à l'échantillon de test et affiche les objets avec une valeur de classe.
classeur.png




















Calcul du score

Le score de classification est obtenu en comparant les deux premières colonnes du fichier original et du résultat de la classification. Ce score indique la proportion d'instances bien classées.


fscore2.png









































« June 2011 »
Su Mo Tu We Th Fr Sa
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
 

Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: