Home Marketing Predictions Artikel 5
Teil 5 Generative AI

Sentiment & Content-Insights mit kleinen LLMs

Bild: KI-generiert mit Beuys


Sentiment & Content-Insights mit kleinen LLMs

Die Brücke vom klassischen ML zu modernen NLP-Pipelines: TF-IDF + Logistic Regression als ehrliche Baseline, ein konzeptioneller Vergleich mit Zero-Shot-Klassifikation per kleinem Hugging-Face-Modell – und die Frage, wann der LLM-Sprung wirklich Mehrwert bringt.


1. Warum Sentiment im Marketing ein hartes Problem ist

Social-Media-Texte verletzen jede Annahme klassischer NLP-Methoden:

Trotzdem ist eine kompakte, transparente TF-IDF-Baseline oft erstaunlich konkurrenzfähig – und sie ist der Maßstab, an dem sich jedes komplexere Modell messen lassen muss.

2. TF-IDF + Logistic Regression: Die ehrliche Baseline

Was TF-IDF leistet

Quick-Check: Was modelliert TF-IDF?

❌ Naiv: Bag-of-Words ohne Gewichtung

Reines Term-Counting ohne IDF lässt häufige, semantisch leere Wörter dominieren und macht das Modell unnötig anfällig für Stopwörter.

✅ Funktional: TF-IDF + LogReg in einer Pipeline

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report

# Kleines, repräsentatives Beispiel-Korpus (DE)
texts = [
    "Tolles Produkt, klare Empfehlung!",
    "Absolut begeistert von der Qualität",
    "Super Service, schnelle Lieferung",
    "Endlich mal etwas, das hält was es verspricht",
    "Mega zufrieden mit dem Kauf",
    "Schrecklich, nie wieder.",
    "Total enttäuschend und teuer",
    "Schlechte Qualität, kaputt nach 2 Tagen",
    "Lieferung kam nie an, Geld weg",
    "Ich hasse dieses Produkt",
    "War okay, mehr nicht.",
    "Mittelmäßig, hätte besser sein können",
] * 5  # auf 60 Beispiele duplizieren, um Train/Test sinnvoll zu splitten

y = ([1] * 5 + [0] * 5 + [0] * 2) * 5

X_tr, X_te, y_tr, y_te = train_test_split(texts, y, test_size=0.3, random_state=0)

clf = make_pipeline(
    TfidfVectorizer(ngram_range=(1, 2), min_df=1),
    LogisticRegression(max_iter=1000),
).fit(X_tr, y_tr)

print(f"Test-Accuracy: {clf.score(X_te, y_te):.3f}")
print()

# Vorhersagen auf unbekannten Beispielen
neue = ["überraschend gut", "leider sehr enttäuschend", "geht so"]
for t, pred, p in zip(neue, clf.predict(neue), clf.predict_proba(neue)[:, 1]):
    print(f"  '{t}' -> Label={pred}  P(positiv)={p:.2f}")

# Interpretierbarkeit: stärkste Features
tfidf = clf.named_steps["tfidfvectorizer"]
logreg = clf.named_steps["logisticregression"]
features = tfidf.get_feature_names_out()
coefs = logreg.coef_[0]
order = coefs.argsort()
print("\nTop-5 negative Features:")
for i in order[:5]:
    print(f"  {features[i]:25s}  {coefs[i]:+.2f}")
print("Top-5 positive Features:")
for i in order[-5:][::-1]:
    print(f"  {features[i]:25s}  {coefs[i]:+.2f}")

Die Interpretierbarkeit ist hier kein Bonus, sondern ein Hauptargument: Marketing-Stakeholder können die gelernten Wörter direkt prüfen – ein neuronales Modell verschluckt diese Plausibilitäts-Kontrolle.

3. Failure-Modes der Baseline

Trotz ihrer Stärken hat TF-IDF + LogReg klare blinde Flecken:

Phänomen Beispiel Warum es schwer ist
Negation „nicht schlecht" Bag-of-Words sieht „schlecht"
Sarkasmus „Ja, ganz toll. augenroll" Oberflächen-Tokens täuschen
Kontext-Abhängigkeit „Das Produkt ist umwerfend – im negativen Sinn" Globale Semantik fehlt
Neue Slangs / Memes „Mid", „bussin" OOV

Hier setzt der LLM-Sprung an.

4. Zero-Shot mit vortrainierten Modellen (konzeptioneller Vergleich)

Vortrainierte Sprachmodelle bringen Weltwissen mit – Negation, Kontext und Sarkasmus sind im Training implizit gelernt. Der konzeptionelle Code-Block:

# KONZEPT (außerhalb des Pyodide-Playgrounds, da transformers nicht lädt):
from transformers import pipeline

clf = pipeline(
    "sentiment-analysis",
    model="oliverguhr/german-sentiment-bert",
)
clf(["nicht schlecht", "Ja, ganz toll. *augenroll*"])
# [{'label': 'positive', 'score': 0.78}, {'label': 'negative', 'score': 0.82}]
Aspekt TF-IDF + LogReg Kleines HF-Modell (z. B. distilBERT)
Trainingsbedarf Wenige Sekunden auf CPU Vortraining ist Vorleistung; Fine-Tuning Minuten auf GPU
Negation/Kontext Schwach Stark
Erklärbarkeit Direkte Koeffizienten Eingeschränkt (SHAP, Attention)
Latenz pro Inferenz <1 ms 10–100 ms (CPU)
Datenschutz On-Premise trivial Modell-Größe und ggf. Lizenz prüfen

Quick-Check: Wann lohnt sich ein kleines LLM gegenüber TF-IDF + LogReg?

5. Diskussion: Die Baseline-Disziplin

"If your fancy model can't beat a simple baseline, it's not the baseline that's broken." – Empirische Faustregel aus dem ML-Engineering

In jedem produktiven Sentiment-Projekt sollten beide Wege parallel ausgewertet werden. Konkret:

  1. TF-IDF + LogReg in 20 Minuten trainieren.
  2. Vortrainiertes Zero-Shot-Modell in 20 Minuten anwenden.
  3. Beide auf demselben Holdout vergleichen.
  4. Falls das LLM nur 1–2 Prozentpunkte besser ist: Baseline gewinnt durch Wartbarkeit, Latenz und Datenschutz.
  5. Falls das LLM systematisch Negation und Sarkasmus korrekter behandelt und das geschäftlich relevant ist: Fine-Tuning lohnt sich.

Quick-Check: Welcher Failure-Mode ist für TF-IDF + LogReg am charakteristischsten?

6. Abschluss-Quiz

Welche Aussage zum Vergleich TF-IDF+LogReg vs. kleines LLM stimmt am besten?

Warum lohnt sich die Inspektion der LogReg-Koeffizienten beim TF-IDF-Modell besonders?

Welcher Punkt spricht in einem produktiven Marketing-Stack gegen den vorschnellen Einsatz eines großen LLMs?

7. Weiterführend

Quellen

📄 Als PDF