Wir haben damit alle Vorbereitungen getroffen, um schließlich mit der Stimmungserkennung bzw. Sentimentanalyse einen realistischen Anwendungsfall zu besprechen.
Die Aufgabe besteht darin, anhand eines Textes (z.B. ein Review in einem Buchungsportal) zu entscheiden, ob es sich um ein positives oder negatives Stimmungsbild (Meinung oder Bewertung) handelt.
Wir erhalten damit eine Klassifikationsaufgabe, die bekannterweise unter Verwendung eines neuronalen Netzes gelöst werden kann. Um dies zu demonstrieren, benötigen wir (wie üblich) eine Menge an Trainings- sowie eine Menge an Testdaten, jeweils bestehend aus Reviews mit bekannter Stimmung (positiv oder negativ). Die Vorgehensweise ist zusammenfassend folgende:
- Die Trainingsdaten werden verwendet, um ein Bag-of-Words zu erstellen.
- Anschließend werden die Texte der Trainingsdaten vektorisiert.
- Nun können die (vektorisierten) Trainingsdaten genutzt werden, um ein neuronales Netz zu trainieren.
- Schließlich werden auch die Testdaten vektorisiert, um das neuronale Netz daran zu testen.
Die Anzahl der Neuronen des Eingangssignals ist entsprechend gleich der Anzahl der Wörter bzw. Token des Bag-of-Words. Und da wir zwischen positiver und negativer Stimmung klassifizieren wollen, entscheiden wir uns für ein Ausgangssignal bestehend aus zwei Neuronen.
Der folgende Quellcode demonstriert die Vorgehensweise anhand eines kleinen Beispiels. Nach der Auswertung eines Textes entscheiden wir uns zur Klassifikation (Stimmung negativ oder Stimmung positiv) wie üblich für das zugehörige Ausgangsneuron mit dem größeren Wert.