Vous êtes sur la page 1sur 33

Traitement Automatique du Langage Naturel

(NLP)

Master
Big Data et Intelligence Artificielle appliquée à la santé

Ecole Supérieure de Génie Biomédical


UM6SS – Casablanca

Pr. Abderrahim El Qadi


Département Mathématique Appliquée et Génie Informatique
ENSAM, Université Mohammed V de Rabat
A.U. 2022/2023

NLP -82- A. El Qadi


Partie 2 :
6. Word Embeddings:
6.1 Word2vec
i. CBOW (Continuous Bag of words)
ii. Skip Gram model
6.2 GloVe: Global Vectors for Word Representation

NLP -83- A. El Qadi


Références
– Natural Language Processing in Action. Understanding, analyzing, and generating text with Python.
HOBSON LANE, COLE HOWARD, HANNES MAX HAPKE. ©2019 by Manning Publications.
– Learning Deep Learning THEORY AND PRACTICE OF NEURAL NETWORKS, COMPUTER
VISION, NATURAL LANGUAGE PROCESSING, AND TRANSFORMERS USING
TENSORFLOW. MAGNUS EKMAN. Copyright © 2022 NVIDIA Corporation
– Natural Language Processing Recipes Unlocking Text Data with Machine Learning and Deep Learning
using Python. Akshay Kulkarni, Adarsha Shivananda. Apress 2019
– Deep Learning for Natural Language Processing Creating Neural Networks with Python. Palash Goyal
Sumit Pandey, Karan Jain. Apress 2018
– Natural Language Processing in Action, Understanding, analyzing, and generating text with Python
HOBSON LANE, COLE HOWARD, HANNES MAX HAPKE. 2019
– Natural Language Processing (NLP) : Définition et principes (https://datascientest.com/introduction-
au-nlp-natural-language-processing)
– Vers la science des données (towardsdatascience.com)
– https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/
– https://larevueia.fr/latent-dirichlet-allocation-topic-modeling-en-python/
– https://www.analyticsvidhya.com/blog/2021/06/part-2-topic-modeling-and-latent-dirichlet-
allocation-lda-using-gensim-and-sklearn/
– https://datascience.eu/fr/traitement-du-langage-naturel/comprendre-le-bert/
– Word2vec : NLP & Word Embedding - DataScientest

NLP -84- A. El Qadi


6. Word Embeddings (Incorporations de mots)
– Les Word Embeddings (Incorporations de mots ou Vecteurs de
mots) permettent de capturer les relations sémantiques entre les
mots et de réduire l’impact des mots fonctionnels (to, this, it, of
etc.) qui sont utilisés plus souvent que les termes significatifs.
– Lors de la construction d’un espace d’incorporation de mots, l’objectif
est généralement de capturer une sorte de relation dans cet espace, qu’il
s’agisse de signification, de morphologie, de contexte ou d’un autre type
de relation.

NLP -85- A. El Qadi


– Les Word Embeddings peuvent être amenés à effectuer des
tâches étonnantes telles que :
• Trouver le degré de similarité entre deux mots.
model.similarity('woman','man')
Resultat: 0.737
• Trouver l'intrus.
model.doesnt_match('breakfast cereal dinner lunch';.split())
Resultat: 'cereal'
• Des choses incroyables comme woman+king-man =queen
model.most_similar(positive=['woman','king'],negative=['man'],
topn=1)
Resultat: queen: 0.508

NLP -86- A. El Qadi


6.1. Word2Vec (word-to-vector)
– Word2Vec est un mot générique pour les deux architectures de
réseaux de neurones, Skip-Gram et Continuous Bag-of-Words
(CBOW), proposées par Mikolov et al, 2013.
– Word2Vec est une implémentation basée sur un réseau de
neurones qui apprend des représentations vectorielles distribuées
des mots sur la base d'un sac de mots continu.
– Les mots ayant une signification similaire auront des
représentations vectorielles proches les unes des autres dans
l’espace d’incorporation

NLP -87- A. El Qadi


