SlideShare une entreprise Scribd logo
1  sur  41
ANALYSEDESTWEETSDETWITTER
République du Sénégal
Un peuple-Un but-Une foi
**************************
Agence Nationale de la Statistique et de la
Démographie
*****************************
Ecole nationale de la statistique et de l’analyse
éconmique Pierre Ndiaye
PRESENTATION DU PROJET ii DE NLP
Présenté par:
DEKOU VESSOU
Jeff-Maruis
Sous la supervision
de M.:
M.GOMIS
MARS 2023
01
03
02
04
Introduction
Présentation du dataset
ANALYSE DES SENTIMENTS.
WORD EMBEDDING
Plan de présentation
INTERET DU SUJET
Conclusion
05
06
02/03/2023 3
Introduction
Aujourd’hui, Twitter est utilisé par des centaines de millions de personnes dans le monde entier. Plus
précisément, l'estimation actuelle s'élève à environ 330 millions d'utilisateurs actifs mensuels et 145 millions
d'utilisateurs actifs quotidiens sur Twitter. Autre chiffre intéressant : 63 % des utilisateurs de Twitter dans le
monde ont entre 35 et 65 ans. L’objectif de cet article est de réaliser une analyse exploratoire et visuelle des
tweets présents dans notre jeu de données. Dans un second temps, le but sera de parvenir à classifier à l’aide
de différents modèles disponibles en Python, les sentiments des tweets selon qu’ils soient plutôt positifs,
neutres ou négatifs. Autrement dit réunir sentiment analysis et NLP.
4
PresentationdeNotreDataset
02/03/2023
Comme nous pouvons l’apercevoir, ce jeu de données recensant au total 74681
tweets, contient une colonne intitulée positive [pour le moment] attribuant la
modalité positive si le sentiment du tweet est positif et autres modalités si c’est pas
positif
5
PresentationdeNotreDataset
02/03/2023
-Nous avonsrenommernoscolonnes
-nous allonsvoirlesmotslesplusutilisés
6
PresentationdeNotreDataset
02/03/2023
-Visualisation desmots
#librairies
import pandas as pd
import numpy as np
from PIL import Image
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
7
PresentationdeNotreDataset
02/03/2023
-Visualisation desmots
#Définition des mots à exclure
stopwords = set(STOPWORDS)
stopwords.update(['and', 'or', 'in', 'the', 'I', 'That', 'these', 'those','am'])
# Définition de l'image de masque
#mask = np.array(Image.open('/content/gdrive/My Drive/logo.png'))
# Création du WordCloud
wordcloud = WordCloud(background_color='white', max_words=2000, stopwords=stopwords)
# Génération du nuage de mots
wordcloud.generate(text)
# Affichage du nuage de mots
plt.figure(figsize=(10,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
8
PresentationdeNotreDataset
02/03/2023
-Visualisation desmots
9
PresentationdeNotreDataset
02/03/2023
• #Checking the balance of data
• df['Sentiment'].value_counts().plot(kind='bar')
• Analyse des sentiments
02/03/2023 10
TRAITEMENTS DES DONNEES
from tensorflow.keras.layers import Embedding
import io
import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow . keras . preprocessing . sequence import pad_sequences
import pandas as pd
import nltk
import re
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from tensorflow.keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import LSTM
from tensorflow.keras.layers import Dropout
from tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import accuracy_score
02/03/2023 11
TRAITEMENTS DES DONNEES
 Faire une copie de nos donnees dans df
 Important afin de garder les données initiales en bon etat sans erreurs/tr
aitements plus sécurisé et pas de pertes de base
df=data.copy()
indexes=[]
for i in range(74681):
if(df['Sentiment'][i]=='Irrelevant'):
indexes.append(i)
df=df.drop(indexes,axis=0)
print(df.shape)
#(61691, 4)
 Supressions de irrelevant
 Nous sommes seulement intéressés par positives, negatives et neutre et on supprime irrelevant
02/03/2023 12
TRAITEMENTS DES DONNEES
 nombres de valeurs manquantes si elles existent pour chaque variable
df.isna().sum()
#2401 0
#Borderlands 0
#Sentiment 0
#Tweet 571
#Effacer ces valeurs manquantes
df=df.dropna()
#(61120, 4)
#Transformer nos variables en variables catégorielles
df['Sentiment']=df['Sentiment'].map({'Positive':2,'Neutral':1,'Negative':0})
#Supressions de la colonne 2401 et borderlands
df=df.drop(['2401','Borderlands'],axis=1)
02/03/2023 13
TRAITEMENTS DES DONNEES
 Remarque
#Reset the index
df.reset_index(inplace=True)
02/03/2023 14
TRAITEMENTS DES DONNEES
02/03/2023 15
ANALYSE DES SENTIMENTS
x=df['Tweet']
y=df['Sentiment']
 Choix des données d’entrées
nltk.download('stopwords')
 Telechargements des stops words
 Le code nltk.download('stopwords') télécharge le corpus stopwords de la bibliothèque Natural Language Toolkit (NLT
K). Les stopwords sont des mots couramment utilisés dans une langue mais qui sont généralement considérés comm
e ayant peu de valeur lors de l'analyse de données textuelles. Des exemples de stopwords en français incluent "le", "l
a", "les", "de", "du", "des", etc.
 En téléchargeant le corpus de stopwords, vous pouvez l'utiliser pour supprimer ces mots courants de vos données te
xtuelles. Cela peut être utile pour diverses tâches de traitement du langage naturel, telles que l'analyse de sentiment
ou la modélisation de sujets.
02/03/2023 16
ANALYSE DES SENTIMENTS
x=df['Tweet']
y=df['Sentiment']
 Choix des données d’entrées
nltk.download('stopwords')
 Telechargements des stops words
 Le code nltk.download('stopwords') télécharge le corpus stopwords de la bibliothèque Natural Language Toolkit (NLT
K). Les stopwords sont des mots couramment utilisés dans une langue mais qui sont généralement considérés comm
e ayant peu de valeur lors de l'analyse de données textuelles. Des exemples de stopwords en français incluent "le", "l
a", "les", "de", "du", "des", etc.
 En téléchargeant le corpus de stopwords, vous pouvez l'utiliser pour supprimer ces mots courants de vos données te
xtuelles. Cela peut être utile pour diverses tâches de traitement du langage naturel, telles que l'analyse de sentiment
ou la modélisation de sujets.
02/03/2023 17
ANALYSE DES SENTIMENTS
#Cleaning text data
ps=PorterStemmer()
corpus=[]
for i in range(len(x)):
rev=re.sub('[^a-zA-Z]',' ',df['Tweet'][i])
rev=rev.lower()
rev=rev.split()
rev=[ps.stem(word) for word in rev if not word in stopwords.words('english')]
rev=' '.join(rev)
corpus.append(rev)
 Choix du corpus
 Explication du code
02/03/2023 18
ANALYSE DES SENTIMENTS
 Explication du code
 Le code nous permet d' effectuer le nettoyage des données textuelles à l'aide de l'algorithme de stemming de Porter et
supprime les stopwords de la langue anglaise à l'aide de la bibliothèque NLTK.
 ps=PorterStemmer(): crée une instance de l'algorithme de stemming de Porter de la bibliothèque NLTK.
 corpus=[]: crée une liste vide appelée corpus pour stocker les données textuelles nettoyées.
 for i in range(len(x)):: itère à travers chaque élément dans une liste x (qui n'est pas définie dans l'extrait de code que
vous avez fourni).
 rev=re.sub('[^a-zA-Z]',' ',df['Tweet'][i]): supprime tous les caractères qui ne sont pas des lettres de la chaîne dans la
colonne 'Tweet' du DataFrame df à l'index i.
 rev=rev.lower(): convertit toutes les lettres de la chaîne en minuscules.
 rev=rev.split(): divise la chaîne en une liste de mots.
 rev=[ps.stem(word) for word in rev if not word in stopwords.words('english')]: applique l'algorithme de stemming de
Porter à chaque mot de la liste de mots, et supprime tous les mots qui se trouvent dans le corpus de stopwords de la
langue anglaise de NLTK.
 rev=' '.join(rev): rassemble la liste de mots en une chaîne, séparée par des espaces.
 corpus.append(rev): ajoute la chaîne nettoyée à la liste corpus.
02/03/2023 19
ANALYSE DES SENTIMENTS
 Visualisations et comparaisons
02/03/2023 20
ANALYSE DES SENTIMENTS
 Séquences et padding
02/03/2023 21
ANALYSE DES SENTIMENTS
 Visualisations
02/03/2023 22
ANALYSE DES SENTIMENTS
 Préparation de la base pour la modélisation logistique
#Ecodage du tableau y
#Y en vecteur binaire (1, 0)
y= to_categorical(y)
print(y)
#converting data to numpy array
x_array=np.array(padded)
y_array=np.array(y)
 Convertir en tableau
02/03/2023 23
ANALYSE DES SENTIMENTS
 Séparation de la base en base d’entrainement , de test et de validations
x_train,x_t,y_train,y_t=train_test_split(x_array,y_array,random_state=42)
# les base validation = 35% de la base x_t et y_t et les bases test 65%
x_valid=x_t[:int(x_t.shape[0]*0.35)]
y_valid=y_t[:int(y_t.shape[0]*0.35)]
x_test=x_t[int(x_t.shape[0]*0.35):]
y_test=y_t[int(y_t.shape[0]*0.35):]
02/03/2023 24
ANALYSE DES SENTIMENTS
 Modélisation et entrainement
Nous allons faire à ce niveau un modèle de classification multi classe . Ce type de modèle est
utilisé lorsque les données d'entraînement sont catégorielles et que le modèle doit prédire une ou
plusieurs classes pour chaque échantillon. D’où les précédentes transformations
 Raison de ce choix
-Des bonnes prédictions
-Un bon score
-Mieux que le modèle binaire selon les tests effectués dans mon cas
02/03/2023 25
ANALYSE DES SENTIMENTS
model=Sequential()
model.add(Embedding(vocab_size,embedding_dim,input_length=max_length))
model.add(LSTM(100,return_sequences=True))
model.add(Dropout(0.1))
model.add(LSTM(50))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.summary()
 Modele
02/03/2023 26
ANALYSE DES SENTIMENTS
early_stopping=EarlyStopping(monitor='val_loss',min_delta=0,patience=3,verbose=1)
reduce_lr=ReduceLROnPlateau(monitor='val_loss', factor=0.2, pateince=3,
verbose=1, min_delta=0.0001)callbacks_list=[early_stopping,reduce_lr]
 Contrôle du surapprentissage(a cause du modele multiclasse utilsé surtout)
 Qu’est ce que ce code fait
02/03/2023 27
ANALYSE DES SENTIMENTS
 Contrôle du surapprentissage(a cause du modele multiclasse utilsé surtout)
 EarlyStopping : Cette fonction surveille la perte de validation pendant l'entraînement et arrête le processus d'entraînement plus
tôt si la perte de validation ne s'améliore plus, selon les paramètres spécifiés. Les paramètres utilisés sont les suivants :
•monitor='val_loss' : surveiller la perte de validation
•min_delta=0 : la différence minimale requise pour considérer qu'il y a eu une amélioration de la perte de validation
•patience=3 : le nombre d'époques pour lesquelles la perte de validation ne s'améliore pas avant que l'entraînement ne soit arrêté
•verbose=1 : afficher des messages d'informations pendant l'entraînement
 ReduceLROnPlateau : Cette fonction ajuste le taux d'apprentissage du modèle si la perte de validation ne s'améliore plus
après un certain nombre d'époques, selon les paramètres spécifiés. Les paramètres utilisés sont les suivants :
•monitor='val_loss' : surveiller la perte de validation
•factor=0.2 : le facteur de réduction du taux d'apprentissage (nouveau taux d'apprentissage = taux d'apprentissage actuel *
facteur)
•patience=3 : le nombre d'époques pour lesquelles la perte de validation ne s'améliore pas avant que le taux d'apprentissage ne
soit ajusté
•verbose=1 : afficher des messages d'informations pendant l'entraînement
•min_delta=0.0001 : la différence minimale requise pour considérer qu'il y a eu une amélioration de la perte de validation.
02/03/2023 28
ANALYSE DES SENTIMENTS
 Entrainements
p=model.fit(x_train,
y_train,
batch_size=64,
epochs=30,
verbose=1,
callbacks=callbacks_list,
validation_data=(x_valid,y_valid)
)
02/03/2023 29
ANALYSE DES SENTIMENTS
 Evolution de notre score par rapport aux epoques
plt.plot(h.history['accuracy'],label='Accuracy')
plt.plot(h.history['val_accuracy'],label='Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.legend()
02/03/2023 30
ANALYSE DES SENTIMENTS
 Predication de notre modele
#Predictions on test set
preds=model.predict(x_test)
preds_max=np.argmax(preds,axis=1)
y_test_values=np.argmax(y_test,axis=1)
print(preds_max[:10])
print(y_test_values[:10])
 Verfications entre valeurs prédites et valeurs à observés
02/03/2023 31
ANALYSE DES SENTIMENTS
 Matrice de classifications
 Le score du modèle
print('Accuracy: {:.2f}'.format(accuracy_score(y_test_values, preds_max)))
02/03/2023 32
WORD EMBEDDING
 Embedding
02/03/2023 33
WORD EMBEDDING
 Word Embedding
02/03/2023 34
INTERPRETATION
02/03/2023 35
INTERET DE L’ANALYSE
Date Your Footer Here 36
Date Your Footer Here 37
Date Your Footer Here 38
Date Your Footer Here 39
Date Your Footer Here 40
Date Your Footer Here 41

Contenu connexe

Similaire à ANALYSE DES TWEETS DE TWITTER.pptx

le NLP à l'ére de l'IA
le NLP à l'ére de l'IAle NLP à l'ére de l'IA
le NLP à l'ére de l'IAhabib200
 
Cours
CoursCours
Coursemni1
 
Formation python micro club.net
Formation python micro club.netFormation python micro club.net
Formation python micro club.netZakaria SMAHI
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdfOuailChoukhairi
 
[FR] Introduction à Spring Data Neo4j 3.x
[FR] Introduction à Spring Data Neo4j 3.x[FR] Introduction à Spring Data Neo4j 3.x
[FR] Introduction à Spring Data Neo4j 3.xFlorent Biville
 
Analyse des Sentiments -cas twitter- "Opinion Detection with Machine Lerning "
Analyse des Sentiments  -cas twitter- "Opinion Detection with Machine Lerning "Analyse des Sentiments  -cas twitter- "Opinion Detection with Machine Lerning "
Analyse des Sentiments -cas twitter- "Opinion Detection with Machine Lerning "Soumia Elyakote HERMA
 
Analyse statistique sur DOTA
Analyse statistique sur DOTAAnalyse statistique sur DOTA
Analyse statistique sur DOTABanville Julien
 
Des expériences simples autour du langage
Des expériences simples autour du langageDes expériences simples autour du langage
Des expériences simples autour du langageEric De la Clergerie
 
le web sémantique : un web de métadonnées
le web sémantique : un web de métadonnéesle web sémantique : un web de métadonnées
le web sémantique : un web de métadonnéesABES
 
20150402 meetup r addicts du printemps
20150402  meetup r addicts du printemps20150402  meetup r addicts du printemps
20150402 meetup r addicts du printempsduretteb
 
Visite guidée au pays de la donnée - Traitement automatique des données
Visite guidée au pays de la donnée - Traitement automatique des donnéesVisite guidée au pays de la donnée - Traitement automatique des données
Visite guidée au pays de la donnée - Traitement automatique des donnéesGautier Poupeau
 
Meetup pg recherche fulltext ES -> PG
Meetup pg recherche fulltext ES -> PGMeetup pg recherche fulltext ES -> PG
Meetup pg recherche fulltext ES -> PGLouise Grandjonc
 

Similaire à ANALYSE DES TWEETS DE TWITTER.pptx (20)

le NLP à l'ére de l'IA
le NLP à l'ére de l'IAle NLP à l'ére de l'IA
le NLP à l'ére de l'IA
 
Langage C++
Langage C++Langage C++
Langage C++
 
Cours
CoursCours
Cours
 
Formation python micro club.net
Formation python micro club.netFormation python micro club.net
Formation python micro club.net
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
fortran 2.pdf
fortran 2.pdffortran 2.pdf
fortran 2.pdf
 
[FR] Introduction à Spring Data Neo4j 3.x
[FR] Introduction à Spring Data Neo4j 3.x[FR] Introduction à Spring Data Neo4j 3.x
[FR] Introduction à Spring Data Neo4j 3.x
 
Formation python 3
Formation python 3Formation python 3
Formation python 3
 
Analyse des Sentiments -cas twitter- "Opinion Detection with Machine Lerning "
Analyse des Sentiments  -cas twitter- "Opinion Detection with Machine Lerning "Analyse des Sentiments  -cas twitter- "Opinion Detection with Machine Lerning "
Analyse des Sentiments -cas twitter- "Opinion Detection with Machine Lerning "
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
R Devtools
R DevtoolsR Devtools
R Devtools
 
Analyse statistique sur DOTA
Analyse statistique sur DOTAAnalyse statistique sur DOTA
Analyse statistique sur DOTA
 
c++
c++c++
c++
 
Des expériences simples autour du langage
Des expériences simples autour du langageDes expériences simples autour du langage
Des expériences simples autour du langage
 
le web sémantique : un web de métadonnées
le web sémantique : un web de métadonnéesle web sémantique : un web de métadonnées
le web sémantique : un web de métadonnées
 
Introduction à la fouille de textes et positionnement de l'offre logicielle
Introduction à la fouille de textes et positionnement de l'offre logicielleIntroduction à la fouille de textes et positionnement de l'offre logicielle
Introduction à la fouille de textes et positionnement de l'offre logicielle
 
20150402 meetup r addicts du printemps
20150402  meetup r addicts du printemps20150402  meetup r addicts du printemps
20150402 meetup r addicts du printemps
 
Visite guidée au pays de la donnée - Traitement automatique des données
Visite guidée au pays de la donnée - Traitement automatique des donnéesVisite guidée au pays de la donnée - Traitement automatique des données
Visite guidée au pays de la donnée - Traitement automatique des données
 
Using UBCluster
Using UBClusterUsing UBCluster
Using UBCluster
 
Meetup pg recherche fulltext ES -> PG
Meetup pg recherche fulltext ES -> PGMeetup pg recherche fulltext ES -> PG
Meetup pg recherche fulltext ES -> PG
 

ANALYSE DES TWEETS DE TWITTER.pptx

  • 1. ANALYSEDESTWEETSDETWITTER République du Sénégal Un peuple-Un but-Une foi ************************** Agence Nationale de la Statistique et de la Démographie ***************************** Ecole nationale de la statistique et de l’analyse éconmique Pierre Ndiaye PRESENTATION DU PROJET ii DE NLP Présenté par: DEKOU VESSOU Jeff-Maruis Sous la supervision de M.: M.GOMIS MARS 2023
  • 2. 01 03 02 04 Introduction Présentation du dataset ANALYSE DES SENTIMENTS. WORD EMBEDDING Plan de présentation INTERET DU SUJET Conclusion 05 06
  • 3. 02/03/2023 3 Introduction Aujourd’hui, Twitter est utilisé par des centaines de millions de personnes dans le monde entier. Plus précisément, l'estimation actuelle s'élève à environ 330 millions d'utilisateurs actifs mensuels et 145 millions d'utilisateurs actifs quotidiens sur Twitter. Autre chiffre intéressant : 63 % des utilisateurs de Twitter dans le monde ont entre 35 et 65 ans. L’objectif de cet article est de réaliser une analyse exploratoire et visuelle des tweets présents dans notre jeu de données. Dans un second temps, le but sera de parvenir à classifier à l’aide de différents modèles disponibles en Python, les sentiments des tweets selon qu’ils soient plutôt positifs, neutres ou négatifs. Autrement dit réunir sentiment analysis et NLP.
  • 4. 4 PresentationdeNotreDataset 02/03/2023 Comme nous pouvons l’apercevoir, ce jeu de données recensant au total 74681 tweets, contient une colonne intitulée positive [pour le moment] attribuant la modalité positive si le sentiment du tweet est positif et autres modalités si c’est pas positif
  • 6. 6 PresentationdeNotreDataset 02/03/2023 -Visualisation desmots #librairies import pandas as pd import numpy as np from PIL import Image from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt
  • 7. 7 PresentationdeNotreDataset 02/03/2023 -Visualisation desmots #Définition des mots à exclure stopwords = set(STOPWORDS) stopwords.update(['and', 'or', 'in', 'the', 'I', 'That', 'these', 'those','am']) # Définition de l'image de masque #mask = np.array(Image.open('/content/gdrive/My Drive/logo.png')) # Création du WordCloud wordcloud = WordCloud(background_color='white', max_words=2000, stopwords=stopwords) # Génération du nuage de mots wordcloud.generate(text) # Affichage du nuage de mots plt.figure(figsize=(10,10)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show()
  • 9. 9 PresentationdeNotreDataset 02/03/2023 • #Checking the balance of data • df['Sentiment'].value_counts().plot(kind='bar') • Analyse des sentiments
  • 10. 02/03/2023 10 TRAITEMENTS DES DONNEES from tensorflow.keras.layers import Embedding import io import numpy as np import tensorflow as tf from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow . keras . preprocessing . sequence import pad_sequences import pandas as pd import nltk import re from nltk.corpus import stopwords from nltk.stem.porter import PorterStemmer from tensorflow.keras.utils import to_categorical from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.layers import LSTM from tensorflow.keras.layers import Dropout from tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.metrics import accuracy_score
  • 11. 02/03/2023 11 TRAITEMENTS DES DONNEES  Faire une copie de nos donnees dans df  Important afin de garder les données initiales en bon etat sans erreurs/tr aitements plus sécurisé et pas de pertes de base df=data.copy() indexes=[] for i in range(74681): if(df['Sentiment'][i]=='Irrelevant'): indexes.append(i) df=df.drop(indexes,axis=0) print(df.shape) #(61691, 4)  Supressions de irrelevant  Nous sommes seulement intéressés par positives, negatives et neutre et on supprime irrelevant
  • 12. 02/03/2023 12 TRAITEMENTS DES DONNEES  nombres de valeurs manquantes si elles existent pour chaque variable df.isna().sum() #2401 0 #Borderlands 0 #Sentiment 0 #Tweet 571 #Effacer ces valeurs manquantes df=df.dropna() #(61120, 4) #Transformer nos variables en variables catégorielles df['Sentiment']=df['Sentiment'].map({'Positive':2,'Neutral':1,'Negative':0}) #Supressions de la colonne 2401 et borderlands df=df.drop(['2401','Borderlands'],axis=1)
  • 13. 02/03/2023 13 TRAITEMENTS DES DONNEES  Remarque #Reset the index df.reset_index(inplace=True)
  • 15. 02/03/2023 15 ANALYSE DES SENTIMENTS x=df['Tweet'] y=df['Sentiment']  Choix des données d’entrées nltk.download('stopwords')  Telechargements des stops words  Le code nltk.download('stopwords') télécharge le corpus stopwords de la bibliothèque Natural Language Toolkit (NLT K). Les stopwords sont des mots couramment utilisés dans une langue mais qui sont généralement considérés comm e ayant peu de valeur lors de l'analyse de données textuelles. Des exemples de stopwords en français incluent "le", "l a", "les", "de", "du", "des", etc.  En téléchargeant le corpus de stopwords, vous pouvez l'utiliser pour supprimer ces mots courants de vos données te xtuelles. Cela peut être utile pour diverses tâches de traitement du langage naturel, telles que l'analyse de sentiment ou la modélisation de sujets.
  • 16. 02/03/2023 16 ANALYSE DES SENTIMENTS x=df['Tweet'] y=df['Sentiment']  Choix des données d’entrées nltk.download('stopwords')  Telechargements des stops words  Le code nltk.download('stopwords') télécharge le corpus stopwords de la bibliothèque Natural Language Toolkit (NLT K). Les stopwords sont des mots couramment utilisés dans une langue mais qui sont généralement considérés comm e ayant peu de valeur lors de l'analyse de données textuelles. Des exemples de stopwords en français incluent "le", "l a", "les", "de", "du", "des", etc.  En téléchargeant le corpus de stopwords, vous pouvez l'utiliser pour supprimer ces mots courants de vos données te xtuelles. Cela peut être utile pour diverses tâches de traitement du langage naturel, telles que l'analyse de sentiment ou la modélisation de sujets.
  • 17. 02/03/2023 17 ANALYSE DES SENTIMENTS #Cleaning text data ps=PorterStemmer() corpus=[] for i in range(len(x)): rev=re.sub('[^a-zA-Z]',' ',df['Tweet'][i]) rev=rev.lower() rev=rev.split() rev=[ps.stem(word) for word in rev if not word in stopwords.words('english')] rev=' '.join(rev) corpus.append(rev)  Choix du corpus  Explication du code
  • 18. 02/03/2023 18 ANALYSE DES SENTIMENTS  Explication du code  Le code nous permet d' effectuer le nettoyage des données textuelles à l'aide de l'algorithme de stemming de Porter et supprime les stopwords de la langue anglaise à l'aide de la bibliothèque NLTK.  ps=PorterStemmer(): crée une instance de l'algorithme de stemming de Porter de la bibliothèque NLTK.  corpus=[]: crée une liste vide appelée corpus pour stocker les données textuelles nettoyées.  for i in range(len(x)):: itère à travers chaque élément dans une liste x (qui n'est pas définie dans l'extrait de code que vous avez fourni).  rev=re.sub('[^a-zA-Z]',' ',df['Tweet'][i]): supprime tous les caractères qui ne sont pas des lettres de la chaîne dans la colonne 'Tweet' du DataFrame df à l'index i.  rev=rev.lower(): convertit toutes les lettres de la chaîne en minuscules.  rev=rev.split(): divise la chaîne en une liste de mots.  rev=[ps.stem(word) for word in rev if not word in stopwords.words('english')]: applique l'algorithme de stemming de Porter à chaque mot de la liste de mots, et supprime tous les mots qui se trouvent dans le corpus de stopwords de la langue anglaise de NLTK.  rev=' '.join(rev): rassemble la liste de mots en une chaîne, séparée par des espaces.  corpus.append(rev): ajoute la chaîne nettoyée à la liste corpus.
  • 19. 02/03/2023 19 ANALYSE DES SENTIMENTS  Visualisations et comparaisons
  • 20. 02/03/2023 20 ANALYSE DES SENTIMENTS  Séquences et padding
  • 21. 02/03/2023 21 ANALYSE DES SENTIMENTS  Visualisations
  • 22. 02/03/2023 22 ANALYSE DES SENTIMENTS  Préparation de la base pour la modélisation logistique #Ecodage du tableau y #Y en vecteur binaire (1, 0) y= to_categorical(y) print(y) #converting data to numpy array x_array=np.array(padded) y_array=np.array(y)  Convertir en tableau
  • 23. 02/03/2023 23 ANALYSE DES SENTIMENTS  Séparation de la base en base d’entrainement , de test et de validations x_train,x_t,y_train,y_t=train_test_split(x_array,y_array,random_state=42) # les base validation = 35% de la base x_t et y_t et les bases test 65% x_valid=x_t[:int(x_t.shape[0]*0.35)] y_valid=y_t[:int(y_t.shape[0]*0.35)] x_test=x_t[int(x_t.shape[0]*0.35):] y_test=y_t[int(y_t.shape[0]*0.35):]
  • 24. 02/03/2023 24 ANALYSE DES SENTIMENTS  Modélisation et entrainement Nous allons faire à ce niveau un modèle de classification multi classe . Ce type de modèle est utilisé lorsque les données d'entraînement sont catégorielles et que le modèle doit prédire une ou plusieurs classes pour chaque échantillon. D’où les précédentes transformations  Raison de ce choix -Des bonnes prédictions -Un bon score -Mieux que le modèle binaire selon les tests effectués dans mon cas
  • 25. 02/03/2023 25 ANALYSE DES SENTIMENTS model=Sequential() model.add(Embedding(vocab_size,embedding_dim,input_length=max_length)) model.add(LSTM(100,return_sequences=True)) model.add(Dropout(0.1)) model.add(LSTM(50)) model.add(Dense(3, activation='softmax')) model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) model.summary()  Modele
  • 26. 02/03/2023 26 ANALYSE DES SENTIMENTS early_stopping=EarlyStopping(monitor='val_loss',min_delta=0,patience=3,verbose=1) reduce_lr=ReduceLROnPlateau(monitor='val_loss', factor=0.2, pateince=3, verbose=1, min_delta=0.0001)callbacks_list=[early_stopping,reduce_lr]  Contrôle du surapprentissage(a cause du modele multiclasse utilsé surtout)  Qu’est ce que ce code fait
  • 27. 02/03/2023 27 ANALYSE DES SENTIMENTS  Contrôle du surapprentissage(a cause du modele multiclasse utilsé surtout)  EarlyStopping : Cette fonction surveille la perte de validation pendant l'entraînement et arrête le processus d'entraînement plus tôt si la perte de validation ne s'améliore plus, selon les paramètres spécifiés. Les paramètres utilisés sont les suivants : •monitor='val_loss' : surveiller la perte de validation •min_delta=0 : la différence minimale requise pour considérer qu'il y a eu une amélioration de la perte de validation •patience=3 : le nombre d'époques pour lesquelles la perte de validation ne s'améliore pas avant que l'entraînement ne soit arrêté •verbose=1 : afficher des messages d'informations pendant l'entraînement  ReduceLROnPlateau : Cette fonction ajuste le taux d'apprentissage du modèle si la perte de validation ne s'améliore plus après un certain nombre d'époques, selon les paramètres spécifiés. Les paramètres utilisés sont les suivants : •monitor='val_loss' : surveiller la perte de validation •factor=0.2 : le facteur de réduction du taux d'apprentissage (nouveau taux d'apprentissage = taux d'apprentissage actuel * facteur) •patience=3 : le nombre d'époques pour lesquelles la perte de validation ne s'améliore pas avant que le taux d'apprentissage ne soit ajusté •verbose=1 : afficher des messages d'informations pendant l'entraînement •min_delta=0.0001 : la différence minimale requise pour considérer qu'il y a eu une amélioration de la perte de validation.
  • 28. 02/03/2023 28 ANALYSE DES SENTIMENTS  Entrainements p=model.fit(x_train, y_train, batch_size=64, epochs=30, verbose=1, callbacks=callbacks_list, validation_data=(x_valid,y_valid) )
  • 29. 02/03/2023 29 ANALYSE DES SENTIMENTS  Evolution de notre score par rapport aux epoques plt.plot(h.history['accuracy'],label='Accuracy') plt.plot(h.history['val_accuracy'],label='Validation Accuracy') plt.xlabel('Epochs') plt.ylabel('Accuracy') plt.legend()
  • 30. 02/03/2023 30 ANALYSE DES SENTIMENTS  Predication de notre modele #Predictions on test set preds=model.predict(x_test) preds_max=np.argmax(preds,axis=1) y_test_values=np.argmax(y_test,axis=1) print(preds_max[:10]) print(y_test_values[:10])  Verfications entre valeurs prédites et valeurs à observés
  • 31. 02/03/2023 31 ANALYSE DES SENTIMENTS  Matrice de classifications  Le score du modèle print('Accuracy: {:.2f}'.format(accuracy_score(y_test_values, preds_max)))
  • 36. Date Your Footer Here 36
  • 37. Date Your Footer Here 37
  • 38. Date Your Footer Here 38
  • 39. Date Your Footer Here 39
  • 40. Date Your Footer Here 40
  • 41. Date Your Footer Here 41

Notes de l'éditeur

  1. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  2. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  3. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  4. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  5. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  6. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  7. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  8. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  9. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  10. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  11. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  12. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  13. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  14. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  15. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  16. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  17. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  18. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  19. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  20. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  21. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  22. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  23. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  24. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  25. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  26. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  27. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  28. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  29. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  30. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  31. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  32. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  33. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library
  34. © Copyright PresentationGO.com – The free PowerPoint and Google Slides template library