• Aucun résultat trouvé

Manipulation des données textuelles

N/A
N/A
Protected

Academic year: 2022

Partager "Manipulation des données textuelles"

Copied!
25
0
0

Texte intégral

(1)

Manipulation des données textuelles

utilisation des outils WEKA/JAVA pour le projet AFD

Vincent Guigue UPMC - LIP6

(2)

Traitements pour la classification de textes

Les données textuelles sont difficiles à gérer :

1 Les corpus sont volumineux, le vocabulaire est grand : - il faut des algorithmes rapides,

- les données ne sont pas toujours stockables en mémoire.

2 La structure des phrases est difficile à gérer.

3 Les mots peuvent prendre plusieurs formes (pluriels...)

4 Les algorithmes de machine learning ont du mal sur des données de grande dimension

(3)

Traitements pour la classification de textes Les données textuelles sont difficiles à gérer :

1 Les corpus sont volumineux, le vocabulaire est grand : - il faut des algorithmes rapides,

- les données ne sont pas toujours stockables en mémoire.

Perceptron, SVM (en version rapide), Naive Bayes...

Boosting, Bagging

2 La structure des phrases est difficile à gérer.

On supprime la structure...

3 Les mots peuvent prendre plusieurs formes (pluriels...) Plusieurs approches possibles... (cf plus loin)

4 Les algorithmes de machine learning ont du mal sur des données de grande dimension

On cherche des heuristiques pour supprimer les mots inutiles.

(4)

Sacs de mots

Ne sachant pas prendre efficacement en compte la structure des phrases... On l’élimine totalement !

Un document devient alors un comptage des différents mots qui le composent :

Représentationbag of words

SoitV le vocabulaire etd un document :d ∈N|V|

NB :d est (presque toujours) un vecteursparse, c’est à dire composé essentiellement de 0.

(5)

Sur un exemple (crédit Sergio Jimenez)

(6)

Elimination du bruit : mots similaires

Etant donnée la représentation en sac de mots, il est pénalisant de compter les occurrences deprésidentetprésidentsdans deux cases séparées... Nous allons donc traiter les mots du textes pour les ramener à leurs radicaux :

◦ mangeait, mangera, mangeoire,...→ manger

Lemmatisation : approche basée sur un dictionnaire efficace/il faut un dictionnaire...

Exemple d’outil : treetagger (gratuit, récupérable sur internet)

Stemmatisation : approche statistique de suppression des suffixes rapide, facile à utiliser/ parfois approximatif

cf outils fournis dans le projet

(7)

Traitements discriminants : réduction de la dimensionnalité

Les algorithmes de machine learning sont mis en difficulté sur les problèmes de grandes dimensions... Nous cherchons donc à réduire la dimension des données :

Heuristiques :

◦ Elimination des mots peu fréquents

◦ Elimination des mots courts (articles...)

◦ Elimination de tous les éléments inutiles a priori (chiffres...)

(8)

Traitements discriminants

Le codagetf-idf permet de faire apparaître les motssaillants, caractéristiques d’un document.

Soit le documentdj tiré de l’ensembleD,ni,j désigne le nombre d’occurrences du motti dansdj :

tfi,j= ni,j

P

knk,j, idfi=log |D|

|{d :ti ∈d}|

tfi,j : fréquence de ti dans le document j.

idfi : pourcentage des documents oùti apparaît (log de l’inverse).

On remplace le codageni,j par le codage tf−idf(i,j) =tfi,j×idfi http://fr.wikipedia.org/wiki/TF-IDF

(9)

Traitements discriminants : sélection de va- riables

Il est possible d’utiliser des critères discriminants (donnant un score à chaque mot) pour choisir un sous-ensemble du dictionnaire sur lequel travailler.

Parmi les classiques :

◦ Saillance : Stf−idf(i) =

P

jtf−idf(i,j)

|{tf−idf(i,j)6=0}|

◦ Odds ratio : Sodds(i) = pqi/(1−pi)

i/(1−qi) = pqi(1−qi)

i(1−pi).(souvent utilisé en log). Oùpi est la probabilité d’observer le mot ti dans la classe 1 etqi est la probabilité d’observer ti dans la classe 2.

(10)

Présentation des données

Données d’apprentissage :

<100:1:C> Quand je dis chers amis, ...

<100:2:C> D’abord merci de cet ...

...

<100:14:M> Et ce sentiment ...

Le format est le suivant : <ID-Discours :ID-phrase :Etiquette>, C

→Chirac, M → Mitterrand

Données de test, sans les étiquettes :

<100:1> Quand je dis chers amis, ...

<100:2> D’abord merci de cet ...

...

(11)

Deuxième base de données (Pour s’entrainer)

Crédit : Sergio Jimenez

(12)

Deuxième base de données (Pour s’entrainer)

(13)

