• Aucun résultat trouvé

TAL: traitement automatique de la langue Représentation et classification de textes

N/A
N/A
Protected

Academic year: 2022

Partager "TAL: traitement automatique de la langue Représentation et classification de textes"

Copied!
51
0
0

Texte intégral

(1)

TAL: traitement automatique de la langue Représentation et classification de textes

Vincent Guigue UPMC - LIP6

Vincent Guigue Représentation et classification de textes 1/28

(2)

Chaine de traitements générique

1

Importation d’un corpus - Gestion de différents formats

2

Transformation en sac de mots (+dictionnaire) - Sélection des mots pertinents

3

Apprentissage

- Choix algorithmique OPT Sélection de données

4

Inférence

- Projection de nouvelles données sur le même dictionnaire

(3)

1. Importation des corpus

◦ Maitrise des outils sur les fichiers

◦ Expressions régulières

◦ Outils de sérialisation

◦ Outils paramétriques (nltk)

◦ Gestion du XML (dom, BeautifulSoup)

◦ ... la base de la programmation / documentation

Vincent Guigue Représentation et classification de textes 3/28

(4)

Lecture de fichiers / manipulations de base

◦ Lecture en bloc & pb d’encodage (python 2)

i m p o r t c o d e c s

w i t h c o d e c s .open( f i l e n a m e , e n c o d i n g=" u t f−8") a s f : r e t u r n f . r e a d ( )

◦ Manipulation & expressions régulières

i m p o r t r e s = " b l a b l a b l a "

r e . s u b (" \ s "," ␣ ", r e . s u b (" \ s (?=\ s ) "," ␣ ", s ) )

◦ Chargement/manipulation XML

i m p o r t B e a u t i f u l S o u p f = open(’ tmp . xml ’, ’ r ’) d a t a= f . r e a d ( )

s o u p = B e a u t i f u l S o u p . B e a u t i f u l S o u p ( d a t a )

c o n t e n t s = [ t . t e x t f o r t i n s o u p . f i n d A l l (’ c o n t e n t ’) ] l a b e l = s o u p . f i n d A l l (’ TOPICS ’)

(5)

Manipulations de base (suite)

◦ Chargement automatique (pour les formats adaptés) :

i m p o r t n l t k . c o r p u s . r e a d e r a s p t

r d r = p t . C a t e g o r i z e d P l a i n t e x t C o r p u s R e a d e r ( p a t h 2 d a t a , \

’ .∗/ [ 0−9 ] + ’, e n c o d i n g=’ l a t i n 1 ’, \ c a t _ p a t t e r n=’ ( [ \ w\ . ] + ) /∗’)

d o c s = [ [ r d r . raw ( f i l e i d s =[ f ] ) f o r f i n r d r . f i l e i d s ( c ) ] \ f o r c i n r d r . c a t e g o r i e s ( ) ]

Vincent Guigue Représentation et classification de textes 5/28

(6)

2. Sac de mots (crédit Sergio Jimenez)

(7)

2.1 Codage Outil (exemple)

s k l e a r n . f e a t u r e _ e x t r a c t i o n . t e x t . C o u n t V e c t o r i z e r (i n p u t=’ c o n t e n t ’, e n c o d i n g=’ u t f−8 ’, d e c o d e _ e r r o r=’ s t r i c t ’,

s t r i p _ a c c e n t s=None , l o w e r c a s e=True , p r e p r o c e s s o r=None , t o k e n i z e r=None ,

s t o p _ w o r d s=None , t o k e n _ p a t t e r n=’ ( ? u ) \ b \w\w+\b ’,

ngram_range =(1 , 1 ) , a n a l y z e r=’ word ’, max_df = 1 . 0 , min_df =1 , m a x _ f e a t u r e s=None , v o c a b u l a r y=None ,

b i n a r y=F a l s e , d t y p e=<c l a s s ’ numpy . i n t 6 4 ’>) bow = v e c . f i t _ t r a n s f o r m ( c o r p u s )

t r a n s f o r m e r = t x t . T f i d f T r a n s f o r m e r ( u s e _ i d f=True , s m o o t h _ i d f=True ) b o w t f = t r a n s f o r m e r . f i t _ t r a n s f o r m ( bow )

◦ Présentiel : (0,1)

◦ Frequentiel : [0,1], somme d’un document à 1