– Exemple de représentation vectorielle (sac de mots) du corpus :
corpus = [
'This is the first document.', and document first is one second the third this
'This is the second document.', d1 0 1 1 1 0 0 1 0 1
'And the third one.',
d2 0 1 0 1 0 2 1 0 1
'Is this the first document?',
] d3 1 0 0 0 1 0 1 1 0
d4 0 1 1 1 0 0 1 0 1

• Au lieu d’avoir un vecteur d’entité pour chaque document avec une


longueur égale, maintenant chaque jeton (mot) devient un vecteur
avec la longueur d’un nombre que vous déterminez (généralement
100-1000).
vocab_size embed_dim
• Au lieu de vectoriser un jeton (mot) lui-même, Word2Vec vectorise
le contexte du jeton en considérant les jetons voisins.

– Word2vec aide à réduire la taille de l'espace d'encodage et compresse


la représentation des mots à la longueur souhaitée pour le vecteur.

NLP -88- A. El Qadi


– Word2Vec utilise un réseau neuronal dense avec une seule couche
cachée qui n’a pas de fonction d’activation, qui prédit un jeton (mot)
codé à chaud donné un autre jeton codé à chaud.
• Pour entraîner le modèle, la couche d’entrée comprendra le nombre de
neurones égale aux mots du vocabulaire.
• La couche de sortie est une couche softmax qui est utilisée pour additionner
les probabilités obtenues dans la couche de sortie à 1
• La taille de la couche d’entrée et de la couche de sortie reste la même.
• Cependant, la taille de la couche cachée est définie en fonction des vecteurs
des dimensions des mots résultants.

NLP -89- A. El Qadi


– La création de données pour former le réseau neuronal implique
d’assigner chaque mot comme mot central et ses mots voisins comme
mots de contexte.
– Le nombre de mots voisins est défini par une fenêtre, un
hyperparamètre.

Exemple 1 de génération des données, pour une fenêtre=1 (1 mot de


contexte pour chaque mot gauche et droit du mot central)

Les mots colorés en vert sont


les mots centraux, et ceux
colorés en orange sont les
mots de contexte.
Cette opération est répétée pour
chaque document du corpus
(centre, contexte)

NLP -90- A. El Qadi


Exemple 2: Utilisation de la taille de fenêtre de 2 pour sélectionner les
mots de la phrase et entraîner le modèle

Input text Train data (window=2)


This is the first document. (this, is)
(this, the)
This is the first document. (is, this)
(is, the)
(is, first)
This is the first document. (the, this)
(the, is)
(the, first)
(the, document)
… …

C’est un tableau de mots W, si W(i) est l’entrée (mot central), alors


