You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dieses Programm soll den IMDB-Datensatz von Kaggle analysieren und die Ergebnisse inkl. der Qualität des Fits ausgeben.
Installation:
Für dieses Programm werden lediglich Python inklusive Pandas, Seaborn und SKLearn benötigt. Die Ordner "src" und "data" müssen im selben Ordner liegen.
Der zu analysierende Datensatz muss vom Format .csv sein und standardmäßig im Ordner "data" liegen. Der Dateiname bzw. Pfad des Datensatzes kann bei Bedarf angepasst werden:
daten=pd.read_csv("**yourpath/filename**")
Zur Konfiguration der Analyse gibt es folgende Optionen:
train_test_split kann entsprechend der funktionseigenen Parameter konfiguriert werden. Als Standard sind test_size = 0.25 und random_state = 42 festgelegt.
Das Modell zur Analyse der Daten sowie der Preprocessor können in der Variable pipe festgelegt werden:
Abschließend wird der Grid Search in der Datei "../models/grid_search.pkl" und der dazugehörige Best Estimator in der Datei "../models/best_estimator.pkl" gespeichert.
Folgeneder Parameterraum wurde zur Suche des Best Estimators genutzt:
Als beste Kombination aus Parametern hat sich C = 10, l1_ratio = 0, max_features = 40000 und ngram_range = (1, 2) ergeben. Stop_words = None hat sich in vorherigen Tests als effektiver herausgestellt. Alle weiteren Ergebnisse beziehen sich auf den Best Estimator mit der genannten Paramterkonfiguration.
Die Confusion Matrix zeigt die Verteilung der Ergebnisse und entspricht einer Erfolgsquote von 91,248% bei der Vorhersage des Sentiments. Dieser Wert für sich genommen, lässt grundsätzlich vermuten, daß das Modell korrekt konfiguriert und für die Vorhersage, basierend auf Reviews, geeignet ist. Trotzdem habe ich weitere Untersuchungen durchgeführt, die sich besonders auf die falsch interpretierten Reviews beziehen.
1. Länge der Reviews:
Eine Vermutung war, daß längere Reviews eher dazu tendieren, falsch interpretiert zu werden. Die angenommenen Gründe dazu sind:
Lange Texte implizieren häufiger emotionale Reaktionen, die tendenziell mehr zu Ironie/Sarkasmus führen.
Komplexere Auseinandersetzungen z.B. mit dem historischen Kontext oder Fakten außerhalb des eigentlichen Inhalts des Filmes, können dazu führen, daß auftretende Worte sich eben nicht auf diesen beziehen.
Lange Text haben - wenn man den Kontext der im Review ausgedrückten Meinung zum Film ignoriert - eine höhere Wahrscheinlichkeit, ein weites Spektrum an Worten zu beinhalten. Dadurch kann das Modell potentiell "verwirrt" werden.
Interessanter Weise konnte die Vermutung nicht bestätigt werden. Die durchschnittliche Länge aller Reviews beträgt (nach Entfernen der HTML-Tags und der Bereinigung durch den TfidfVectorizer) 1312,07 Wörter, die, der falsch interpretierten Reviews, beträgt 1285,50 Wörter und die, der korrekt interpretierten Reviews, beträgt 1314,62 Wörter. Die Abweichungen sind gering und zeigen in diesem Sinne vermutlich auch keine signifikante Tendenz, aber die ursprüngliche These lässt definitiv nicht erkennen. Eine Berechnung der Standardabweichungen wäre hier eine mögliche weiterführende Untersuchung.
2. Confidence korrekter und falscher Vorhersagen:
Die durchschnittliche Confidence der korrekten Vorhersagen liegt bei 91,28% und die der falschen bei 70,31%. Das folgende Bild zeigt eine genauere Beschreibung der Confidences inkl. der Quantile.
Bemerkenswert ist, daß 50% aller korrekten Vorhersagen einen Confidence-Wert von mindestens 96,60% haben. Ein Großteil der Reviews scheint in diesem Sinne also "schlicht" und damit auch eindeutig formuliert zu sein. Auf der anderen Seite ist der max-Confidence-Wert von 99,85% der falschen Vorhersagen ein klares Signal, daß nach weiteren Untersuchungen schreit. Bei der Betrachtung der Reviews, die trotz größter Confidence falsch lagen, ließen sich unterschiedliche Gründe finden.
Dieser Review wurde mit "negative" bewertet, was entweder ein Fall von extrem trockenem Sarkasmus ist oder einfach ein Missclick, was bei einer solchen Menge an Bewertungen (50000) durchaus zu erwarten ist.
Ein eindeutigerer Fall von Sarkasmus zeigt sich in folgemdem Review:
Abschließend zu erwähnen sind mehrere Reviews, die auch für mich schwer zu interpretieren waren und deren Bewertung mir oft fast schon willkürlich vorkam. Überraschend war für mich daher allerdings auch der hohe Confidence-Wert, der mit der falschen Vorhersage einherging. An dieser Stelle könnte eine detailierte Untersuchung, der als relevant bewerteten Wörter, weiterhelfen.
Contributors:
Dario (und Props an ChatGPT)
About
First attempt to analyze pure text data (movie reviews) and predict the persons sentiment (positive/negative) by using TfidfVectorizer.