Weiter zum Inhalt

Data Science im Vertrieb: Customer Sentiment Analysis

Erfahre, wie Data Science genutzt wird, um Kundenstimmungen zu analysieren und wertvolle Insights für die Vertriebsoptimierung zu liefern.
Aktualisiert 31. Aug. 2026  · 9 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Artificial Intelligence Concept Illustration

Data-Science-Anwendungsfälle finden sich praktisch in jeder Branche, in der viele Daten anfallen oder gesammelt werden können.  Filialen und E‑Commerce-Websites sind die Orte, an denen die tatsächliche Kundenerfahrung von Menschen stattfindet, die durch Marketingkampagnen angezogen wurden – und an denen wertvolle Einkaufsdaten einer Marke oder eines Unternehmens erfasst werden. Hier entscheiden Menschen, ob sie ein Produkt wirklich kaufen möchten, ob sie sich für etwas interessieren, das sie vorher nicht geplant hatten, wie viel sie zu zahlen bereit sind, ob sie in diesen Shop zurückkehren würden und welche Bewertung sie zu ihrer Erfahrung abgeben. 

Kundenbewertungen sind eine starke Datenquelle, um zu analysieren und zu verstehen, was im gesamten Vertriebsprozess geändert oder verstärkt werden sollte. Auf diese Weise analysierte Daten helfen, Kosten zu senken, die operative Effizienz zu steigern, das Kundenerlebnis zu verbessern, neue Chancen zu erkennen, das Geschäft zu skalieren und am Ende den Umsatz zu erhöhen. Schauen wir uns an, wie sich diese wertvollen Informationen mit Data-Science-Algorithmen analysieren und modellieren lassen, um verborgene Insights zu gewinnen und die Botschaft jedes einzelnen Kunden zu erfassen.

Data-Science-Use-Case im Vertrieb: Kundenstimmungen analysieren 

Customer Sentiment Analysis ist ein automatisierter Prozess, um die Emotionen von Kundinnen und Kunden zu identifizieren, wenn sie die Produkte oder Services eines Unternehmens nutzen. Dabei handelt es sich in der Regel um unstrukturierte Textdaten aus Online-Umfragen, Social Media, Support-Tickets, Feedback-Formularen, Produktbewertungen, Foren, Telefonaten, E-Mails und Chatbots. Im Machine Learning wird Customer Sentiment Analysis mithilfe von Natural Language Processing (NLP) durchgeführt, das statistische und linguistische Methoden anwendet, um positive, negative und neutrale Stimmungen direkt aus Textdaten zu extrahieren. Im Kern liefert sie zwei Parameter:

  • Polarität: Gibt an, ob eine Stimmung positiv oder negativ ist.
  • Stärke: Zeigt an, wie ausgeprägt diese Stimmung ist.

Customer Sentiment Analysis ist für moderne Unternehmen ein zentrales Werkzeug. Sie liefert umsetzbare Insights, deckt kritische, wiederkehrende Probleme auf, die für Unzufriedenheit sorgen, stärkt Produkt- oder Servicefunktionen, die positive Emotionen auslösen, und unterstützt insgesamt effizientere, datenbasierte Entscheidungen. Auf granularerer Ebene hilft sie dabei:

  • den Kundenservice – und damit die Kundenerlebnisse – zu verbessern,
  • die Kundentreue zu erhöhen,
  • die Abwanderungsrate zu senken,
  • Produkte und Services rechtzeitig weiterzuentwickeln,
  • Marketingkampagnen zu optimieren,
  • neue Trends und Märkte frühzeitig zu erkennen,
  • den guten Ruf unseres Unternehmens zu sichern,
  • die Gewinne zu steigern.

Wie bei jeder Textanalyse gibt es Fallstricke. So erkennt ein NLP-Algorithmus etwa Sarkasmus in manchen Bewertungen nicht und ordnet sie falsch zu. Auch sehr spezifische Abkürzungen oder seltene Slang-Begriffe können Probleme bereiten.

Den Datensatz vorbereiten

Schauen wir uns in der Praxis an, wie Customer Sentiment Analysis funktioniert – mit einem Datensatz von IMDB-Filmrezensionen:

import pandas as pd

movies = pd.read_csv('movies.csv', index_col=0).reset_index(drop=True)
print(f'Number of reviews: {movies.shape[0]:,}\n')
print(movies.head())
Number of reviews: 7,501

                                              review  label
0  This short spoof can be found on Elite's Mille...      0
1  A singularly unfunny musical comedy that artif...      0
2  An excellent series, masterfully acted and dir...      1
3  The master of movie spectacle Cecil B. De Mill...      1
4  I was gifted with this movie as it had such a ...      0

