Maison >développement back-end >Tutoriel Python >Visualiser les résultats de l'analyse des sentiments en Python à l'aide de Matplotlib
Dans cet article, nous ajouterons une représentation graphique des résultats de l'analyse des sentiments à l'aide de Matplotlib. L'objectif est de visualiser les scores de sentiments de plusieurs phrases, avec un graphique à barres qui distingue les sentiments positifs et négatifs en utilisant différentes couleurs.
Assurez-vous que les bibliothèques suivantes sont installées :
pip install transformers torch matplotlib
Voici le code Python mis à jour qui intègre l'analyse des sentiments à la visualisation des données.
import matplotlib.pyplot as plt from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification # Load pre-trained model and tokenizer model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Initialize the sentiment-analysis pipeline classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) # List of 10 sentences for sentiment analysis sentences = [ "I love you! I love you! I love you!", "I feel so sad today.", "This is the best day ever!", "I can't stand the rain.", "Everything is going so well.", "I hate waiting in line.", "The weather is nice, but it's cold.", "I'm so proud of my achievements.", "I am very upset with the decision.", "I am feeling optimistic about the future." ] # Prepare data for the chart scores = [] colors = [] for sentence in sentences: result = classifier(sentence) sentiment = result[0]['label'] score = result[0]['score'] scores.append(score) # Color bars based on sentiment: Positive -> green, Negative -> red if sentiment == "POSITIVE": colors.append("green") else: colors.append("red") # Create a bar chart plt.figure(figsize=(10, 6)) bars = plt.bar(sentences, scores, color=colors) # Add labels and title with a line break plt.xlabel('Sentences') plt.ylabel('Sentiment Score') plt.title('Sentiment Analysis of 10 Sentences\n') # Added newline here plt.xticks(rotation=45, ha="right") # Adjust spacing with top margin (to add ceiling space) plt.subplots_adjust(top=0.85) # Adjust the top spacing (20px roughly equivalent to 0.1 top margin) plt.tight_layout() # Adjusts the rest of the layout # Display the sentiment score on top of the bars for bar in bars: yval = bar.get_height() plt.text(bar.get_x() + bar.get_width() / 2, yval + 0.02, f'{yval:.2f}', ha='center', va='bottom', fontsize=9) # Show the plot plt.show()
Importation des bibliothèques nécessaires :
Nous importons matplotlib.pyplot pour créer des tracés et des transformateurs afin d'effectuer une analyse des sentiments.
import matplotlib.pyplot as plt from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification
Chargement du modèle pré-entraîné :
Nous chargeons le modèle DistilBERT affiné pour l'analyse des sentiments sur l'ensemble de données SST-2. Nous chargeons également le tokenizer associé qui convertit le texte en jetons lisibles par modèle.
model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name)
Initialisation du pipeline d'analyse des sentiments :
Le pipeline de classificateur est configuré pour l’analyse des sentiments. Ce pipeline se charge de tokeniser le texte saisi, d'effectuer l'inférence et de renvoyer le résultat.
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
Phrases pour l'analyse des sentiments :
Nous créons une liste de 10 phrases à analyser. Chaque phrase est une expression unique d'un sentiment, allant du très positif au négatif.
sentences = [ "I love you! I love you! I love you!", "I feel so sad today.", "This is the best day ever!", "I can't stand the rain.", "Everything is going so well.", "I hate waiting in line.", "The weather is nice, but it's cold.", "I'm so proud of my achievements.", "I am very upset with the decision.", "I am feeling optimistic about the future." ]
Traitement des sentiments et préparation des données :
Pour chaque phrase, nous classons son sentiment et extrayons la partition. En fonction de l'étiquette de sentiment (POSITIVE ou NÉGATIF), nous attribuons une couleur aux barres du graphique. Les phrases positives seront vertes, tandis que les négatives seront rouges.
scores = [] colors = [] for sentence in sentences: result = classifier(sentence) sentiment = result[0]['label'] score = result[0]['score'] scores.append(score) if sentiment == "POSITIVE": colors.append("green") else: colors.append("red")
Création du graphique à barres :
Nous utilisons matplotlib pour créer un graphique à barres. La hauteur de chaque barre représente le score de sentiment pour une phrase, et les couleurs différencient les sentiments positifs et négatifs.
plt.figure(figsize=(10, 6)) bars = plt.bar(sentences, scores, color=colors)
Ajout d'étiquettes et ajustement de la mise en page :
Nous personnalisons l'apparence de l'intrigue en faisant pivoter les étiquettes de l'axe X pour une meilleure lisibilité, en ajoutant un titre et en ajustant la mise en page pour un espacement optimal.
plt.xlabel('Sentences') plt.ylabel('Sentiment Score') plt.title('Sentiment Analysis of 10 Sentences\n') # Added newline here plt.xticks(rotation=45, ha="right") plt.subplots_adjust(top=0.85) # Adjust the top spacing plt.tight_layout() # Adjusts the rest of the layout
Affichage des scores de sentiment en haut des barres :
Nous affichons également le score de sentiment en haut de chaque barre pour rendre le graphique plus informatif.
pip install transformers torch matplotlib
Affichage du tracé :
Enfin, le graphique est affiché à l'aide de plt.show(), qui restitue le tracé.
import matplotlib.pyplot as plt from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification # Load pre-trained model and tokenizer model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # Initialize the sentiment-analysis pipeline classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer) # List of 10 sentences for sentiment analysis sentences = [ "I love you! I love you! I love you!", "I feel so sad today.", "This is the best day ever!", "I can't stand the rain.", "Everything is going so well.", "I hate waiting in line.", "The weather is nice, but it's cold.", "I'm so proud of my achievements.", "I am very upset with the decision.", "I am feeling optimistic about the future." ] # Prepare data for the chart scores = [] colors = [] for sentence in sentences: result = classifier(sentence) sentiment = result[0]['label'] score = result[0]['score'] scores.append(score) # Color bars based on sentiment: Positive -> green, Negative -> red if sentiment == "POSITIVE": colors.append("green") else: colors.append("red") # Create a bar chart plt.figure(figsize=(10, 6)) bars = plt.bar(sentences, scores, color=colors) # Add labels and title with a line break plt.xlabel('Sentences') plt.ylabel('Sentiment Score') plt.title('Sentiment Analysis of 10 Sentences\n') # Added newline here plt.xticks(rotation=45, ha="right") # Adjust spacing with top margin (to add ceiling space) plt.subplots_adjust(top=0.85) # Adjust the top spacing (20px roughly equivalent to 0.1 top margin) plt.tight_layout() # Adjusts the rest of the layout # Display the sentiment score on top of the bars for bar in bars: yval = bar.get_height() plt.text(bar.get_x() + bar.get_width() / 2, yval + 0.02, f'{yval:.2f}', ha='center', va='bottom', fontsize=9) # Show the plot plt.show()
Le résultat de ce code sera un graphique à barres affichant les scores de sentiment des 10 phrases. Les phrases positives seront représentées par des barres vertes, tandis que les phrases négatives seront représentées par des barres rouges. Le score de sentiment sera affiché au-dessus de chaque barre, indiquant le niveau de confiance du modèle.
En combinant l'analyse des sentiments avec la visualisation des données, nous pouvons mieux interpréter le ton émotionnel derrière les données textuelles. La représentation graphique de cet article offre une compréhension plus claire de la répartition des sentiments, vous permettant de repérer facilement les tendances dans le texte. Vous pouvez appliquer cette technique à divers cas d'utilisation, comme l'analyse des avis sur les produits, des publications sur les réseaux sociaux ou des commentaires des clients.
Grâce à la puissante combinaison des transformateurs de Hugging Face et de matplotlib, ce flux de travail peut être étendu et personnalisé pour s'adapter à diverses tâches PNL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!