W(i-2), W(i-1), W(i+1) et W(i+2) sont les mots de contexte si la taille
de la fenêtre coulissante est 2.
NLP -91- A. El Qadi
6.1.1. CBOW (Continuous Bag of words)
– L'approche sac de mots continu (CBOW) prédit le mot cible (le mot
de sortie) à partir des mots proches (mots d'entrées)
– Chaque mot est une entrée, et le réseau neuronal prédit le mot qui se
rapporte au contexte.
– Un contexte peut être un seul mot ou un groupe de mots.

NLP -92- A. El Qadi


Architecture du CBOW

NLP -93- A. El Qadi


Exemple : prédiction du mot cible (first) à partir des mots proches (the
et document).

This is the first document

NLP -94- A. El Qadi


Exemple 2 : Supposons le corpus suivant :
C = " Hey, this is sample corpus using only one context word."
Avec une fenêtre de contexte égale 1, le corpus peut être converti en un
ensemble d'apprentissage pour un modèle CBOW comme suit.
Input Output Hey This is sample corpus using only one context word
Hey this Datapoint 1 1 0 0 0 0 0 0 0 0 0
this hey Datapoint 2 0 1 0 0 0 0 0 0 0 0
is this Datapoint 3 0 0 1 0 0 0 0 0 0 0
is sample Datapoint 4 0 0 1 0 0 0 0 0 0 0
sample is Datapoint 5 0 0 0 1 0 0 0 0 0 0
sample corpus Datapoint 6 0 0 0 1 0 0 0 0 0 0
corpus sample Datapoint 7 0 0 0 0 1 0 0 0 0 0
corpus using Datapoint 8 0 0 0 0 1 0 0 0 0 0
using corpus Datapoint 9 0 0 0 0 0 1 0 0 0 0
using only Datapoint 10 0 0 0 0 0 1 0 0 0 0
only using Datapoint 11 0 0 0 0 0 0 1 0 0 0
only one Datapoint 12 0 0 0 0 0 0 1 0 0 0
one only Datapoint 13 0 0 0 0 0 0 0 1 0 0
one context Datapoint 14 0 0 0 0 0 0 0 1 0 0
context one Datapoint 15 0 0 0 0 0 0 0 0 1 0
context word Datapoint 16 0 0 0 0 0 0 0 0 1 0
word context Datapoint 17 0 0 0 0 0 0 0 0 0 1

La matrice à droite contient le one-hot encodé à partir des données d'entrées à


gauche.
NLP -95- A. El Qadi
– La matrice est envoyée dans un réseau neuronal peu profond à trois
couches.
Input
Hey
this
is
sample
corpus
using
only
one
context
word

 Ici Nombre de variables V=10


 Nombre de neurones dans la couche cachée N=4
 L'erreur entre la sortie et la cible est calculée et propagée pour réajuster les poids.

NLP -96- A. El Qadi


– La représentation matricielle du réseau neuronal pour trois points de
données est :
Input-Hidden
Context Weight Hidden-Activation

1 2 3 4
5 6 7 8
9 10 11 12
C1 this 0 1 0 0 0 0 0 0 0 0 13 14 15 16 5 6 7 8
C2 corpus 0 0 0 0 1 0 0 0 0 0 17 18 19 20 17 18 19 20
C3 context 0 0 0 0 0 0 0 0 1 0 21 22 23 24 33 34 35 36
25 26 27 28
29 30 31 32 Average hidden Activation
33 34 35 36
37 38 39 40 18,333 19,333 20,333 21,333

Exemple montre la probabilité de prédiction d'un mot cible à partir de 3 mots de


contexte.
L'entrée peut être supposée prendre trois vecteurs codés à chaud dans la couche
d'entrée, comme indiqué ci-dessus en rouge, bleu et vert.
CBOW prendra la moyenne de leur encodage à chaud unique et
prédira l’encodage à chaud unique du mot central.

NLP -97- A. El Qadi


Input-Hidden
Context Weight Hidden-Activation

1 2 3 4
5 6 7 8
9 10 11 12
C1 this 0 1 0 0 0 0 0 0 0 0 13 14 15 16 5 6 7 8
C2 corpus 0 0 0 0 1 0 0 0 0 0 17 18 19 20 17 18 19 20
C3 context 0 0 0 0 0 0 0 0 1 0 21 22 23 24 33 34 35 36
25 26 27 28
29 30 31 32 Average hidden Activation
33 34 35 36
37 38 39 40 18,333 19,333 20,333 21,333

• La couche d'entrée aura 3 vecteurs [1 X V] dans l'entrée comme indiqué ci-


dessus et 1 [1 X V] dans la couche de sortie.
• Le vecteur moyen calculé devient l'activation cachée.
• Ainsi, si nous avons trois mots de contexte pour un seul mot cible, nous aurons
trois activations cachées initiales qui sont ensuite moyennées élément par
élément pour obtenir l'activation finale.

NLP -98- A. El Qadi


– Avantages de CBOW :
• Être probabiliste est la nature,
• Il est censé fonctionner de manière supérieure aux méthodes
déterministes (généralement).
• Il n'a pas besoin d'avoir d'énormes besoins en RAM comme celui
de la matrice de cooccurrence où il doit stocker trois énormes
matrices.

– Inconvénients de CBOW :
• CBOW prend la moyenne du contexte d'un mot.
Par exemple, Apple peut être à la fois un fruit et une entreprise,
mais CBOW prend une moyenne des deux contextes et la place
entre un cluster pour les fruits et les entreprises.
• La formation d'un CBOW à partir de zéro peut prendre le temps si
elle n'est pas correctement optimisée.

NLP -99- A. El Qadi


6.1.2. Skip-Gram (SG) model
– Le but de skip-gram est de prédire le contexte des mots (mots
de sorties) à partir d'un mot d'intérêt (mot central)
– C'est un réseau à une seule couche cachée dont l'entrée est un mot
donné dans une phrase issue d'un corpus, et la sortie doit être, par
exemple, les 2 mots précédant le mot cible dans la phrase, et les
2 mots suivant le mot cible.
Les skip-grams sont des n-grams qui
contiennent des lacunes (ignorance
des jetons intermédiaires).
Exemple : prédire le mot « Claude » à
partir du jeton d'entrée « painted », et
ignorer le jeton « Monet ».

NLP -100- A. El Qadi


Architecture du Skip Gram

NLP -101- A. El Qadi


Exemple: Prediction le context des mots (this et first) à partir du mot (the):
Is this the first document?

NLP -102- A. El Qadi


– Étant donné un mot central, SG le codera à chaud et maximisera les
probabilités des mots de contexte à la sortie. L'erreur est calculée pour
chaque mot de contexte puis additionnée.
Exemple: corpus C = " Hey, this is sample corpus using only one context
word."
Construisons les données d'apprentissage
• "Deux" variables cibles encodées à chaud et
"deux" sorties correspondantes.
• Deux erreurs distinctes sont calculées par
rapport aux deux variables cibles et les deux
vecteurs d'erreur obtenus sont ajoutés
élément par élément pour obtenir un
vecteur d'erreur final qui est propagé en
retour pour mettre à jour les poids.
• Les poids entre l'entrée et la couche cachée
sont considérés comme la représentation du
vecteur de mots après l'apprentissage.
• La fonction de perte ou l'objectif est du
même type que le modèle CBOW.
NLP -103- A. El Qadi
La structure de style de la matrice est :
corpus C = " Hey, this is sample corpus using only one context word." output
7,52 7,78 8,04 8,3 8,56 8,82 9,08 9,34 9,6 9,86
Hidden-Activation Hidden-output Weight matrix 7,52 7,78 8,04 8,3 8,56 8,82 9,08 9,34 9,6 9,86
this 5 6 7 8 0,12 0,13 0,14 0,15 0,16 0,17 0,18 0,19 0,2 0,21 softmax
0,22 0,23 0,24 0,25 0,26 0,27 0,28 0,29 0,3 0,31 0,02 0,03 0,04 0,05 0,07 0,09 0,11 0,15 0,19 0,25
0,32 0,33 0,34 0,35 0,36 0,37 0,38 0,39 0,4 0,41 0,02 0,03 0,04 0,05 0,07 0,09 0,11 0,15 0,19 0,25
0,42 0,43 0,44 0,45 0,46 0,47 0,48 0,49 0,5 0,51 Target
hey 1 0 0 0 0 0 0 0 0 0
is 0 0 1 0 0 0 0 0 0 0
• La ligne en rouge est l'activation cachée correspondant au vecteur codé
Erreur
one-hot d'entrée. -
• La matrice jaune est le poids entre la couche cachée et la couche de 0,98 0,03 0,04 0,05 0,07 0,09 0,11 0,15 0,19 0,25
-
sortie. 0,02 0,03 0,96 0,05 0,07 0,09 0,11 0,15 0,19 0,25
• La matrice bleue est obtenue par la multiplication matricielle de Somme des erreurs
l'activation cachée et des poids de sortie cachés. Il y aura deux lignes 0,95 0,06 0,92 0,10 0,13 0,17 0,23 0,29 0,38 0,49
calculées pour deux mots cibles (de contexte).
• Chaque ligne de la matrice bleue est convertie individuellement en ses Dans l'exemple ci-dessus,
probabilités softmax, comme indiqué dans l'encadré vert.
• La matrice grise contient les vecteurs encodés à chaud des deux mots C= 2 : le nombre de mots de contexte,
de contexte (cible). V = 10,
• L'erreur est calculée en soustrayant la première ligne de la matrice grise N=4
(cible) de la première ligne de la matrice verte (sortie) élément par
élément. Softmax :
• Ainsi, pour n mots de contexte cible, nous aurons n vecteurs d'erreur.
• La somme élément par élément est prise sur tous les vecteurs d'erreur
pour obtenir un vecteur d'erreur final. Ce vecteur d'erreur est propagé
pour mettre à jour les poids.
NLP -104- A. El Qadi
– Algorithme Skip Gram
• Pour chaque mot t = 1 ... T, on prédit les mots environnants dans
une fenêtre de « rayon » m. Nous entraînons un modèle
d’apprentissage automatique pour maximiser la probabilité de
n’importe quel mot de contexte étant donné le mot central actuel.

• Minimiser la probabilité logarithmique négative

où P(w_{t+j}|w_{t}) peut être formulé comme une fonction


Softmax.

C’est la probabilité de sortie mot o étant donné le mot central c


NLP -105- A. El Qadi
– Avantages et limites du Word2Vec
• Skip Gram fonctionne bien avec une petite quantité de données de
train et représente bien les mots ou expressions peu fréquents.
Mais cela se fait au prix d’une augmentation des coûts de calcul.

• CBOW est plusieurs fois plus rapide à entraîner que SG avec une
précision légèrement meilleure pour les mots fréquents.

NLP -106- A. El Qadi


Exemple d’implémentation du modèle word2vec en python :
1. Préparation des données : Définition du corpus en tokenisant du texte.
tokenList=
[
['little', 'kitty', 'came', 'play', 'eating', 'restaurant'],
['merley', 'best', 'squooshy', 'kitten', 'belly'],
['google', 'translate', 'app', 'incredible'],
['open', 'tab', 'google', 'get', 'smiley', 'face'],
['best', 'cat', 'photo', 'ever', 'taken'],
['climbing', 'ninja', 'cat'],
['impressed', 'google', 'map', 'feedback'],
['key', 'promoter', 'extension', 'google', 'chrome']
]
2. Générer des données de formation : Construire un vocabulaire de mots,
un encodage à chaud pour les mots, index de mots.
Vocabulary:
{'to', 've', 'has', 'cat', 'merley', 'map', 'play', 'came', 'climbing', 'with', 'feedback', 'if',
'the', 'a', 'at', 'little', 'face', 'open', 'taken', 'key', 'promoter', 'incredible', 'translate',
'chrome', 'get', 'google', 'this', 'squooshy', 'impressed', 'you', 'tab', '100', 'is', 'kitten',
'restaurant', 'ninja', 'smiley', 'belly', 'best', 'app', 'ever', 'for', 'extension', 'i', 'in',
'photo', 'when', 'kitty', 'eating', 'was'}
NLP -107- A. El Qadi
3. Chargement du module Word2vec
from gensim.models.word2vec import Word2Vec

4. Définition des paramètres pour contrôler la formation du modèle


Word2vec, et création d’un modèle vide

from gensim.models.word2vec import Word2Vec


sg(int, optional) #Training algorithm: 1 for skip-gram; otherwise CBOW (default skip-gram)
num_features=20 # correspond à la dimension des embeddings (word vectors)
min_word_count=1 # Ignore tous les mots dont la fréquence totale est inférieure à celle-ci
num_workers=1 #permet de paralléliser les calculs sur le nombre de coeurs logiques voulu
window_size=5 #correspond à la fenêtre de contexte pour le Word2Vec

NLP -108- A. El Qadi


subsampling=1e-3

model = Word2Vec( En fonction de la taille du corpus et les


workers=num_workers, performances du CPU, la formation prendra
vector_size=num_features, beaucoup de temps.
min_count=min_word_count, Pour les corpus plus petits, la formation peut
window=window_size, être complétée en quelques minutes.
sample=subsampling)

5. Création du vocabulaire
model.build_vocab(tokenList)
#print the vocabulary
model.wv.key_to_index
{'google': 0,
'best': 1,
'cat': 2,
'squooshy': 3,
'app': 4,
'translate': 5

}

NLP -109- A. El Qadi


6. Entrainement du modèle
model.train(tokenList,epochs=10,total_examples=len(tokenList))
7. Prédiction
model.wv.most_similar(['google'])
[('face', 0.31560027599334717),
('cat', 0.1549527794122696),
('a', 0.15222321450710297),
('translate', 0.1433444768190384),
('you', 0.13923218846321106),
('climbing', 0.11322615295648575),
('for', 0.10621125251054764),
('ever', 0.10396210104227066),
('is', 0.09570139646530151),
('at', 0.08175598084926605)]
model.wv.most_similar(['cat'])
[('i', 0.21602970361709595),
('play', 0.20414824783802032),
('to', 0.16759219765663147),
('get', 0.156716987490654),
('google', 0.15495280921459198),
('chrome', 0.13201814889907837),
('ninja', 0.12569621205329895),
('photo', 0.11816440522670746),
('face', 0.11235632002353668),
('tab', 0.10963138937950134)]

NLP -110- A. El Qadi


8. Enregistrement du modèle entraîné pour une utilisation ultérieure :
model_name = "word2vec_model"
model.save(model_name)

9. Chargement d'un modèle Word2vec enregistré


from gensim.models.word2vec import Word2Vec
model_name = "word2vec_model"
model = Word2Vec.load(model_name)
model.most_similar(''google'')

NLP -111- A. El Qadi


6.2. GloVe: Global Vectors for Word Representation
– GloVe est une extension de Word2Vec.
– Word2Vec s’appuie sur les statistiques locales (contexte local
entourant le mot) pour dériver la sémantique locale d’un mot,
– La technique GloVe va encore plus loin en combinant les
statistiques locales avec des statistiques globales telles que
l’analyse sémantique latente (matrice de cooccurrence de mots)
pour capturer les relations sémantiques globales d’un mot.
– L'objectif de formation de GloVe est d'apprendre des vecteurs de
mots tels que leur produit scalaire soit égal au logarithme de la
probabilité de cooccurrence des mots.

NLP -112- A. El Qadi


– Il n’y a pas de fonctionnalité de fenêtre pour le contexte local.

• GloVe ne crée qu’une matrice liée au mot à mot, qui inclut la


probabilité P (a | b) de voir le mot a autour du mot b.
• L’objectif principal de cette technique est de trouver la représentation
des deux vecteurs de manière à générer la probabilité logarithmique
de leurs produits ponctuels égale à la cooccurrence.
• Les résultats sont excellents pour relier les mots dans le contexte l’un
à l’autre.

NLP -113- A. El Qadi


Exemple, considérons les probabilités de cooccurrence des mots cibles ice
et steam avec divers mots du vocabulaire.

• Comme on pouvait s'y attendre, le mot ice coexiste plus fréquemment avec le
solide qu'avec le gaz,
• Tandis que le mot steam coexiste plus fréquemment avec le gaz qu'avec le
solide.
• Les deux mots coexistent fréquemment avec leur propriété partagée water, et
les deux coexistent rarement avec le mot sans rapport fashion.
• À partir du rapport des probabilités, nous pouvons observer que les mots non
discriminants (water et fashion) ont un rapport de probabilités
approximativement égal à 1, tandis que les mots discriminatifs (solide et gaz)
ont soit un rapport élevé de probabilités, soit un très faible rapport de
probabilités.
• De cette manière, le rapport des probabilités encode une forme brute de sens
associée au concept abstrait de phase thermodynamique.

NLP -114- A. El Qadi

Vous aimerez peut-être aussi