0% ont trouvé ce document utile (0 vote)
4 vues80 pages

NLP Ai

Le document traite de l'évolution du traitement du langage naturel (NLP) à l'ère de l'intelligence artificielle, en passant par des approches basées sur des règles, des méthodes statistiques et des techniques d'apprentissage profond. Il aborde des concepts clés tels que les réseaux de neurones récurrents, les modèles seq2seq, et l'attention, ainsi que des modèles pré-entraînés comme BERT. Enfin, il mentionne des outils et bonnes pratiques pour appliquer ces techniques dans des projets de NLP.

Transféré par

abdrahimchourfi20
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues80 pages

NLP Ai

Le document traite de l'évolution du traitement du langage naturel (NLP) à l'ère de l'intelligence artificielle, en passant par des approches basées sur des règles, des méthodes statistiques et des techniques d'apprentissage profond. Il aborde des concepts clés tels que les réseaux de neurones récurrents, les modèles seq2seq, et l'attention, ainsi que des modèles pré-entraînés comme BERT. Enfin, il mentionne des outils et bonnes pratiques pour appliquer ces techniques dans des projets de NLP.

Transféré par

abdrahimchourfi20
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

le NLP à l'ére de l'IA.

Pr .BEN LAHMAR EL Habib


Evolution
Le traitement du Langage naturel
1954

L'expérience Georgetown – IBM


Traduction automatique
le 7 janvier 1954
agent conversationnel
1964 -1966
Approche basée sur des règles
 Analyse de la phrase
 Transfert vers le langage destination
 Génération du texte traduit
Nécessite des dictionnaires et des règles

J’ai vu Driss avec des jumelles


Approches statistiques

N-Gram
Machine Learning
 Apprendre à modéliser un problème à partir des données
Apprentissage supervisé
 Observer des exemples et produire des généralisation

Exemples en entrée

Généralisation sur
un nouveau cas
Classification de texte

Comment représenter du texte pour que l’algorithme puisse l’analyser ?


Sac des mots … Bag of Words
 Représenter les mots ou les phrases d’un texte par des vecteurs de
nombres réels, décrits dans un modèle vectoriel (Vector Space Model).

One-Hot Encoding
Exemple
 Phrase 1: Les mangues sont jaunes.
 Phrase 2: Les pommes sont rouges.

[1,0,0,0,0,0] [0,1,0,0,0,0] [0,0,1,0,0,0]

 Si les mots de notre corpus sont {Les, mangues, sont, jaune,


pommes, rouge}.
 la phrase 1 sera représentée par [1,1,1,1,0,0]
 et la phrase 2 sera [1,0,1,0,1,1].
Apprentissage supervisé
 Observer des exemples et produire des généralisation

Exemples en entrée

Généralisation sur
un nouveau cas
Classification
Nouvelle phrase

Prédiction

DataSet labels
Modèles de classification

SVM

Régression logistique
Pré-traitement
 Étiquetage
 Lemmatisation
 Fréquence
 Mots-vide
 …
NLP avec du Deep Learning
Deep learning = learning hierarchical
representations
It's deep if it has more than one stage of non-linear feature transformation

Low-level Mid-level High-level Trainable


feature feature feature classifier

Feature visualization of convolutional net trained on ImageNet from [Zeiler & Fergus 2 01 3 ]
Deep Learning
ANN
2008 - Multi-task learning
 L'apprentissage multitâche est une méthode générale pour
partager des paramètres entre des modèles formés sur
plusieurs tâches.
2013 - Word embeddings
 Hypothèse de base :
 Des mots qui apparaissent dans un contexte similaire ont
tendance à avoir une signification similaire
2013 - Word embeddings
Idée de base

 Créer une tâche difficile


 Pour la résoudre le réseau doit
apprendre une bonne
représentation

 Par exemple : à partir d’un mot


prédire son contexte !?
 => word2vec skip-gram
Word2vec

[Link]
Similarité

[Link]
word2Vec

opérations algébriques
Bag-of-words : Limites
 Exemple
 Je recommande ce produit qui n’est pas mauvais
même vecteur
 Je ne recommande pas ce produit qui est pas mauvais

 L’information temporelle très importante


 Un texte => une séquence temporelle de longueur variable
2013 - Neural networks for NLP
 Recurrent neural networks
RNN

Apprendre des dépendances à long terme


= Propager le gradient loin dans le temps
LSTM
Avec LSTM
Avec LSTM
CNN
CNN
2014 - Sequence-to-sequence models
 Réseau de neurones récurrent qui convertit une séquence de
données d'un domaine en entrée vers une nouvelle séquence
de données dans un autre domaine en sortie.
 Deux réseaux de neurones récurrents, un premier réseau est
un encodeur et le second est un décodeur

Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural
networks. In Advances in Neural Information Processing Systems
Seq2seq
 Le modèle seq2seq a normalement une architecture codeur-
décodeur, composée de:
 Un encodeur traite la séquence d'entrée et compresse les
