Fouille de Données et Média Sociaux -...

18
Preprocessing de textes Données Evaluation Fouille de Données et Média Sociaux Vincent Guigue UPMC - LIP6 Vincent Guigue Textes & Python 1/17

Transcript of Fouille de Données et Média Sociaux -...

Page 1: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Fouille de Données et Média Sociaux

Vincent GuigueUPMC - LIP6

Vincent Guigue Textes & Python 1/17

Page 2: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Organisation de l’UE

Outils pour la fouille de données, application sur des média sociaux

◦ Partie 1 (Vincent Guigue)Sem. 1 2 3 4Cours Intro Dataiku Texte avancé recoTME BOW + classif Dataiku word2vec, lda facto. mat.Sem. 5 6 7Cours J. Loncelle (Klesia)TME à définir

◦ Partie 2 (Sylvain Lamprier)- Classification dans les graphes- Diffusion dans les réseaux- Architectures Big Data (Talend)

Vincent Guigue Textes & Python 2/17

Page 3: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Evaluation de l’UE

◦ 25% Rapport 1 (50/50 : travail en TP/rapport)◦ 25% Rapport 2◦ 50% Examen

Vincent Guigue Textes & Python 3/17

Page 4: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Manipulation des données textuellesutilisation de Python

Vincent GuigueUPMC - LIP6

Vincent Guigue Textes & Python 4/17

Page 5: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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

Vincent Guigue Textes & Python 5/17

Page 6: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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 desdonnées de grande dimensionOn cherche des heuristiques pour supprimer les motsinutiles.

Vincent Guigue Textes & Python 5/17

Page 7: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Sacs de mots

Ne sachant pas prendre efficacement en compte la structure desphrases... On l’élimine totalement !Un document devient alors un comptage des différents mots qui lecomposent :

Représentation bag of words

Soit V le vocabulaire et d un document : d ∈ N|V |

NB : d est (presque toujours) un vecteur sparse, c’est à direcomposé essentiellement de 0.

Vincent Guigue Textes & Python 6/17

Page 8: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Sur un exemple (crédit Sergio Jimenez)

Vincent Guigue Textes & Python 7/17

Page 9: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Elimination du bruit : mots similaires

Etant donnée la représentation en sac de mots, il est pénalisant decompter les occurrences de président et présidents dans deux casesséparées... Nous allons donc traiter les mots du textes pour lesramener à 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 approximatifcf outils fournis dans le projet

Vincent Guigue Textes & Python 8/17

Page 10: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Traitements discriminants : réduction de ladimensionnalité

Les algorithmes de machine learning sont mis en difficulté sur lesproblèmes de grandes dimensions... Nous cherchons donc à réduirela 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...)

Vincent Guigue Textes & Python 9/17

Page 11: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Traitements discriminants

Le codage tf-idf permet de faire apparaître les mots saillants,caractéristiques d’un document.Soit le document dj tiré de l’ensemble D, ni ,j désigne le nombred’occurrences du mot ti dans dj :

tfi,j =ni ,j∑k nk,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 codage ni ,j par le codage tf − idf(i , j) = tfi,j × idfihttp://fr.wikipedia.org/wiki/TF-IDF

Vincent Guigue Textes & Python 10/17

Page 12: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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 surlequel travailler.Parmi les classiques :

◦ Saillance : Stf−idf (i) =∑

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

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

pi (1−qi )qi (1−pi ) . (souvent utilisé

en log). Où pi est la probabilité d’observer le mot ti dans laclasse 1 et qi est la probabilité d’observer ti dans la classe 2.

Vincent Guigue Textes & Python 11/17

Page 13: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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 → MitterrandDonnées de test, sans les étiquettes :

<100:1> Quand je dis chers amis, ...<100:2> D’abord merci de cet ......

Vincent Guigue Textes & Python 12/17

Page 14: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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

Crédit : Sergio Jimenez

Vincent Guigue Textes & Python 13/17

Page 15: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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

Crédit : Sergio Jimenez

Vincent Guigue Textes & Python 14/17

Page 16: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

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

Crédit : Sergio JimenezVincent Guigue Textes & Python 15/17

Page 17: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Comment évaluer les performances ?

◦ Métriques d’évaluation- Taux de reconnaissance Ncorrect

Ntot

- Précision (dans la classe c) Nccorrect

Ncpredits

- Rappel (dans la classe c) (=couverture) Nccorrect

Nctot

- F1 (1+β2)precision·rappelβ2precision+rappel

- ROC (faux pos VS vrai pos) / AUC◦ Procédures

- Apprentissage/test

- Validation croisée- Leave-one-out

Vincent Guigue Textes & Python 16/17

Page 18: Fouille de Données et Média Sociaux - webia.lip6.frwebia.lip6.fr/~guigue/wikihomepage/uploads/Course/... · Manipulation des données textuelles utilisation de Python VincentGuigue

Preprocessing de textes Données Evaluation

Analyse qualitative

Regarder les poids des mots du classifieur :

annoying 37.2593another -8.458any 3.391anyone -1.4651anything -15.5326anyway 29.2124apparently 12.5416...attention -1.2901audience 1.7331audiences -3.7323away -14.9303awful 30.8509

Vincent Guigue Textes & Python 17/17