Ihr Team verkauft drei Produkte und hat zu jedem einige tausend Rezensionen. Der Sternedurchschnitt bewegt sich von Monat zu Monat kaum, doch der Support meldet, dass sich die Beschwerden zu einem Produkt verdoppelt haben. Jede Rezension zu lesen ist keine Option. Sie brauchen also ein Skript, das jede Rezension als positiv, neutral oder negativ markiert und zeigt, wo sich die Stimmung verschiebt. Das erste Tutorial, das Sie finden, nutzt VADER, das zweite ein Transformer-Modell, und beide liefern für denselben Satz unterschiedliche Antworten.
Diese Anleitung lässt beide Methoden auf denselben kleinen Satz von Produktrezensionen los. Wir zeigen, wie jede Methode arbeitet, den vollständigen getesteten Code (einen Lexikon-Durchgang mit NLTK, einen Modell-Durchgang mit der Hugging-Face-pipeline und einen Bericht, der die Ergebnisse nach Produkt und Monat gruppiert), wie weit jede Methode mit den Sternebewertungen übereinstimmte und welche Rezensionen sie getäuscht haben. Alle Skripte liefen am 28. September 2026 mit Python 3.13, nltk 3.10.3, pandas 3.0.6, transformers 5.17.0 und dem CPU-Build von torch 2.14.
Was ist Sentiment-Analyse?
Sentiment-Analyse, auch Opinion Mining genannt, ist die Aufgabe, zu bestimmen, welche Haltung ein Text ausdrückt. Bei Produktrezensionen ist das Ergebnis meist eines von drei Labels (positiv, neutral, negativ) oder eine Sternebewertung, oft zusammen mit einem Konfidenzwert. Werkzeuge auf Aspektebene gehen weiter und zerlegen „toller Klang, schwacher Akku“ in zwei Meinungen; dafür braucht es eine andere Art von Modell, und das Thema liegt außerhalb dieser Anleitung.
Wie die Verfahren im Data Mining macht sie aus unstrukturiertem Text eine Spalte, die Sie zählen und in Diagrammen darstellen können. Der Nutzen liegt im Trend, nicht im einzelnen Score: etwa wenn der Anteil negativer Rezensionen zu einem Produkt nach einem Lieferantenwechsel steigt.
Wie funktioniert Sentiment-Analyse in Python?
Es gibt zwei Familien von Werkzeugen, und sie arbeiten sehr unterschiedlich.
Lexikonbasiert (VADER). VADER, kurz für Valence Aware Dictionary and sEntiment Reasoner, ist eine Liste von rund 7.500 englischen Wörtern, Emoticons und Slangausdrücken, die menschliche Bewerter von sehr negativ bis sehr positiv eingestuft haben, ergänzt um einen Satz von Regeln. Die Regeln erhöhen den Score bei !!! und GROSSBUCHSTABEN, gewichten die Wörter nach „but“ (aber) stärker als die davor und kehren den Score um, wenn eine Verneinung wie „not“ oder „never“ innerhalb der drei Wörter vor einem Stimmungswort steht. Die vaderSentiment-README beschreibt diese Regeln und die Schwellenwerte. NLTK liefert denselben Analyzer als nltk.sentiment.vader mit, dokumentiert im NLTK Sentiment How-to.
Modellbasiert (Transformer). Ein Transformer wie BERT wurde zunächst mit einer großen Textmenge trainiert und dann mit Beispielen feinabgestimmt, die ein Sentiment-Label tragen. Er übersetzt den ganzen Satz in Zahlen und liest jedes Wort im Licht der anderen, sodass „not bad“ (nicht schlecht) und „killer“ (im Sinne von großartig) nach dem Kontext statt nach einem festen Wert beurteilt werden können. Hugging Face hostet Tausende solcher Modelle, und die Funktion pipeline lädt eines davon mit einer einzigen Zeile.
In beiden Fällen läuft die Bewertung in fünf Schritten ab:
- Text laden. Eine Zeile pro Rezension, mit Produkt, Datum und, falls vorhanden, der Sternebewertung.
- Aufteilen oder tokenisieren. VADER arbeitet mit Wörtern und Satzzeichen. Ein Transformer nutzt seinen eigenen Tokenizer, der Wörter in Teilwort-Stücke zerlegt und bei einer maximalen Länge abbricht (512 Tokens bei BERT-basierten Modellen).
- Bewerten. VADER addiert die Wortwerte, wendet seine Regeln an und presst die Summe in einen
compound-Wert zwischen -1 und +1. Ein Modell liefert für jedes Label eine Wahrscheinlichkeit. - Einem Label zuordnen. Bei VADER wählen Sie Schwellenwerte. Bei einem Modell nehmen Sie das Label mit der höchsten Wahrscheinlichkeit und behalten den Score als Konfidenz.
- Aggregieren. Zählen Sie die Labels pro Produkt, Woche oder Monat und stellen Sie die Ergebnisse neben die Kennzahlen, die Sie ohnehin verfolgen.
VADER und ein Transformer-Modell im Vergleich
| VADER (NLTK) | Transformer (Hugging Face) | |
|---|---|---|
| Wie entschieden wird | Wortliste mit bewerteten Wörtern plus Regeln | Neuronales Netz, feinabgestimmt auf gelabelten Text |
| Installationsgröße | nltk plus ein 90-KB-Lexikon | transformers, torch (etwa 500 MB für den CPU-Build) und ein Modell (670 MB für das unten verwendete) |
| Tempo in unserem Test (Laptop-CPU, kurze Rezensionen) | Etwa 14.000 Rezensionen pro Sekunde | Etwa 90 Rezensionen pro Sekunde, auf einer GPU mehr |
| Sprachen | Englisch | Je nach Modell; das unten verwendete deckt sechs ab |
| Kontext und Verneinung | Regelbasiert, Fenster von drei Wörtern | Aus Beispielen gelernt |
| Ausgabe | neg-/neu-/pos-Anteile und ein Compound-Score | Label und Wahrscheinlichkeit oder Sternebewertung |
| Ergebnis erklären | Einfach: Wörter nachschlagen | Schwer: erfordert zusätzliche Werkzeuge |
| Unser Test mit 24 Rezensionen | 14 von 24 passten zu den Sternen (58 %) | 19 von 24 passten (79 %) |
Die letzte Zeile stammt aus einem winzigen, von Hand geschriebenen Datensatz. Sie zeigt, welche Art von Fehlern jede Methode macht, nicht, wie gut sie mit Ihren Daten abschneiden wird.
Ein Hugging-Face-Modell für Produktrezensionen wählen
Viele Sentiment-Modelle auf dem Hugging Face Hub wurden mit Tweets oder Filmkritiken trainiert. Für Produktrezensionen zählen drei Dinge:
- Trainingsdaten. Ein mit Tweets trainiertes Modell kennt Slang, eines mit Produktrezensionen kennt das Produktvokabular.
- Labels. Drei Labels, fünf Labels oder Sternebewertungen. Ordnen Sie sie an einer einzigen Stelle Ihren eigenen Labels zu.
- Lizenz. Manche beliebte Modelle stehen unter einer nicht kommerziellen Lizenz. Lesen Sie die Model Card.
Wir haben drei kleine mehrsprachige Modelle an denselben 24 Rezensionen getestet und im Code unten nlptown/bert-base-multilingual-uncased-sentiment verwendet. Es wurde mit Produktrezensionen auf Englisch, Niederländisch, Deutsch, Französisch, Spanisch und Italienisch feinabgestimmt, sagt eins bis fünf Sterne voraus und steht unter der MIT-Lizenz. Seine Model Card nennt für Englisch 67 % exakte Treffer bei den Sternen und 95 % mit höchstens einem Stern Abweichung. Türkisch gehört nicht zu seinen Sprachen, eine türkische Rezension bekommt also eine Schätzung, keine trainierte Antwort.
Die beiden anderen waren lxyuan/distilbert-base-multilingual-cased-sentiments-student (drei Labels, Apache 2.0), das bei 13 von 24 Rezensionen mit unseren Sternen übereinstimmte, und tabularisai/multilingual-sentiment-analysis (fünf Labels, 16 von 24), das unter CC BY-NC 4.0 lizenziert und damit für kommerzielle Nutzung nicht frei ist.
Die Testdaten: 24 Produktrezensionen
Wir haben keine gescrapten Rezensionen verwendet. Die Datei unten enthält 24 selbst geschriebene Rezensionen zu drei erfundenen Produkten, jede mit Datum und Sternebewertung, damit sich beide Methoden an der Bewertung prüfen lassen. Wir haben die Fälle aufgenommen, die in echten Daten Ärger machen: Sarkasmus, Slang, Verneinung, gemischte Gefühle sowie je eine Rezension auf Deutsch, Spanisch und Türkisch. Speichern Sie sie als reviews.csv:
review_id,product,date,rating,lang,text
1,kettle,2026-07-02,5,en,"Boils a full litre in under three minutes and the lid never drips. Love it."
2,kettle,2026-07-05,4,en,"Solid kettle, a bit loud but it does the job."
3,kettle,2026-07-11,1,en,"Stopped working after two weeks. Support never answered my emails."
4,kettle,2026-07-19,2,en,"The handle gets hot. Not great, not terrible."
5,kettle,2026-08-03,5,en,"Best purchase this year!!! Fast, quiet and it looks good on the counter :)"
6,kettle,2026-08-14,1,en,"Oh great, another kettle that leaks all over the counter. Just what I needed."
7,kettle,2026-08-21,3,en,"It is a kettle. It boils water."
8,kettle,2026-08-30,4,de,"Kocht schnell und ist leise. Gutes Preis-Leistungs-Verhältnis."
9,headphones,2026-07-03,5,en,"The noise cancelling is superb and the battery lasts all week."
10,headphones,2026-07-09,2,en,"Sound is fine but the ear cushions started peeling after a month."
11,headphones,2026-07-15,4,en,"Comfortable for long flights. The app is clunky though."
12,headphones,2026-07-28,1,en,"Right ear cut out on day three. Returned them."
13,headphones,2026-08-06,5,es,"Suenan de maravilla y la batería dura muchísimo."
14,headphones,2026-08-12,3,en,"Bass is heavy. Some people will like it, I am not sure I do."
15,headphones,2026-08-24,2,en,"I wanted to love these, but the Bluetooth keeps dropping."
16,headphones,2026-08-29,4,en,"Not bad at all for the price."
17,backpack,2026-07-01,5,en,"Survived a rainy week in the mountains and everything inside stayed dry."
18,backpack,2026-07-13,4,en,"Lots of pockets. The laptop sleeve is a little tight for a 16 inch model."
19,backpack,2026-07-22,1,en,"The zipper broke on the first trip. Cheap material."
20,backpack,2026-08-02,3,tr,"Fiyatına göre idare eder ama askılar biraz ince."
21,backpack,2026-08-09,5,en,"Killer design, this bag is sick!"
22,backpack,2026-08-17,2,en,"Looks nice in the photos, feels flimsy in real life."
23,backpack,2026-08-26,4,en,"Carries my camera gear without any back pain."
24,backpack,2026-08-31,1,en,"Terrible stitching. The strap tore off after a week."Echte Rezensionsdaten brauchen vor der Bewertung einen Bereinigungsdurchgang: Duplikate, im Text verbliebenes HTML, kaputte Zeichen. Diesen Schritt behandelt Gescrapte Daten mit pandas bereinigen.
Schritt 1: Rezensionen mit VADER bewerten
Installieren Sie die beiden Bibliotheken in einer virtuellen Umgebung:
python -m venv .venv
.venv\Scripts\activate # macOS/Linux: source .venv/bin/activate
pip install nltk pandasDas Skript bewertet jeden Satz einzeln und mittelt die Ergebnisse. Das haben wir nach dem ersten Lauf ergänzt: Als ein einziger String bewertet, kam Rezension 1 („…the lid never drips. Love it.“) auf -0,52, weil VADERs Verneinungsfenster von drei Wörtern über den Punkt hinweg reichte und „love“ umkehrte. Satz für Satz bewertet, kam sie auf +0,32.
import re
import nltk
import pandas as pd
from nltk.sentiment.vader import SentimentIntensityAnalyzer
nltk.download("vader_lexicon", quiet=True) # 90-KB-Lexikon, wird einmal heruntergeladen
analyzer = SentimentIntensityAnalyzer()
SENTENCE_END = re.compile(r"(?<=[.!?])\s+")
def vader_compound(text: str) -> float:
"""Jeden Satz einzeln bewerten und die Compound-Scores mitteln."""
sentences = [s for s in SENTENCE_END.split(text) if s.strip()]
scores = [analyzer.polarity_scores(s)["compound"] for s in sentences]
return round(sum(scores) / len(scores), 4)
def vader_label(compound: float) -> str:
# von den VADER-Autoren empfohlene Schwellenwerte
if compound >= 0.05:
return "positive"
if compound <= -0.05:
return "negative"
return "neutral"
df = pd.read_csv("reviews.csv", parse_dates=["date"])
df["compound"] = df["text"].apply(vader_compound)
df["vader"] = df["compound"].apply(vader_label)
print(df[["review_id", "lang", "compound", "vader"]].to_string(index=False))
df.to_csv("reviews_vader.csv", index=False)Ein Ausschnitt der Ausgabe:
review_id lang compound vader
1 en 0.3185 positive
3 en 0.0878 positive
6 en 0.3125 positive
8 de 0.0000 neutral
17 en 0.4588 positive
21 en -0.8356 negativeRezension 3 ist eine Ein-Stern-Beschwerde, aber „support“ ist im Lexikon ein positives Wort, und nichts Negatives wiegt es auf. Rezension 6 ist Sarkasmus („Oh great … Just what I needed“, also „Na toll … genau das, was ich gebraucht habe“), und VADER nimmt „great“ wörtlich. Die deutsche Rezension kommt auf genau null, weil keines ihrer Wörter im englischen Lexikon steht. Rezension 21 verwendet „killer“ und „sick“ als Lob; VADER kennt beide Wörter nur in ihrer negativen Bedeutung.
Schritt 2: dieselben Rezensionen mit einem Hugging-Face-Modell bewerten
Für den Modell-Durchgang brauchen Sie transformers und ein Deep-Learning-Backend. Wenn Sie keine GPU haben, installieren Sie zuerst den CPU-Build von torch; er ist deutlich kleiner als der Standard-Build mit CUDA:
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install transformersBeim ersten Lauf wird das Modell (etwa 670 MB) in den Hugging-Face-Cache geladen. Setzen Sie die Umgebungsvariable HF_HOME, wenn dieser Cache auf einem anderen Laufwerk liegen soll. Der Task-Name sentiment-analysis ist ein Alias für text-classification; batch_size, truncation und device sind in der Transformers-Dokumentation zu Pipelines beschrieben.
import pandas as pd
from transformers import pipeline
MODEL = "nlptown/bert-base-multilingual-uncased-sentiment"
classifier = pipeline(
"sentiment-analysis", # Alias für "text-classification"
model=MODEL,
device="cpu", # device=0 für die erste GPU
)
df = pd.read_csv("reviews_vader.csv", parse_dates=["date"])
results = classifier(
df["text"].tolist(),
batch_size=8,
truncation=True, # Rezensionen über 512 Tokens werden gekürzt, nicht abgewiesen
)
def stars_to_label(stars: int) -> str:
if stars >= 4:
return "positive"
if stars == 3:
return "neutral"
return "negative"
df["hf_stars"] = [int(r["label"][0]) for r in results] # "4 stars" -> 4
df["hf_score"] = [round(r["score"], 3) for r in results]
df["hf"] = df["hf_stars"].apply(stars_to_label)
print(df[["review_id", "rating", "hf_stars", "hf_score", "vader", "hf"]].to_string(index=False))
df.to_csv("reviews_scored.csv", index=False)Mit dem Modell bereits im Cache lief das Skript auf einer Laptop-CPU in etwa sieben Sekunden, Laden inklusive. Ein Ausschnitt der Ausgabe:
review_id rating hf_stars hf_score vader hf
3 1 1 0.736 positive negative
6 1 1 0.230 positive negative
8 4 5 0.526 neutral positive
17 5 1 0.562 positive negative
20 3 3 0.622 neutral neutral
21 5 1 0.816 negative negativeDas Modell erkannte die Beschwerde in Rezension 3, den Sarkasmus in Rezension 6 (mit einer niedrigen Konfidenz von 0,23) und die deutsche Rezension. Es scheiterte an Rezension 17, dem Rucksack, der „eine verregnete Woche überstanden“ hat, und las den Slang in Rezension 21 mit hoher Konfidenz als einen Stern. Rezension 20 ist Türkisch, worauf das Modell nicht trainiert wurde; seine drei Sterne passten, doch darauf würden wir uns nicht verlassen.
Schritt 3: nach Produkt und Monat aggregieren
Der Bericht prüft beide Methoden an den Sternebewertungen, bildet pro Produkt und Monat einen Netto-Sentiment-Score (Anteil positiv minus Anteil negativ) und schreibt die Rezensionen, bei denen sich die Methoden widersprechen, in eine Datei, die ein Mensch durchsieht.
import pandas as pd
df = pd.read_csv("reviews_scored.csv", parse_dates=["date"])
def stars_to_label(rating: int) -> str:
if rating >= 4:
return "positive"
if rating == 3:
return "neutral"
return "negative"
df["truth"] = df["rating"].apply(stars_to_label)
for method in ("vader", "hf"):
hit = (df[method] == df["truth"]).mean()
print(f"{method}: {hit:.0%} agree with the star rating")
off_by_one = ((df["hf_stars"] - df["rating"]).abs() <= 1).mean()
print(f"model stars within one star of the rating: {off_by_one:.0%}")
# Netto-Sentiment: Anteil positiv minus Anteil negativ, von -1 bis +1
NET = {"positive": 1, "neutral": 0, "negative": -1}
df["net"] = df["hf"].map(NET)
df["month"] = df["date"].dt.to_period("M")
by_product = (
df.groupby("product")
.agg(reviews=("review_id", "count"),
net=("net", "mean"),
negative_share=("hf", lambda s: (s == "negative").mean()),
avg_rating=("rating", "mean"))
.round(2)
.sort_values("net")
)
print(by_product.to_string())
by_month = df.pivot_table(index="month", columns="product", values="net", aggfunc="mean").round(2)
print(by_month.to_string())
# Zeilen, bei denen sich die beiden Methoden widersprechen, gehen zur Prüfung an einen Menschen
disagree = df[df["vader"] != df["hf"]]
print(f"{len(disagree)} of {len(df)} reviews need a human look")
disagree[["review_id", "rating", "vader", "hf", "text"]].to_csv("review_queue.csv", index=False)vader: 58% agree with the star rating
hf: 79% agree with the star rating
model stars within one star of the rating: 92%
reviews net negative_share avg_rating
product
backpack 8 -0.25 0.50 3.12
headphones 8 0.12 0.25 3.25
kettle 8 0.12 0.38 3.12
product backpack headphones kettle
month
2026-07 -0.33 -0.25 0.00
2026-08 -0.20 0.50 0.25
11 of 24 reviews need a human lookRucksack und Wasserkocher haben dieselbe Durchschnittsbewertung von 3,12, doch die Hälfte der Rucksack-Rezensionen liest sich negativ, beim Wasserkocher sind es 38 %: ein Unterschied, den der Sternedurchschnitt verdeckt. Bei acht Rezensionen pro Produkt verschiebt eine einzige Rezension den Netto-Score um 0,25. Legen Sie deshalb eine Mindestanzahl pro Gruppe fest, bevor Sie ein Diagramm erstellen. Wie Sie die bewerteten Zeilen für den nächsten Lauf speichern, steht in Gescrapte Daten als CSV, JSON und in SQLite speichern.
Woher kommen die Rezensionen?
Dem Code ist egal, woher der Text stammt, doch die Quelle entscheidet, was Sie damit tun dürfen:
- Ihr eigener Shop, Ihre App-Store-Konsole oder Ihr Support-System. Die sauberste Quelle, und sie enthält die Sternebewertung, die Sie zur Prüfung des Modells brauchen.
- Bewertungsplattformen und Marktplätze. Viele bieten eine offizielle API oder einen Export für Händler. Nutzen Sie diese, bevor Sie an Scraping denken.
- Öffentliche Seiten. Beachten Sie robots.txt und die Nutzungsbedingungen, halten Sie die Anfragerate niedrig und lassen Sie Namen und Profil-Links der Rezensenten weg. Ist Web Scraping legal? und Personenbezogene Daten (PII) in Scraping-Datensätzen erklären die Regeln.
Wenn ein Marktplatz je nach Land andere Rezensionen oder Preise zeigt, sehen Sie mit einem Residential-Proxy mit Länder-Targeting die Seite, die eine Käuferin oder ein Käufer vor Ort sieht.
Anwendungsfälle
- Produkt- und Kategorierecherche: vergleichen, wie Käufer über Ihre Produkte und die eines Wettbewerbers sprechen, als Teil der Marktforschung.
- E-Commerce-Monitoring: das Sentiment von Rezensionen neben Preis- und Bestandsdaten auf Marktplätzen beobachten, siehe E-Commerce-Proxys und Wettbewerberpreise im E-Commerce überwachen.
- Markenschutz: eine plötzliche Häufung negativer Rezensionen erkennen, die Fälschungen oder nicht autorisierte Händler erwähnen, siehe Markenschutz.
- Investment-Research: das Sentiment aus Rezensionen und sozialen Medien ist ein Baustein von alternativen Daten.
- Support-Triage: Ein-Stern-Rezensionen und solche mit niedriger Konfidenz zuerst an einen Menschen leiten.
Häufige Fehler und Fallstricke
- Einen ganzen Absatz auf einmal mit VADER bewerten. Verneinungs- und „but“-Regeln können über Satzgrenzen hinweg wirken, wie Rezension 1 gezeigt hat. Bewerten Sie Sätze einzeln und fassen Sie sie zusammen.
- VADER auf andere Sprachen anwenden. Unbekannte Wörter zählen null, deutsche und spanische Rezensionen landen also bei neutral. Nutzen Sie ein mehrsprachiges Modell oder gruppieren Sie die Rezensionen nach Sprache und wählen Sie für jede ein Modell.
- Sarkasmus und Slang einer der beiden Methoden anvertrauen. Beide lesen „Killer design, this bag is sick!“ als Ein-Stern-Rezension.
- Die Domäne ignorieren. „Unpredictable“ (unvorhersehbar) ist gut für eine Filmhandlung und schlecht für Autobremsen. Prüfen Sie eine Stichprobe aus Ihrer eigenen Kategorie.
- Übereinstimmung für Wahrheit halten. Rezension 21 tauchte nicht in der Prüfliste auf, weil sich beide Methoden auf dieselbe Weise geirrt haben. Führen Sie eine kleine, von Hand gelabelte Stichprobe und messen Sie daran.
- Den Konfidenzwert verwerfen. Ein Label mit einem Score von 0,23, wie ihn Rezension 6 bekam, ist kaum besser als Raten. Leiten Sie niedrige Werte an einen Menschen weiter.
- Die Kürzung vergessen. Ohne
truncation=Truelöst eine Rezension, die länger ist als das Modelllimit, einen Fehler aus und stoppt den Stapel. - Winzige Gruppen darstellen. Ein Netto-Score aus fünf Rezensionen schwankt stark. Legen Sie eine Mindestgruppengröße fest.
- Kaputte Zeichenkodierung. Rezensionen mit
éstattéverwirren beide Methoden; siehe Encoding-Fehler in Python.
Entscheidungshilfe
| Bedarf | Empfehlung |
|---|---|
| Ein schneller erster Blick auf englische Rezensionen | VADER, satzweise bewertet |
| Rezensionen in mehreren Sprachen | Ein mehrsprachiges Modell, dessen Model Card Ihre Sprachen nennt |
| Eine Sternebewertung statt drei Labels | Ein auf Sternebewertungen trainiertes Modell, etwa das nlptown-Modell |
| Keine GPU und Millionen Zeilen | VADER oder ein kleines Modell mit Batching und einer Prüfung per Stichprobe |
| Kommerzielle Nutzung | Modelllizenz prüfen; nicht kommerzielle Modelle auslassen |
| Zahlen für die Geschäftsleitung | Zuerst 200 bis 500 eigene Rezensionen von Hand labeln und die Genauigkeit messen |
| Text mit viel Sarkasmus und Slang | Ein auf Social-Media-Texte trainiertes Modell plus menschliche Prüfung niedriger Scores |
Häufige Fragen
Lohnt sich VADER noch?
Ja, als Ausgangsbasis für kurze englische Texte, wenn Sie Tempo und Ergebnisse brauchen, die sich Wort für Wort erklären lassen. Wo Kontext oder andere Sprachen zählen, schnitt in unserem Test ein Transformer-Modell deutlich besser ab.
Was bedeuten die Compound-Schwellenwerte von VADER?
Der Compound-Score reicht von -1 bis +1. Die VADER-Autoren schlagen positiv ab 0,05, negativ ab -0,05 und darunter sowie neutral dazwischen vor. Sie können die Schwellenwerte verschieben, sollten sie aber an gelabelten Beispielen ausrichten, nicht nach Gefühl.
Brauche ich für die Hugging-Face-Pipeline eine GPU?
Nein. Der CPU-Build von torch hat unsere 24 Rezensionen in Sekunden bewertet. Bei Hunderttausenden Rezensionen spart eine GPU Stunden; übergeben Sie device=0, um sie zu nutzen.
Welches Modell eignet sich für türkische Rezensionen?
Das hier verwendete nlptown-Modell wurde nicht auf Türkisch trainiert. Suchen Sie auf dem Hugging Face Hub nach Modellen, deren Model Card Türkisch sowie Produkt- oder Rezensionsdaten nennt, und testen Sie die besten Kandidaten an einer gelabelten türkischen Stichprobe.
Wie messe ich die Genauigkeit an meinen eigenen Daten?
Labeln Sie selbst eine Zufallsstichprobe von einigen hundert Rezensionen und vergleichen Sie. Sternebewertungen taugen wie in dieser Anleitung als grobe Labels, aber eine Drei-Sterne-Rezension liest sich oft negativ.
Darf ich Sentiment-Scores auf gescrapte Rezensionen anwenden?
Die rechtliche Frage betrifft nicht das Bewerten, sondern das Sammeln. Bevorzugen Sie eine offizielle API, prüfen Sie die Nutzungsbedingungen und die robots.txt der Website und halten Sie personenbezogene Daten heraus.
Fazit
Sentiment-Analyse in Python läuft auf zwei Optionen hinaus. VADER aus NLTK ist klein, schnell und leicht zu erklären, liest aber Sarkasmus, Slang, Fachbegriffe und jede Sprache außer Englisch falsch. Ein Hugging-Face-Modell liest Kontext und verarbeitet mehrere Sprachen, kostet aber einen großen Download und mehr Rechenleistung; bei unseren 24 Rezensionen stimmte es in 19 Fällen mit der Sternebewertung überein, VADER in 14. Wofür Sie sich auch entscheiden: Bewerten Sie konsequent pro Satz oder pro Rezension, behalten Sie den Konfidenzwert, leiten Sie Widersprüche an einen Menschen weiter und messen Sie an Ihrer eigenen gelabelten Stichprobe. Wenn Ihre Rezensionen von öffentlichen Seiten in mehreren Ländern stammen, finden Sie unter Proxynet-Proxys den Weg, sie in maßvollem Tempo zu sammeln.