informations dans un vecteur de contexte (également connu sous
le nom d'incorporation de phrases ou vecteur «pensé»/ sentence
embedding or “thought” vector) d'une longueur fixe . Cette
représentation devrait être un bon résumé de la signification de
la séquence source entière .
 Un décodeur est initialisé avec le vecteur de contexte pour
émettre la sortie transformée. Les premiers travaux utilisaient
uniquement le dernier état du réseau de codeurs comme état
initial du décodeur.
 L'encodeur et le décodeur sont tous deux des réseaux de neurones
récurrents, c'est-à-dire utilisant des unités LSTM ou GRU .
Encodeur – Décodeur
Encodeur – Décodeur (exemple )
Pourquoi ?
 Une critique et un inconvénient et apparent de cette
conception de vecteur de contexte de longueur fixe est
l'incapacité de se souvenir des phrases longue.
 Souvent, il a oublié la première partie une fois qu'il a terminé
le traitement de la totalité de l'entrée.
 Le mécanisme d'attention est né ( Bahdanau et al., 2015 )
pour résoudre ce problème.
Attention
2015 - Attention
 Un mécanisme d’attention permet à un
RNN de porter son attention sur
différentes parties de son entrée [x0 , …,
xT ].
1. Chaque élément de l’entrée est comparé à
l’état courant ht-1, pour générer des
coefficients de pondération αi .
2. La sortie ct (contexte) est une somme
pondérée de tous les éléments de l’entrée
(« Soft Attention »).

Bahdanau, D., Cho, K., & Bengio,Y. (2015). Neural Machine Translation by Jointly
Learning to Align and Translate. In ICLR 2015.
Attention
 Soit une séquence source X de longueur n et essayez de sortir
une séquence cible Y de longueur m:

 L'encodeur est un RNN bidirectionnel (ou tout autre type de


réseau récurrent) avec un état caché vers l'avant et un h
en arrière. Une concaténation simple de deux représente
l'état du codeur. La motivation est d'inclure les mots
précédents et suivants dans l'annotation d'un mot.
Formalisme
 Le réseau du décodeur a un état caché
pour le mot de sortie à la position t, t=1,…,m
où le vecteur de contexte ct est un somme d'états masqués de la
séquence d'entrée, pondérée par les scores d'alignement:
Attention
 l'attention dans le deep learning peut être largement interprétée
comme un vecteur de poids d'importance: afin de prédire
ou de déduire un élément, tel qu'un pixel dans une image ou un
mot dans une phrase, nous estimons à l'aide du vecteur d'attention
comment il est fortement corrélé avec (ou « assiste à » comme
vous avez pu le lire dans de nombreux articles) d'autres éléments
et prend la somme de leurs valeurs pondérées par le vecteur
d'attention comme approximation de la cible.

One word “attends” to other words in the same sentence differently.


Attention
1) Global attention: Uses all hidden states from the encoder to compute the context
vector. This is computationally costly as all words from source are considered for each
target word.
2) Local attention: Chooses a position in the source sentence to determine the window of
words to consider
3) Two-way attention: The same model attends to the hypothesis and premise, and both
representations are concatenated. However, this model can’t differentiate that the
alignment between stop words is less important than alignment between content words.
4) Self-attention: A mechanism relating different positions of a single sequence to
compute its internal representation.
5) Key-value attention: Output vectors are separated into keys to calculate attention and
values to encode the next-word distribution and context representation.
6) Hierarchical-nested attention: Two attention levels - first at the word level and
second at the sentence level. This highlights the highly informative components of a
document.
Attention
aij
 Comment peuvent être calculés les aij. ?
 (Il en existe pas mal) trois grandes familles
 L'attention stricte (hard attention), qui focalise sur un seul
élément du contexte et qui est stochastique (pas de notion de
dérivée, la sélection de l'élément "élu" et la rétro-propagation se
font via des méthodes statistiques, échantillonnages, distributions)
 L'attention "molle" (soft attention), la plus classique.
 L'attention locale qui ne sélectionne que quelques éléments
proches sur lesquels porter l'attention. C'est un hybride entre la
soft et la hard attention.
Soft attention

[Link]
Attention
Attention

 Les traits blues en gras montrent où le RNN mauve (décodeur)


porte son attention dans la séquence générée par le RNN vert
(encodeur).
Modèle profond pré-entraîné : la
révolution de 2018
 Nouvelle approche est similaire à celle utilisée dans le
domaine de la vision par ordinateur
 Entraîner un modèle complet à réaliser une tâche avec
beaucoup de données.
 Puis, se servir de ce modèle pré-entraîné pour réaliser
d’autres tâches, en bénéficiant de l’apprentissage précédent.
 C’est ce que l’on appelle le transfert d’apprentissage.
Transfer Learning
self-attention
 Les mécanismes d'auto-attention (self-attention) sont