◦ Tf-idf (discriminant)

Vincent Guigue Représentation et classification de textes 7/28

(8)

2.2 Codage tf-idf

Le codage tf-idf permet de faire apparaître les mots saillants, caractéristiques d’un document.

tf

i,j

= n

i,j

P

k

n

k,j

, idf

i

= log |D|

|{d : t

i

∈ d }|

D nb documents

n

i,j

tf

i,j

: occurences & fréquence de t

i

dans le document j . idf

i

: pourcentage des documents où t

i

apparaît (log de l’inverse).

1 le bonheur est dans le pré 2 la mélodie du bonheur

le la du bonheur melodie est dans pre

idf 0 0.69 0.69 0 0.69 0.69 0.69 0.69

tf − doc

1

0.33 0 0 0.17 0 0.17 0.17 0.17

tf − doc

2

0 0.25 0.25 0.25 0.25 0 0 0

http://fr.wikipedia.org/wiki/TF-IDF

(9)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

2.3 Codage, traitement de plus haut niveau Exemples :

◦ Stop Words :

s t o p _ w o r d s = [ ] f o r l i n l a n g u a g e s :

f o r w i n s t o p w o r d s . w o r d s ( l ) :

s t o p _ w o r d s . a p p e n d (w . d e c o d e (’ u t f−8 ’) )

◦ Tokenizer :

from n l t k i m p o r t w o r d _ t o k e n i z e

from n l t k . stem i m p o r t S n o w b a l l S t e m m e r stemmer = S n o w b a l l S t e m m e r (’ f r e n c h ’) d e f t o k e n i z e ( t e x t ) :

t o k e n s = w o r d _ t o k e n i z e ( t e x t )

s t e m s = [ stemmer . stem ( i t e m ) f o r i t e m i n t o k e n s ] r e t u r n s t e m s

Vincent Guigue Représentation et classification de textes 9/28

(10)

2.3 Codage, traitement de plus haut niveau Exemples :

◦ Stop Words :

s t o p _ w o r d s = [ ] f o r l i n l a n g u a g e s :

f o r w i n s t o p w o r d s . w o r d s ( l ) :

s t o p _ w o r d s . a p p e n d (w . d e c o d e (’ u t f−8 ’) )

◦ Tokenizer :

from n l t k i m p o r t w o r d _ t o k e n i z e

from n l t k . stem i m p o r t S n o w b a l l S t e m m e r stemmer = S n o w b a l l S t e m m e r (’ f r e n c h ’) d e f t o k e n i z e ( t e x t ) :

t o k e n s = w o r d _ t o k e n i z e ( t e x t )

s t e m s = [ stemmer . stem ( i t e m ) f o r i t e m i n t o k e n s ] r e t u r n s t e m s

(11)

Codage, sur un exemple

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(12)

Codage, sur un exemple

au aussi

ballade camionsdans durant est et fonctionnent

garage garages girafe jeep l'automobile

la le les lion mais pas pour rouleroulent route safari savane se sur une voiture voitures

0 1 2 3 4 5 6

Par comptage

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(13)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0 2 4 6 8 10 12 14 16 18

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(14)

Codage, sur un exemple

aussi

ballade camions durant fonctionnent

garage garages girafe jeep l'automobile

les lion roule roulent route safari savane voiture voitures

0 1 2 3 4 5 6

Par comptage + élimination StopWords

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(15)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0.0 1.5 3.0 4.5 6.0 7.5 9.0 10.5 12.0 13.5

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(16)

Codage, sur un exemple

,

auss ballad camion dan dur

fonctionnent

garag giraf jeep

l'automobil

lion roul

roulent rout safar savan voitur

0 1 2 3 4 5 6

Par comptage + élimination StopWords + Stemming

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(17)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0.0 0.8 1.6 2.4 3.2 4.0 4.8 5.6 6.4

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(18)

Codage, sur un exemple

,

auss ballad camion dan dur

fonctionnent

garag giraf jeep

l'automobil

lion roul

roulent rout safar savan voitur

0 1 2 3 4 5 6

Par comptage + élimination StopWords + Stemming + TF

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(19)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0.00 0.15 0.30 0.45 0.60 0.75 0.90

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(20)

Codage, sur un exemple

,

auss ballad camion dan dur

