Heim >Backend-Entwicklung >Python-Tutorial >Visualisierung der Ergebnisse der Stimmungsanalyse in Python mithilfe von Matplotlib
In diesem Artikel fügen wir eine grafische Darstellung der Ergebnisse der Stimmungsanalyse mit Matplotlib hinzu. Ziel ist es, die Stimmungswerte mehrerer Sätze mit einem Balkendiagramm zu visualisieren, das positive und negative Stimmungen anhand verschiedener Farben unterscheidet.
Stellen Sie sicher, dass die folgenden Bibliotheken installiert sind:
pip install transformers torch matplotlib
Hier ist der aktualisierte Python-Code, der Stimmungsanalyse und Datenvisualisierung integriert.
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()
Notwendige Bibliotheken importieren:
Wir importieren matplotlib.pyplot, um Diagramme und Transformatoren für die Durchführung einer Stimmungsanalyse zu erstellen.
import matplotlib.pyplot as plt from transformers import pipeline from transformers import AutoTokenizer, AutoModelForSequenceClassification
Laden des vorab trainierten Modells:
Wir laden das Modell DistilBERT, das für die Stimmungsanalyse auf den SST-2-Datensatz abgestimmt ist. Wir laden auch den zugehörigen Tokenizer, der Text in modelllesbare Token umwandelt.
model_name = "distilbert-base-uncased-finetuned-sst-2-english" model = AutoModelForSequenceClassification.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name)
Initialisierung der Sentiment-Analyse-Pipeline:
Die Klassifikatorpipeline ist für die Stimmungsanalyse eingerichtet. Diese Pipeline kümmert sich um die Tokenisierung des Eingabetextes, die Durchführung von Inferenzen und die Rückgabe des Ergebnisses.
classifier = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)
Sätze zur Stimmungsanalyse:
Wir erstellen eine Liste mit 10 zu analysierenden Sätzen. Jeder Satz ist ein einzigartiger Ausdruck einer Stimmung, die von sehr positiv bis negativ reicht.
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." ]
Stimmung verarbeiten und Daten vorbereiten:
Für jeden Satz klassifizieren wir seine Stimmung und extrahieren die Punktzahl. Basierend auf der Stimmungsbezeichnung (POSITIV oder NEGATIV) weisen wir den Balken im Diagramm eine Farbe zu. Positive Sätze werden grün angezeigt, während negative rot angezeigt werden.
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")
Balkendiagramm erstellen:
Wir verwenden Matplotlib, um ein Balkendiagramm zu erstellen. Die Höhe jedes Balkens stellt die Stimmungsbewertung für einen Satz dar und die Farben unterscheiden die positiven und negativen Stimmungen.
plt.figure(figsize=(10, 6)) bars = plt.bar(sentences, scores, color=colors)
Beschriftungen hinzufügen und Layout anpassen:
Wir passen das Erscheinungsbild des Plots an, indem wir die X-Achsenbeschriftungen für eine bessere Lesbarkeit drehen, einen Titel hinzufügen und das Layout für optimale Abstände anpassen.
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
Sentiment-Scores oben auf Balken anzeigen:
Wir zeigen außerdem den Sentiment-Score über jedem Balken an, um das Diagramm informativer zu gestalten.
pip install transformers torch matplotlib
Anzeigen des Diagramms:
Abschließend wird das Diagramm mit plt.show() angezeigt, wodurch der Plot gerendert wird.
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()
Die Ausgabe dieses Codes ist ein Balkendiagramm, das die Stimmungswerte der 10 Sätze anzeigt. Positive Sätze werden durch grüne Balken dargestellt, während negative Sätze als rote Balken angezeigt werden. Der Sentiment-Score wird über jedem Balken angezeigt und zeigt das Konfidenzniveau des Modells an.
Durch die Kombination von Stimmungsanalyse und Datenvisualisierung können wir den emotionalen Ton hinter Textdaten besser interpretieren. Die grafische Darstellung in diesem Artikel bietet ein klareres Verständnis der Stimmungsverteilung und ermöglicht es Ihnen, Trends im Text leicht zu erkennen. Sie können diese Technik auf verschiedene Anwendungsfälle anwenden, z. B. auf die Analyse von Produktbewertungen, Social-Media-Beiträgen oder Kundenfeedback.
Mit der leistungsstarken Kombination aus Hugging Faces Transformern und Matplotlib kann dieser Workflow erweitert und an verschiedene NLP-Aufgaben angepasst werden.
Das obige ist der detaillierte Inhalt vonVisualisierung der Ergebnisse der Stimmungsanalyse in Python mithilfe von Matplotlib. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!