Wir haben zwei Spalten: den Text der jeweiligen Rezension und die Einschätzung der Gesamtstimmung: positiv (1) oder negativ (0).

Lass uns den Anteil positiver und negativer Rezensionen berechnen:

round(movies['label'].value_counts()*100/len(movies['label'])).convert_dtypes()
0    50
1    50
Name: label, dtype: Int64

Damit liegen die Anteile positiver und negativer Rezensionen nahezu gleichauf.

Die BOW-Methode anwenden 

Als Nächstes wandeln wir die Textdaten in numerische Form um, da ein Machine-Learning-Modell nur mit numerischen Merkmalen arbeiten kann. Konkret erstellen wir Features, die zählen, wie oft jedes Wort in der jeweiligen Rezension vorkommt. Der simpelste Ansatz dafür ist Bag-of-Words (BOW): Es baut ein Vokabular aller im Dokument vorkommenden Wörter auf und zählt die Häufigkeit jedes Wortes in jeder Rezension. So entstehen neue Features – je eines pro Wort – mit den entsprechenden Häufigkeiten.

Wenden wir die BOW-Methode auf unseren Datensatz an:

from sklearn.feature_extraction.text import CountVectorizer

# Creating new features
vect = CountVectorizer(max_features=200)
vect.fit(movies.review)
X_review = vect.transform(movies.review)
X_df = pd.DataFrame(X_review.toarray(), columns=vect.get_feature_names())

# Combining the new features with the label
movies_bow = pd.concat([movies['label'], X_df], axis=1)
print(movies_bow.head())
  label  10  about  acting  action  actors  actually  after  again  all  ...  \
0      0   0      0       0       0       0         0      0      0    0  ...  
1      0   1      0       1       0       1         0      0      0    3  ...  
2      1   0      0       0       0       0         0      1      0    0  ...  
3      1   0      0       0       1       0         0      0      0    0  ...  
4      0   1      0       0       1       0         0      0      0    3  ...  

  will  with  without  work  world  would  years  you  young  your 
0     0     1        0     0      0      1      0    0      0     0 
1     2     7        1     0      0      2      0    3      0     2 
2     0     2        0     0      0      0      0    0      1     0 
3     0     0        0     0      0      0      0    1      1     0 
4     0     2        0     1      0      0      0    0      0     0 

[5 rows x 201 columns]

Oben haben wir den optionalen Parameter max_features genutzt, um nur die 200 am häufigsten verwendeten Wörter zu berücksichtigen und Überanpassung im Modell zu vermeiden.

Mit überwachten ML-Modellen Stimmung vorhersagen

Jetzt setzen wir ein überwachtes Machine-Learning-Modell ein, um die Stimmung vorherzusagen. Da wir anhand bereits gelabelter Rezensionen schätzen wollen, ob die Stimmung einer neuen Rezension positiv oder negativ ist, handelt es sich wieder um ein Klassifikationsproblem. Wir verwenden erneut eine logistische Regression und messen die Modellgenauigkeit:

Accuracy score: 0.754

Confusion matrix:
[[37.62772101 13.23856064]
[11.32829853 37.80541981]]

Das Modell hat 11% aller tatsächlich positiven Rezensionen als negativ und 13% der negativen als positiv eingestuft. Um die Genauigkeit zu verbessern, können wir zum Beispiel Stoppwörter ausschließen (also wenig informative, sehr häufige Wörter wie "about", "will", "you" usw.) und den Wortschatz vergrößern.

Bei der BOW-Methode entstehen schnell Hunderte oder sogar Tausende neuer Features im Dataframe. Das kann zu einem übermäßig komplexen, überangepassten Modell mit vielen unnötigen Merkmalen und Parametern führen. Eine Lösung ist Regularisierung, die die Modellfunktion begrenzt. Der zu justierende Parameter ist C und steht für die Stärke der Regularisierung. Testen wir zwei Werte: 100 und 0,1, und prüfen, welcher auf den Testdaten besser abschneidet:

lr_1 = LogisticRegression(C=100)
lr_1.fit(X_train, y_train)
predictions_1 = lr_1.predict(X_test)

lr_2 = LogisticRegression(C=0.1)
lr_2.fit(X_train, y_train)
predictions_2 = lr_2.predict(X_test)

print(f'Accuracy score, lr_1 model: {round(accuracy_score(y_test, predictions_1), 3)}\n'
      f'Accuracy score, lr_2 model: {round(accuracy_score(y_test, predictions_2), 3)}\n\n'
      f'Confusion matrix for lr_1 model, %:\n{confusion_matrix(y_test, predictions_1)/len(y_test)*100}\n\n'
      f'Confusion matrix for lr_2 model, %:\n{confusion_matrix(y_test, predictions_2)/len(y_test)*100}')
