Sentimentanalyse von Twitternachrichten mit der Google Prediction API: Ein Fallbeispiel

By Mai 2, 2013 Aktuelles No Comments

2013-05 Google Prediction-22c02ca4

Die Google Prediction API macht Anwendungen intelligenter. So jedenfalls der Claim von Google Inc. In einem aktuellen Proseminar habe ich mich damit beschäftigt und eine 4-seitige Einführung in die Prediction API geschrieben [hier zum Download, 435kb].

Das Ausarbeitung beschäftigt sich mit dem theoretischen Hintergrund, Beispielen und Risiken der API – hier gehe ich auf  praktische Umsetzung eines Beispiels ein.  Außerdem gebe ich mir Mühe mich in diesem Praxisteil möglichst kompakt zu formulieren.

Ziel dieses Praxisbeitrags: Twitternachrichten automatisiert nach positiv, negativ oder neutralem Ausdruck zu bewerten.

Vorbereitung

Benötigtes Material:

  1. Trainingsdaten aus denen die Algorithmen ein Modell erzeugen
  2. Google Cloud Storage und Prediction API Keys / Zugänge zur Verwendung der Schnittstelle

1. Trainingsdaten vorbereiten und hochladen

Zunächst werden die Trainingsdaten benötigt aus der die Google Algorithmen die logischen Zusammenhänge für die weiteren Vorhersagen ziehen.

Da wir in unserem Beispiel englischsprachige Twitternachrichten in positiv, negativ und neutral einstufen möchten (Sentiment Analyse), nutze ich einen Datensatz mit ca. 5.000 Twitterposts der von der Firma Sanders Analytics hier bereitgestellt wurde.  Sollten Sie auch den Datensatz verwenden nutzen Sie bitte meine modifizierte Version des Installationsskriptes. Die Originalversion stürzt bei nicht vorhandenen Tweets ab.

Im nächsten Schritt legen wir unser Bucket in der Google Storage API ab – dafür benötigen wir zunächst das Webinterface.

Für den Upload von größeren Dateimengen lohnt es sich das Kommandozeilen-Programm “gsutil” zu installieren, ich nutze es für den Upload der Trainingsdaten. Eine ausführliche Anleitung zur Installation gibt es hier. Bitte führen Sie alle Schritte einschließlich “gsutil config -b” aus.

Wir laden nun die Datei sentiment-training.csv mit folgendem Befehl in unseren Google Speicherabschnitt (Bucket) mit dem Namen “twitter-training”

Copying file://sentiment-training.csv [Content-Type=text/csv]…

2. Modell trainieren

Im zweiten Schritt trainieren wir unser Modell mit Hilfe des Google Api Explorers. Zur Entwicklung der Software wird REST Api direkt angesprochen. Google stellt dafür einige Bibliotheken für alle verbreiten Sprachen an (.Net,Ruby,Objective-C, Java,Javascript, usw.).

Weiter im Google Api Explorer : Wir wählen prediction.trainedmodels.insert aus. Aktivieren Sie auf der rechten Seite “Authorize requests using OAuth 2.0″. Klicken Sie mit der Maus in den Request body und geben Sie folgende Werte an:

  • id:  Ein eindeutiger Name für das Modell, in unserem Fall zum Beispiel twitter-sentiment-en
  • storageDataLocation: Pfad zu den Lerndaten in unserem Fall gs://training-twitter/training-twitter.csv

Mit dem Klick auf “Execute” wird eine HTTP-Anfrage an folgende Adresse mit den o.g. Parametern erzeugt. Die Anfrage kann natürlich auch mit einem x-beliebigem Programm oder z.B. Curl erzeugt werden.

POST https://www.googleapis.com/prediction/v1.5/trainedmodels?key={YOUR_API_KEY}

Die Rückantwort müsste so aussehen:

Der Berechnungsvorgang für das Trainingsset läuft asyncron. Daher müssen wir jetzt abwarten und überprüfen, ob der Server das Training durchgeführt hat. Dafür nutzen wir die prediction.trainedmodels.get Methode, mit den Parametern id “twitter-sentiment-en”.

POST https://www.googleapis.com/prediction/v1.5/trainedmodels/twitter-sentiment-en/predict?key={YOUR_API_KEY}

Wichtige Ergebnisse: modelType ist Klassifikation (wie auch nicht anders zu erwarten) und der trainingStatus ist Done! Wir können also loslegen!

3. Vorhersagen durchführen

Um eine Vorhersage zu treffen, benötigen wir einen Datensatz. In unserem Beispiel den folgenden:

Und die Rückgabe von der Google Api lautet wie folgt:

Das Ergebnis ist negativ und die API funktionsbereit! Jetzt können sie die API über die Bibliotheken in Ihre bestehende Anwendung einbauen.

Fragen oder Wünsche? Wie immer als Kommentar abgeben!

Leave a Reply