Toxic Comment Classification –
Text Mining Studie zur Sentiment Analyse in Wikipedia
Julius Klotz, cand. M.Sc. Informatik
im VTF Data- und Text Mining, 2018, Prof. A. Müller
Inhalt
Ziel
Toxic Comment Classification Challenge (Kaggle) mit KNIME lösen und Ergebnisse mit Siegerlösungen (Python und R) vergleichen. Die Challenge soll zunächst mit einem Neuronalen Netz ohne Dictionary gelöst werden. Wie ist die Güte eines solchen Modells im Vergleich zu den Wettbewerbsgewinnern, die auf ein eigenes Wörterbuch zurückgreifen?
Wikipedia Kommentare sollen in 6 verschiedene Kategorien eingeteilt werden (Kommentare können in mehrere Kategorien fallen): „toxic“, „severe toxic“, „obscene“, „threat“, „insult“, „identity hate“. Dabei ist eine mehrstufige Klassifikation vorhanden, alle „severe Toxic“ Kommentare werden automatisch auch als „toxic“ klassifiziert. Nicht alle als „obscene“ klassifizierten Kommentare sind automatisch auch „toxic“, da es aber auf 95% zutrifft, ist hier eine Korrelation zu erkennen.
https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge/data
ca 150.000 Trainingsdatensätze, ca 150.000 Testdatensätze
Ausschnitt aus Daten:
Kommentare von beliebiger Länge in Englisch (zwischen 1 – ca 500 Wörter)
Als erster Ansatz sollen die vorverarbeiteten Daten in ein Neuronales Netz (ideal für Mehrfachklassifikation) eingespeist und die Güte des Modells anschließend mit einem ersten Netz einer kleineren Größe (Anzahl Hidden Layer und kleinerer Corpus) festgestellt werden. Liegt die Erfolgsrate hier bereits bei einem akzeptablen Maß, wird das Modell weiterhin verbessert. Funktioniert dieser Ansatz nicht, soll später auf die Nutzung eines Wörterbuchs zurückgegriffen werden.
Schritt 1 Data Understanding
- Verständnis für Einteilung in Kategorien an Beispiel von einigen Kommentaren erhalten
- Zusammenhänge in den Daten erkennen (Bsp: jeder Kommentar der als „severe toxic“ klassifiziert wird, ist auch automatisch als „toxic“ klassifiziert
- Interessante Daten betrachten (Bsp: 95% aller obszönen Kommentare sind auch toxic, was ist mit den anderen 5%?)
Schritt 2 Data Preparation
- CSV File umformatieren und korrekt in KNIME importieren
- Leere Kommentare löschen
- Zitate vorheriger Kommentare entfernen
- Neue Kategorie für „saubere“ Kommentare einführen
Schritt 3 Text Mining
- POS Tagger: Wortarten können hilfreich für bestimmte Kategorien sein, meistens sind Verben und Nomen wichtig
- Stop words entfernen. Hier ist eine Prüfung erforderlich, manche Stop words könnten für die Klassifizierung erforderlich sein
- Stemming durchführen
- N-Gramme bilden (verschiedene Größen von N diskutieren)
- Rechtschreibfehler aus Kommentaren entfernen
- Dokumentverktor für Dokumente erstellen, Inverse Document Frequency und Zipf’sches Gesetz nutzen
Schritt 4 Neuronales Netz erstellen und zur Klassifizierung nutzen
- Neuronales Netz erstellen, als Inputvariablen Dokumentvektor nutzen
- 7 Output Knoten des neuronalen Netzes (6 Klassen + ein Knoten für „saubere“ Kommentare)
- Zunächst mit kleinerem Corpus, weniger Knoten im Input Layer und weniger Hidden Layer
- Mit kleinerer Auswahl aus Trainingsdaten erste Klassifizierung mit neuronalem Netz durchführen
- Ergebnisse messen und Visualisieren: ROC-Kurve, Trainingsloss (Overfitting), Testloss, …
- Entscheidung: Neuronales Netz weiter verbessern oder auf Dictionary umsteigen? Je nach Erfolg des ersten kleineren Netzes
- Erwartung: Direkt „passables“ Ergebnis mit NN, weitere Nutzung des Ansatzes
Schritt 5 Verbesserung / Veränderung des Modells
- Falls Ansatz des NN weiterverfolgt wird: Erweiterung der Termliste, mehr Dokumente als Trainingsdaten verwenden, Trainingsschritte erhöhen
- Nach erstem Ergebnis Fehler analysieren: Ist der Stemmer zu aggressiv / zu kulant eingestellt? Besteht bei den eingesetzten Techniken in Schritt 3 sonstiges Verbesserungspotential?
- Corpus nach und nach vergrößern, Anzahl der Iterationen erhöhen
- Highcut im Corpus durchführen, die am häufigsten vorkommenden Terme könnten für die Klassifizierung nicht von Nutzen sein
- Erneute Messung der Güte des Modells mit Testdaten, Visualisierung (siehe Schritt 4) und Vergleich der Modelle
- Sind eventuell Verbindungen zu erkennen, die ein Aufsplitten in mehrere Netze sinnvoll machen? Z. B. ein Netz pro Kategorie
Kontakt
Julius Klotz, B.Sc.
Master Informatik, 2.Semester
Data- und Textmining