fonctionnent

garag giraf jeep

l'automobil

lion roul

roulent rout safar savan voitur

0 1 2 3 4 5 6

Par comptage + élimination StopWords + Stemming + TF + IDF

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(21)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0.00 0.15 0.30 0.45 0.60 0.75 0.90

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(22)

Codage, sur un exemple

, au auss ballad camion dan dur est et

fonctionnent garag giraf jeep

l'automobil

la le lion mais pas pour roul

roulent rout safar savan se sur une voitur

0 1 2 3 4 5 6

Par comptage + Stemming + TF + IDF

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

(23)

Codage, sur un exemple

0 1 2 3 4 5 6

0 1 2 3 4 5 6

0.00 0.15 0.30 0.45 0.60 0.75 0.90

c o r p u s = [" La ␣ v o i t u r e ␣ e s t ␣ au ␣ g a r a g e ", \

"L ’ a u t o m o b i l e ␣ e s t ␣ une ␣ v o i t u r e ", \

" L e s ␣ v o i t u r e s ␣ r o u l e n t ␣ s u r ␣ l a ␣ r o u t e ", \

" L e s ␣ g a r a g e s ␣ f o n c t i o n n e n t ␣ p o u r ␣ l e s ␣ v o i t u r e s e t ␣ l e s ␣ c a m i o n s , ␣ m a i s ␣ p a s ␣ d a n s ␣ l a ␣ s a v a n e ", \

" Le ␣ l i o n ␣ s e ␣ b a l l a d e ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ g i r a f e ␣ e s t ␣ a u s s i ␣ d a n s ␣ l a ␣ s a v a n e ", \

" La ␣ j e e p ␣ r o u l e ␣ d u r a n t ␣ l e ␣ s a f a r i "]

Vincent Guigue Représentation et classification de textes 10/28

(24)

Exemples de tâches

◦ Classification thématique

- classer les news sur un portail d’information, - trier des documents pour la veille sur internet, - présenter les résultats d’une requête

◦ Classification d’auteurs - review spam, - détection d’auteurs

◦ Information pertinente/non pertinente

- filtrage personnalisé (à partir d’exemple), classifieur actif (évoluant au fil du temps)

- spam/non spam

◦ Classification de sentiments

- documents positifs/négatifs, sondages en ligne

(25)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Naive Bayes

◦ Très rapide, interprétable :

le classifieur historique pour les sacs de mots

◦ Modèle génératif :

- ensemble des documents {d

i

}

i=1,...,N

,

- documents = une suite de mots w

j

: d

i

= (w

1

, . . . , w

|di|

). - modèle Θ

c

pour chaque classe de documents.

- max de vraisemblance pour l’affectation

◦ Modélisation naive : P (d

i

c

) = Q

|di|

j=1

P (w

j

c

) = Q

|D|

j=1

P (w

j

c

)

xij

x

ij

décrit le nombre d’apparitions du mot j dans le document i

◦ Notation : P (w

j

c

) ⇒ Θ

jc

,

Résolution de : Θ

c

= arg max

Θ

P

|C| i=1

P

|D|

j=1

x

ij

log Θ

jc

Solution : Θ

jc

=

P

di∈Cxij P

di∈C

P

j∈Dxij

Vincent Guigue Représentation et classification de textes 12/28

(26)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Naive Bayes

◦ Très rapide, interprétable :

le classifieur historique pour les sacs de mots

◦ Modèle génératif :

- ensemble des documents {d

i

}

i=1,...,N

,

- documents = une suite de mots w

j

: d

i

= (w

1

, . . . , w

|di|

).

- modèle Θ

c

pour chaque classe de documents.

- max de vraisemblance pour l’affectation

P (d

i

c

) = Q

|di|

j=1

P (w

j

c

) = Q

|D|

j=1

P (w

j

c

)

xij

x

ij

décrit le nombre d’apparitions du mot j dans le document i

◦ Notation : P (w

j

c

) ⇒ Θ

jc

,

Résolution de : Θ

c

= arg max

Θ

P

|C| i=1

P

|D|

j=1

x

ij

log Θ

jc

Solution : Θ

jc

=

P

di∈Cxij P

di∈C

P

j∈Dxij

(27)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Naive Bayes

◦ Très rapide, interprétable :

le classifieur historique pour les sacs de mots