Deuxième base de données (Pour s’entrainer)

Crédit : Sergio Jimenez

(14)

Octave vs Weka

◦ Octave ne sait pas gérer une chaine de caractère

◦ Octave ne sait pas faire une boucle for

◦ Octave ne sait pas gérer des grosses masses de données

Octave

Octave est parfait pour comprendre comment fonctionne un

algorithme et le tester, Octave est parfait pour tracer les courbes de résultats et faire des statistiques... Mais Octave ne peut pas traiter convenablement le problème qui nous intéresse maintenant.

Weka propose des algorithmes plus efficaces et des pré-traitements pour le texte... Tout ne sera pas parfait mais c’est une meilleure base de travail.

(15)

Weka (téléchargement)

◦ Télécharger la version linux : http://www.cs.waikato.ac.

nz/ml/weka/index_downloading.html

◦ Lancer le programme :java -Xmx1000M -jar weka.jar

◦ Lancer l’explorer :

(16)

Weka chargement des données Weka accepte les.arff...

◦ Si vous avez un .arff :

- Charger le fichier avec le bouton open ( !) (par exemple essayez aveciris.arff) - Passer dans l’onglet classify

· Choisir un modèle (régression logistique par exemple)

· Choisir un mode d’évaluation

(17)

Weka chargement des données (2)

Si vous avez un répertoire contenant des documents textes, weka sait faire l’importation :

◦ Openpuis choisir le répertoire

◦ Message d’erreur→ choisir un importateur

◦ Choisir TextDirectoryLoader

◦ Et hop !

(18)

Weka chargement des données (3) Si vous n’avez rien de tout cela... Il faut créer un .arff

(19)

Weka chargement des données (4)

Vous devez maitriser un minimum d’expression régulière ET/OU perl pour créer rapidement ce type de fichier

file=corpusu.txt fileout=corpusuPP.arff

head -n5000 data/corpus.tache1.learn > $file

#iconv -f latin1 -t utf8 data/corpus.tache1.learn > $file

sed ’s/"//g;s/<.*C> /C "/g;s/<.*M>/M "/g;s/$/"/g’ $file > $fileout sed -i.bak ’1i\

@relation president\

\

@attribute document_class {M,C}\

@attribute document_content string\

\

@data\

\

’ $fileout

@relation president

@attribute document_class {M,C}

@attribute document_content string

@data

C "Quand je dis chers amis, il ne s’agit pas là d’une formule diplomatique, mais de l’expression de ce que je ressens."

C "D’abord merci de cet exceptionnel accueil que les Congolais, les Brazavillois, nous ont réservé cet après-midi."

(20)

Passer aux sacs de mots

Pour passer au sacs de mots, il faut utiliser un filtre Weka :

Il faut bien comprendre les options car vous devrez jouer avec !

(21)

Sacs de mots...

(22)

Experiences comparatives

(23)

Type de résultats à obtenir :

(24)

Analyse qualitative

Regarder les poids des mots du classifieur :

annoying 37.2593

another -8.458

any 3.391

anyone -1.4651

anything -15.5326

anyway 29.2124

apparently 12.5416

...

attention -1.2901

audience 1.7331

audiences -3.7323

away -14.9303

awful 30.8509

(25)

Compatibilité du dictionnaire !

Dès que l’on a des ensembles d’apprentissage et de test séparés, il faut synchroniser le dictionnaire :

Ce n’est pas prévu dans l’interface ! Il faut passer au code JAVA.

Heureusement, la librairie est bien faite et bien documentée Exemple en ligne.

Références

Documents relatifs

Dans le cadre de ce projet, nous nous sommes concentrés sur l’extraction des descripteurs linguistiques à partir des données textuelles fournies par la société Succeed Together..

A partir de ces expérimentations, nous pouvons conclure que les méthodes de pondérations proposées dans cet article intégrées dans des approches Naive Bayes ou

The main underlying idea of this paper is to derive the error estimates for approximate solutions of problem ( 1.1 )–( 1.5 ) obtained by time and space discretization by using

D’après notre modeste travail, nous constatons que comme tous les algériens, les commerçants à Mostaganem surtout ceux qui vendent les vêtements et le tissu

Immunoprecipitation of DNA ligase I in nuclear and cytoplasmic extracts of Bcl1.1 cells revealed a clear signal at day 0 in both extracts, but the signal completely disappeared at

1. Circumstellar disks subject to high-energy radiation and particles Stellar X-rays may heat circumstellar disks to &gt; 1000 K at AU distances, as suggested by, e.g. 2003) and

En effet, les outils mis à disposition de la communauté sont très souvent conçus pour la langue anglaise, l’applicabilité à d’autres langues étant souvent considérée de

L’application de notre approche sur des tâches de classification automatique de données textuelles montre d’une part, que le passage à l’échelle est amélioré en mémoire et