Für die maschinelle Analyse und Bewertungen von Texten gibt es viele Anwendungsfälle, zum Beispiel das Einordnen von Produktreviews in Online-Shops oder auch Kommentaren in Blogs. Mit Sentimentanalysen können in Texten eine positive oder negative Haltung erkannt werden. Maschinell kann damit eine Quantifizierung der Texte erfolgen, ohne dass deren Bedeutung von Menschen erfasst werden muss. Die Google Cloud Platform bietet mit der Natural Language API eine Sentiment-Analyse Funktion für dieses Zweck.
In diesem Beispiel sollen Kommentare in einem Blog ausgewertet werden, die eine Bewertung mit Google Analytics ermöglicht. Die Bewertung in Google Analytics sieht dann wie folgt aus:
Für die Verteilung der Kommentarklassifizierung wird folgendes Reporting verwendet:
Auf Artikelebene soll in einem Report die Anzahl der Kommentare, die Summe der Scores, die Summe der Magnitude und die durchschnittliche Bewertung des Scores dargestellt werden. Score ist dabei das Ergebnis der Bewertung hinsichtlich positiver oder negativer Äußerung. Magnitude bewertet die Emotinalität der Aussage. Aus dem AVG Score kann dann eine Bewertung der Kommentare zu jedem Artikel abgeleitet werden.
Der Ablauf
Um diese Auswertung in Google Analytics zu erhalten, wird folgender Workflow benutzt:
Wird das Kommentarformular abgesendet, werden alle notwendigen Daten über den Google Tag Manager an eine Cloud Function gesendet. Dort wird der Text mithilfe der Natural Language API bewertet. Aus der Cloud Function heraus, senden wir die Daten an Google Analytics per Measurement Protocol.
Die Analyse per Google Tag Manager starten
Um die Analyse zu starten, wird aus dem Google Tag Manager ein POST Request an die Cloud Function gesendet. Hier kann eine einfache Funktion für AJAX Requests verwendet werden:
Folgenden Daten senden wir an die Cloud Function:
- den zu analysierenden Text
- die Seiten-URL (Google Tag Manager Built-In Variable: Page URL)
- die Google Analytics Client-ID, die im Measurement-Protocol Hit verwendet werden soll
Den zu analysierenden Text wird über eine Custom Javascript Variable aus dem Formularfeld ausgelesen:
Die Google Analytics Client ID wird ebenfalls per Custom Javascript Variable in den dataLayer geschrieben:
Die in den dataLayer vorhandene ClientID wird dann in die dataLayer Variable clientID eingelesen. Auf einem passenden GTM-Trigger Form-Submit werden die Daten dann an die Cloud Function gesendet:
Datenverarbeitung in der Cloud-Function
Eine Python Cloud Function wird in der Google Cloud Platform angelegt. Die Function sentiment() wird dabei als Einstiegsfunction festgelegt:
Zuerst wird headers definiert. Die Einstellungen in headers müssen bei der Antwort des Servers mitgeliefert werden, da diese sonst aufgrund der Cross-Origin-Ressource-Sharing Policy (CORS Policy) im Browser nicht akzeptiert wird (inkl. Fehlermeldung in der Console).
Dann werden die POST Parameter ausgelesen. Für eine produktive Nutzung sind hier Validierungen basierend auf dem Use-Case sinnvoll. Danach wird der Text eine Funktion übergeben, die ein Objekt mit Score und Magnitude zurückliefert. Score wird in einer Range von -1 (sehr negativ) bis +1 (sehr positiv) bewertet. Magnitude wird als positive Zahl angegeben. Beides wollen wir in Google Analytics als Metric (Integer) verwenden um auch Berechnungen in Google Analytics vorzunehmen. Da der Score auch negativ sein kann, addieren wir 1. Das heißt, das Minimum ist nun 0 (sehr negativ) und das Maximum ist 2 (sehr positiv). Die Zahl wird mit 100 multipliziert, gerundet und in eine Ganzzahl umgewandelt. Für jeden Kommentar kann daher der Score 0 bis 200 in Google Analytics betragen. Entsprechend ist auch der AVG Score auf dieser Skala.
Ebenfalls kann eine Einordnung des Score in eine Klassifizierung erfolgen, beispielsweise:
- -1 bis -0.25: negativ
- -0.24 bis 0.24: neutral
- 0.25 bis 1: positiv
Diese wird als Custom Dimension nach Google Analytics gesendet und ermöglicht somit die Auswertung anhand dieser Dimension.
Danach wird per Measurement-Protocol ein Event an Google Analytics mit der ClientID gesendet. Die Event Action enthält dabei PageURL und Event-Label den Score. Da Kalkulationen auf Basis von Score und Magnitude in Google Analytics erfolgen sollen, werden diese als Custom Metric 1 und 2 gesendet. In Google Analytics sind die Custom Metrics mit Hit-Scope angelegt.
Am Ende wird der Header mit dem Antwortcode 200 zurückgeliefert und die Function beendet.
Für die Funktion für die Analyze des Textes wird die folgende Funktion genutzt, die sich sehr nah an der Dokumentation der Natural Language API orientiert:
Zudem muss im Interface der Google Cloud Platform die API für Natural Language aktiviert werden.
Die gesamte Cloud Function:
Google Analytics Report erstellen
Für den Report werden die beiden Custom Metrics angelegt:
die Custom Dimension:
sowie die Calculated Metrics, die die durchschnittliche Bewertung errechnet:
Nun können die Reports angelegt werden:
Event Action schlüsselt die Metriken anhand der URL auf. Über AVG Score kann nun die Bewertung der Artikel auf Basis der Kommentare erfolgen.
Mithilfe der Custom Dimension CommentClassification kann die Verteilung von negativen, neutralen und positiven Kommentaren ausgewertet werden.
1 thought on “Stimmungen in Texten analysieren mit der Google Cloud Platform”