◦ Modèle génératif :

- ensemble des documents {d

i

}

i=1,...,N

,

- documents = une suite de mots w

j

: d

i

= (w

1

, . . . , w

|di|

).

- modèle Θ

c

pour chaque classe de documents.

- max de vraisemblance pour l’affectation

◦ Modélisation naive : P (d

i

c

) = Q

|di|

j=1

P (w

j

c

) = Q

|D|

j=1

P (w

j

c

)

xij

x

ij

décrit le nombre d’apparitions du mot j dans le document i

◦ Notation : P (w

j

c

) ⇒ Θ

c

,

Résolution de : Θ

c

= arg max

Θ

P

|C| i=1

P

|D|

j=1

x

ij

log Θ

jc

Solution : Θ

jc

=

P

di∈Cxij P

di∈C

P

j∈Dxij

Vincent Guigue Représentation et classification de textes 12/28

(28)

Naive Bayes

◦ Très rapide, interprétable :

le classifieur historique pour les sacs de mots

◦ Modèle génératif :

- ensemble des documents {d

i

}

i=1,...,N

,

- documents = une suite de mots w

j

: d

i

= (w

1

, . . . , w

|di|

).

- modèle Θ

c

pour chaque classe de documents.

- max de vraisemblance pour l’affectation

◦ Modélisation naive : P (d

i

c

) = Q

|di|

j=1

P (w

j

c

) = Q

|D|

j=1

P (w

j

c

)

xij

x

ij

décrit le nombre d’apparitions du mot j dans le document i

◦ Notation : P (w

j

c

) ⇒ Θ

jc

,

Résolution de : Θ

c

= arg max

Θ

P

|C| i=1

P

|D|

j=1

x

ij

log Θ

jc

Solution : Θ

jc

=

P

di∈Cxij P

di∈C

P

j∈Dxij

(29)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Naive Bayes (suite)

◦ Très simple à calculer (possibilité de travailler directement en base de données)

◦ Naturellement multi-classes, inférence : arg max

c

|D|

X

j=1

x

ij

log(Θ

jc

)

Performance intéressante... Mais améliorable

◦ Extensions :

- Robustesse : Θ

jc

=

P

di∈Cmxij+α P

di∈Cm

P

j∈Dxij+α|D|

- Mots fréquents (stopwords) ... Bcp d’importance dans la décision

le la du bonheur melodie est dans pre

doc

1

2 0 0 1 0 1 1 1

doc

2

0 1 1 1 1 0 0 0

- pas d’aspect discriminant

Vincent Guigue Représentation et classification de textes 13/28

(30)

Naive Bayes (suite)

◦ Très simple à calculer (possibilité de travailler directement en base de données)

◦ Naturellement multi-classes, inférence : arg max

c

|D|

X

j=1

x

ij

log(Θ

jc

)

Performance intéressante... Mais améliorable

◦ Extensions :

- Robustesse : Θ

jc

=

P

di∈Cmxij+α P

di∈Cm

P

j∈Dxij+α|D|

- Mots fréquents (stopwords) ... Bcp d’importance dans la décision

le la du bonheur melodie est dans pre

doc

1

2 0 0 1 0 1 1 1

doc

2

0 1 1 1 1 0 0 0

- pas d’aspect discriminant

(31)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Classifieur linéaire, mode de décision

◦ Données en sacs de mots, différents codages possibles :

X =

x

11

x

12

· · · x

1d

.. .

x

N1

x

N2

· · · x

Nd

Un document x

i

R

d

◦ Décision linéaire :

- Décision linéaire simple :

f (x

i

) = x

i

w = X

j

x

ij

w

j

- Régression logistique :

f (x

i

) = 1

1 + exp(−(x

i

w + b))

◦ Mode de fonctionnement bi-classe (extension par un-contre-tous)

Vincent Guigue Représentation et classification de textes 14/28

(32)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Classifieur linéaire, mode de décision

◦ Données en sacs de mots, différents codages possibles :

X =

x

11

x

12

· · · x

1d

.. .

x

N1

x

N2

· · · x

Nd

Un document x

i

R

d

◦ Décision linéaire :

- Décision linéaire simple :

f (x

i

) = x

i

w = X

j

x

ij

w

j

- Régression logistique :

f (x

i

) = 1

