Exercice - Utiliser le réseau neuronal pour analyser les sentiments exprimés dans un texte
Le véritable test arrive au moment où vous entrez votre propre texte dans le modèle pour voir comment celui-ci fonctionne, autrement dit, pour déterminer sa capacité à quantifier les sentiments exprimés dans ce texte. Dans cette unité, vous allez écrire une fonction Python qui accepte une chaîne de texte en entrée, la passe au modèle et retourne un score de sentiment. Ensuite, vous utiliserez la fonction pour analyser les sentiments exprimés dans différentes chaînes de texte.
Ajoutez le code suivant dans une cellule à la fin du notebook et exécutez la cellule :
import string import numpy as np def analyze(text): # Prepare the input by removing punctuation characters, converting # characters to lower case, and removing words containing numbers translator = str.maketrans('', '', string.punctuation) text = text.translate(translator) text = text.lower().split(' ') text = [word for word in text if word.isalpha()] # Generate an input tensor input = [1] for word in text: if word in word_dict and word_dict[word] < top_words: input.append(word_dict[word]) else: input.append(2) padded_input = sequence.pad_sequences([input], maxlen=max_review_length) # Invoke the model and return the result result = model.predict(np.array([padded_input][0]))[0][0] return result
Ces instructions définissent une fonction nommée
analyze
qui prend une chaîne en entrée et retourne un nombre entre 0.0 et 1.0 qui quantifie les sentiments exprimés dans cette chaîne. Plus le nombre est grand, plus le sentiment est positif. La fonction nettoie la chaîne d’entrée, la convertit en une liste d’entiers mappés à des mots dans le dictionnaire créé par la fonctionload_data
et, pour finir, appelle la fonctionpredict
du modèle pour évaluer les sentiments exprimés dans le texte.Utilisez le notebook pour exécuter l’instruction suivante :
analyze('Easily the most stellar experience I have ever had.')
La sortie correspond aux sentiments exprimés dans le texte d’entrée sous forme de nombre compris entre 0.0 et 1.0. Êtes-vous d’accord avec l’évaluation du modèle ?
Essayez maintenant cette instruction :
analyze('The long lines and poor customer service really turned me off.')
Comment le modèle quantifie-t-il les sentiments exprimés dans ce texte ?
Pour terminer, testez le modèle en utilisant vos propres chaînes d’entrée. Le résultat ne sera pas parfait, mais vous verrez sans doute que le modèle réussit plutôt bien à quantifier les sentiments. Même si le modèle a été entraîné avec des critiques de films, il n’est pas limité à l’analyse de ce genre de critiques. C’est logique, car il existe par nature des similitudes entre le langage servant à exprimer un avis positif ou négatif sur un film et les mots employés pour exprimer des sentiments sur tout autre sujet.