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
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
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
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 ’)
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
2. Sac de mots (crédit Sergio Jimenez)
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
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,jP
k
n
k,j, idf
i= log |D|
|{d : t
i∈ d }|
D nb documents
n
i,jtf
i,j: occurences & fréquence de t
idans le document j . idf
i: pourcentage des documents où t
iapparaî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
10.33 0 0 0.17 0 0.17 0.17 0.17
tf − doc
20 0.25 0.25 0.25 0.25 0 0 0
http://fr.wikipedia.org/wiki/TF-IDF
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
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
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
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 "]
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
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 "]
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
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 "]
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
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 "]
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
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 "]
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
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 "]
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
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
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 Θ
cpour 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)
xijx
ijdé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=1P
|D|j=1
x
ijlog Θ
jcSolution : Θ
jc=
P
di∈Cxij P
di∈C
P
j∈Dxij
Vincent Guigue Représentation et classification de textes 12/28
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 Θ
cpour 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)
xijx
ijdé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=1P
|D|j=1
x
ijlog Θ
jcSolution : Θ
jc=
P
di∈Cxij P
di∈C
P
j∈Dxij
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 Θ
cpour 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)
xijx
ijdé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=1P
|D|j=1
x
ijlog Θ
jcSolution : Θ
jc=
P
di∈Cxij P
di∈C
P
j∈Dxij
Vincent Guigue Représentation et classification de textes 12/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 Θ
cpour 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)
xijx
ijdé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=1P
|D|j=1
x
ijlog Θ
jcSolution : Θ
jc=
P
di∈Cxij P
di∈C
P
j∈Dxij
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
ijlog(Θ
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
12 0 0 1 0 1 1 1
doc
20 1 1 1 1 0 0 0
- pas d’aspect discriminant
Vincent Guigue Représentation et classification de textes 13/28
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
ijlog(Θ
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
12 0 0 1 0 1 1 1
doc
20 1 1 1 1 0 0 0
- pas d’aspect discriminant
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
11x
12· · · x
1d.. .
x
N1x
N2· · · x
Nd
Un document x
i∈ R
d◦ Décision linéaire :
- Décision linéaire simple :
f (x
i) = x
iw = X
j
x
ijw
j- Régression logistique :
f (x
i) = 1
1 + exp(−(x
iw + b))
◦ Mode de fonctionnement bi-classe (extension par un-contre-tous)
Vincent Guigue Représentation et classification de textes 14/28
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
11x
12· · · x
1d.. .
x
N1x
N2· · · x
Nd
Un document x
i∈ R
d◦ Décision linéaire :
- Décision linéaire simple :
f (x
i) = x
iw = X
j
x
ijw
j- Régression logistique :
f (x
i) = 1
1 + exp(−(x
iw + b))
un-contre-tous)
Classifieur linéaire, mode de décision
◦ Données en sacs de mots, différents codages possibles :
X =
x
11x
12· · · x
1d.. .
x
N1x
N2· · · x
Nd
Un document x
i∈ R
d◦ Décision linéaire :
- Décision linéaire simple :
f (x
i) = x
iw = X
j
x
ijw
j- Régression logistique :
f (x
i) = 1
1 + exp(−(x
iw + b))
◦ Mode de fonctionnement bi-classe (extension par un-contre-tous)
Vincent Guigue Représentation et classification de textes 14/28
Formulations et contraintes
◦ Formulation
- Maximisation de la vraisemblance (y
i∈ {0, 1}) : L = Π
Ni=1P(y
i= 1|x
i)
yi× [1 − P(y
i= 1|x
i)]
1−yiL
log=
N
X
i=1
y
ilog(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)
2C =
N
X
i=1
(−y
if (x
i))
+◦ Passage à l’échelle : technique d’optimisation, gradient stochastique, calcul distribué
◦ Fléau de la dimensionnalité...
Fléau de la dimensionnalité
X =
x
11x
12· · · x
1d.. .
x
N1x
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
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...
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
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
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
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
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
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
iest la probabilité d’observer le mot t
idans la classe 1 et q
iest la probabilité d’observer t
idans la classe 2.
- Critère(s) de Fisher, Mallows... Notion de séparabilité
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
ilog(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
if (x
i))
++λkw k
αAvec : kw k
2= P
j
w
j2ou 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
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 ...
...
Revues de films
Crédit : Sergio Jimenez
Vincent Guigue Représentation et classification de textes 22/28
Revues de films
Crédit : Sergio Jimenez
Revues de films
Crédit : Sergio Jimenez
Vincent Guigue Représentation et classification de textes 24/28
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
Comment évaluer les performances ?
◦ Métriques d’évaluation
- Taux de reconnaissance
NNcorrecttot
- 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
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
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