Accuracy score, lr_1 model: 0.753
Accuracy score, lr_2 model: 0.756

Confusion matrix for lr_1 model, %:
[[37.53887161 13.32741004]
[11.32829853 37.80541981]]

Confusion matrix for lr_2 model, %:
[[37.67214571 13.19413594]
[11.19502443 37.93869391]]

Der Unterschied in der Genauigkeit bei den gewählten C-Werten ist gering. Mit weiteren Experimenten ließe sich eventuell ein besserer Wert finden. Da wir hier jedoch nur 200 neue Features haben, ist das Modell nicht besonders komplex – Regularisierung ist in diesem Fall nicht zwingend nötig.

Statt mit predict die Klassen 0 oder 1 vorherzusagen, lässt sich mit predict_proba auch die Wahrscheinlichkeit der Stimmung schätzen. Dabei ist zu beachten, dass Accuracy Score und Confusion Matrix nicht direkt auf Wahrscheinlichkeiten anwendbar sind, da diese Metriken mit Klassen arbeiten. Wir müssen daher einen Schwellenwert setzen. Standardmäßig wird eine Wahrscheinlichkeit größer oder gleich 0,5 als Klasse 1, andernfalls als Klasse 0 interpretiert.

lr = LogisticRegression()
lr.fit(X_train, y_train)

# Predicting the probability of the 0 class
predictions_prob_0 = lr.predict_proba(X_test)[:, 0]

# Predicting the probability of the 1 class
predictions_prob_1 = lr.predict_proba(X_test)[:, 1]

print(f'First 10 predicted probabilities of class 0: {predictions_prob_0[:10].round(3)}\n'
      f'First 10 predicted probabilities of class 1: {predictions_prob_1[:10].round(3)}')
First 10 predicted probabilities of class 0: [0.246 0.143 0.123 0.708 0.001 0.828 0.204 0.531 0.121 0.515]
First 10 predicted probabilities of class 1: [0.754 0.857 0.877 0.292 0.999 0.172 0.796 0.469 0.879 0.485]

Fazit 

Es gibt viele weitere hilfreiche Ansätze, um eine feinere Sentimentanalyse durchzuführen:

  • N‑Gramme (Wortkombinationen) statt einzelner Wörter verwenden, um Kontext zu bewahren,
  • Stoppwörter ausschließen,
  • den Wortschatz mithilfe unterer/oberer Häufigkeitsschwellen begrenzen,
  • zusätzliche numerische Features erstellen, z. B. Textlänge je Rezension oder Anzahl an Satzzeichen (letztere korrelieren teils mit der Intensität der Stimmung),
  • Zahlen, bestimmte Zeichen oder Wörter bestimmter Länge ausschließen oder komplexere Wortmuster berücksichtigen,
  • Stemming und Lemmatisierung anwenden, also Wörter auf ihre Wurzeln zurückführen,
  • statt BOW anspruchsvollere Ansätze zur Vokabularerstellung nutzen, z. B. TfIdf (Term Frequency–Inverse Document Frequency), das die Häufigkeit eines Wortes relativ zu allen Rezensionen gewichtet.
  • spezialisierte Bibliotheken für Sentimentanalyse einsetzen, etwa TextBlob, SentiWordNet, VADER (Valence Aware Dictionary and Sentiment Reasoner).

Wenn du diese und weitere Techniken für aussagekräftige Sentimentanalysen vertiefen möchtest, schau dir den Kurs Sentiment Analysis in Python an.

Themen
Datenwissenschaft
Maschinelles Lernen
Verwandt

Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Blog

Arten von KI-Agenten: Ihre Rollen, Strukturen und Anwendungen verstehen

Lerne die wichtigsten Arten von KI-Agenten kennen, wie sie mit ihrer Umgebung interagieren und wie sie in verschiedenen Branchen eingesetzt werden. Verstehe einfache reflexive, modellbasierte, zielbasierte, nutzenbasierte, lernende Agenten und mehr.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Tutorial

Wie man Listen in Python aufteilt: Einfache Beispiele und fortgeschrittene Methoden

Lerne, wie du Python-Listen mit Techniken wie Slicing, List Comprehensions und itertools aufteilen kannst. Finde heraus, wann du welche Methode für die beste Datenverarbeitung nutzen solltest.
Allan Ouko's photo

Allan Ouko

11 Min.

Mehr AnzeigenMehr Anzeigen