1 + exp(−(x

i

w + b))

un-contre-tous)

(33)

Classifieur linéaire, mode de décision

◦ Données en sacs de mots, différents codages possibles :

X =

x

11

x

12

· · · x

1d

.. .

x

N1

x

N2

· · · x

Nd

Un document x

i

R

d

◦ Décision linéaire :

- Décision linéaire simple :

f (x

i

) = x

i

w = X

j

x

ij

w

j

- Régression logistique :

f (x

i

) = 1

1 + exp(−(x

i

w + b))

◦ Mode de fonctionnement bi-classe (extension par un-contre-tous)

Vincent Guigue Représentation et classification de textes 14/28

(34)

Formulations et contraintes

◦ Formulation

- Maximisation de la vraisemblance (y

i

∈ {0, 1}) : L = Π

Ni=1

P(y

i

= 1|x

i

)

yi

× [1 − P(y

i

= 1|x

i

)]

1−yi

L

log

=

N

X

i=1

y

i

log(f (x

i

)) + (1 − y

i

) log(1 − f (x

i

)) - Minimisation d’un coût (y

i

∈ {−1, 1}) :

C =

N

X

i=1

(f (x

i

) − y

i

)

2

C =

N

X

i=1

(−y

i

f (x

i

))

+

◦ Passage à l’échelle : technique d’optimisation, gradient stochastique, calcul distribué

◦ Fléau de la dimensionnalité...

(35)

Fléau de la dimensionnalité

X =

x

11

x

12

· · · x

1d

.. .

x

N1

x

N2

· · · x

Nd

◦ d = 10

5

, N = 10

4

...

◦ Distribution des mots en fonction de leurs fréquences :

0 50 100nb occurences150 200 250 300

0 2 4 6 8 10 12

log nb mots

◦ Construire un système pour bien classer tous les documents proposés

Vincent Guigue Représentation et classification de textes 16/28

(36)

Repr. de doc. Classification de documents Données (exemples) Evaluation/outils

Fléau de la dimensionnalité (suite)

◦ Il est souvent (toujours) possible de trouver des mots qui n’apparaissent que dans l’une des classes de documents...

◦ Il suffit de se baser dessus pour prendre une décision parfaite...

jusqu’ici ? ? ?

Une experience amusante :

◦ Reprendre un jeu de données étudié en MAPSI,

◦ Ajouter des colonnes (=descripteurs) pour les données en tirant des variables aléatoires

◦ Les performances en apprentissage s’améliorent !

◦ Mais les performances en test baissent...

(37)

Fléau de la dimensionnalité (suite)

◦ Il est souvent (toujours) possible de trouver des mots qui n’apparaissent que dans l’une des classes de documents...

◦ Il suffit de se baser dessus pour prendre une décision parfaite...

◦ Mais ces mots apparaissent ils dans les documents non vus jusqu’ici ? ? ?

Une experience amusante :

◦ Reprendre un jeu de données étudié en MAPSI,

◦ Ajouter des colonnes (=descripteurs) pour les données en tirant des variables aléatoires

◦ Les performances en apprentissage s’améliorent !

◦ Mais les performances en test baissent...

Vincent Guigue Représentation et classification de textes 17/28

(38)

Curse of dimensionality Données :

6 4 2 0 2 4 6

6 4 2 0 2 4 6

0 5 10 15 20

0

5

10

15

+ ajout de dimensions aléatoires

= évolution des perf.

0 20 40 60 80 100 120 140 160 180

Dim. sup.

0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00

Tx reco

(39)

Réduire la dimensionnalité des données

◦ Regrouper les mots similaires

◦ Utiliser des heuristiques/ressources linguistiques

◦ Sélectionner l’information discriminante

Vincent Guigue Représentation et classification de textes 19/28

(40)

Réduire la dimensionnalité des données

◦ Regrouper les mots similaires

Etant donnée la représentation en sac de mots, il est (parfois) pénalisant de compter les occurrences de président et

présidents dans 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

◦ Utiliser des heuristiques/ressources linguistiques

◦ Sélectionner l’information discriminante

(41)

Réduire la dimensionnalité des données

◦ Regrouper les mots similaires

◦ Utiliser des heuristiques/ressources linguistiques - Elimination des mots peu fréquents

- Elimination des mots courts (articles...)