similaires, sauf qu'au lieu de s'opérer entre les éléments de
l'encodeur et du décodeur, ils s'opèrent sur les éléments
de l'input entre eux (le présent regarde le passé et le futur) et
de l'output entre eux aussi (le présent regarde le passé, vu que
le futur est encore à générer).
L’architecture Transformer
« Attention is All You Need ! » 2017

La motivation des concepteurs


du Transformer était de pallier
un des principaux inconvénients
des RNN à savoir l’impossibilité
de paralléliser leurs
traitements en raison du
caractère séquentiel des calculs
qu’ils effectuent.

« The animal did not cross the street because it was wide. » ou
« The animal did not cross the street because it was tired. »,
Modèle profond pré-entraîné
 ULMFiT en janvier 2018.
 ELMo en février 2018.
 GPT-2 d’OpenAI en juin 2018.
 BERT de Google en octobre 2018.
Algorithmes basés sur BERT (les plus
connus)
 RoBERTa par Facebook,
 MT-DNN par Microsoft
 XLNet and ALBERT par Google et Toyota. Sorti en septembre
2019
 BERT-mtl par IBM
 Google T5 par Google
 DistilBERT est une version plus petite, légère et rapide de BERT
 FastBERT est une version plus rapide de BERT
 CamemBERT est une version française développée Facebook AI,
Inria et Université de Sorbonne 2019 (trained on 138GB of
French text), dérivée de RoBERTa
BERT
BERT c'est pour Bidirectional Encoder Representations from Transformers.
L’utilisation de deux nouvelles tâches pour le pré-entraînement,
l’une au niveau des mots et l’autre au niveau des phrases.
BERT
 BERT apprend de façon non supervisée
 le modèle va apprendre à prédire ce mot masqué.
 Entrée = [CLS] the man went to [MASK] store [SEP]
 Entrée = [CLS] the man [MASK] to the store [SEP]
 le modèle doit déterminer si la séquence suivante (suivant la
séparation[SEP]) est bien la séquence suivante.
 Entrée = [CLS] the man went to [MASK] store [SEP]
he bought a gallon [MASK] milk [SEP]
Label = IsNext
 Entrée = [CLS] the man [MASK] to the store [SEP]
penguin [MASK] are flight ##less birds [SEP]
Label = NotNext
BERT
BERT
Conclusion

 Est-il possible d’apprendre une langue entièrement à partir


d’un corpus de texte

 « Grounded Language Learning »(Y. Bengio)


 apprendre un langage par expérience sensorielle plutôt que
par la seule lecture….
Part 2:
 Outils
 Bonne pratique
Outils
spacy
 conda install -c conda-forge spacy

 python -m spacy download en

 import spacy
nlp = [Link]('en_core_web_sm')
Tag Description
.text The original word text
.lemma_ The base form of the word
.pos_ The simple part-of-speech tag
.tag_ The detailed part-of-speech tag
.shape_ The word shape – capitalization, punctuation,
digits
.is_alpha Is the token an alpha character?
.is_stop Is the token part of a stop list, i.e. the most
common words of the language?
Exemple
 doc = nlp('"Let\'s go to N.Y.!"')
for token in doc:
print([Link])

 Bni mellal
 Bni ---- mellal
 If you need → dict → tokens
 Ngram
 Bigram
 If; yo ; ou; ne ; ee; ed

 nee ; eed ; ees


 nee d/s
Exemple
Named Entities with spaCy
 sentence = nlp(u'Google's monthly revenue is $6 million')

 for token in sentence:


 print([Link], end=' | ')

 print('
 _______________________________________________
_______')

 for ent in [Link]:


 print([Link]+' - '+ent.label_+' -
'+str([Link](ent.label_)))
Visualizing named entity
 from spacy import displacy
doc = nlp(u'Over last few years USA generates $6
million revenue.')
[Link](doc, style='ent', jupyter=True)
Visualizing the dependency
 from spacy import displacy
 document = nlp(u'Bangladesh is a beautiful country')
 [Link](document, style='dep', jupyter=True,
options={'distance': 110})
Stemming with NLTK
 import nltk
from [Link] import *
p_stemmer = PorterStemmer()
words =
['run','runner','running','ran','runs','easily','fairly']
for word in words:
print(word+' --> '+p_stemmer.stem(word))
Snowball Stemmer
 from [Link] import SnowballStemmer
 s_stemmer = SnowballStemmer(language='english')
 words = ['run','runner','running','ran','runs','easily','fairly']
 for word in words:
 print(word+' --> '+s_stemmer.stem(word))
Lemmatization and POS tagging with
spaCy
 doc = nlp(u"He is a runner running in a competition because
he loves to run since he ran today")

 for token in doc:


 print(f'{[Link]:{12}} {token.pos_:{6}}
{[Link]:<{22}} {token.lemma_}')
Stop Words with spaCy
 import spacy
 nlp = [Link]('en_core_web_sm')
 print([Link].stop_words)
Checking a specific token whether it is
a stop word or not.
 [Link]['myself'].is_stop

 [Link]['mystery'].is_stop
A suivre

Vous aimerez peut-être aussi