- Elimination de tous les éléments inutiles a priori (chiffres...) - Elimination des stopwords (listes multilingues disponibles dans

nltk)

◦ Sélectionner l’information discriminante

Vincent Guigue Représentation et classification de textes 19/28

(42)

Réduire la dimensionnalité des données

◦ Regrouper les mots similaires

◦ Utiliser des heuristiques/ressources linguistiques

◦ Sélectionner l’information discriminante

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 : S

tf−idf

(i ) =

P

jtf−idf(i,j)

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

(mot i, doc j ) - Odds ratio : S

odds

(i) =

pqi/(1−pi)

i/(1−qi)

=

pqi(1−qi)

i(1−pi)

. (souvent utilisé en log). Où p

i

est la probabilité d’observer le mot t

i

dans la classe 1 et q

i

est la probabilité d’observer t

i

dans la classe 2.

- Critère(s) de Fisher, Mallows... Notion de séparabilité

(43)

Régularisation Idée :

Ajouter un terme sur la fonction coût (ou vraisemblance) pour pénaliser le nombre (ou le poids) des coefficients utilisés pour la décision

L

log

=

N

X

i=1

y

i

log(f (x

i

)) + (1 − y

i

) log(1 − f (x

i

))−λkw k

α

C =

N

X

i=1

(f (x

i

) − y

i

)

2

+λkw k

α

, C =

N

X

i=1

(−y

i

f (x

i

))

+

+λkw k

α

Avec : kw k

2

= P

j

w

j2

ou kw k

1

= P

j

|w

j

|

◦ Etude de la mise à jour dans un algorithme de gradient

◦ On se focalise sur les coefficients vraiment important

Vincent Guigue Représentation et classification de textes 20/28

(44)

Locuteurs, Chirac/Mitterrand

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 ...

...

(45)

Revues de films

Crédit : Sergio Jimenez

Vincent Guigue Représentation et classification de textes 22/28

(46)

Revues de films

Crédit : Sergio Jimenez

(47)

Revues de films

Crédit : Sergio Jimenez

Vincent Guigue Représentation et classification de textes 24/28

(48)

Compétition

UE TAL :

Obligation de participer à une mini-compétition sur les 2 jeux de données

⇒ Buts :

◦ Traiter des données textuelles ( !)

◦ Travail minimum d’optimisation des classifieurs

◦ Post-traitements & interactions (minimales) avec un système

externe

(49)

Comment évaluer les performances ?

◦ Métriques d’évaluation

- Taux de reconnaissance

NNcorrect

tot

- Précision (dans la classe c)

NNcorrectcc predits

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

NNcorrectcc tot

- 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 Représentation et classification de textes 26/28

(50)

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

(51)

Ressources (python)

◦ nltk

- Corpus, ressources, listes de stopwords

- quelques classifieurs (mais moins intéressant que sklearn)

◦ gensim

- Très bonne implémentation (rapide)

- Outils pour la sémantique statistique (cours suivants)

◦ sklearn

- Boite à outils de machine learning (SVM, Naive Bayes, regression logistique ...)

- Evaluations diverses

- Quelques outils pour le texte (simples mais pas très optimisés)

Vincent Guigue Représentation et classification de textes 28/28

Références

Documents relatifs

!  et insistent justement sur ce qui contredit les règles normatives mais est employé par les locuteurs. !  « J’aime pas les photos que

§ Tâche de base pour l’analyse automatique d’un texte:. § Segmenter le texte

Models with even modestly sized auxiliary input represen- tations are considerably harder to train than a typical un- supervised character model.. To overcome this problem, we

is the number of times words assigned to topic j and sentiment label k, N j,k,d is the number of times a word from document d has been associated with topic j and sentiment label k,

contenus de cours et la verbalisation métacognitive de jugements de compréhension, afin d’obtenir une perspective complète du niveau de compréhension et de générer des

automatique par champ générique et genre discursif, nous devons identifier les propriétés adaptées pour décrire les genres discursifs du domaine journalistique,

Certains éléments de contenu de ce cours constituent un préalable pour les cours de chimie générale et organique et certains autres seront utiles pour les cours

Pro & Cons X État de l’art en TAL sur de nombreuse tâches, mais proche d’autres méthodes d’apprentissage X ouverture vers d’autres tâches approches moins supervisées