Twitter analytisch aufbereiten

Seite 3: Anwendung und Analyse

Inhaltsverzeichnis

Der API-Aufruf ist zunächst über das OAuth-Protokoll zu autorisieren. Der Eigentümer kann sich das notwendige Zugangstoken für seine Applikation generieren lassen. Falls noch nicht geschehen, kann der Entwickler sich zunächst unter https://dev.twitter.com/ auch eine neue Anwendung anlegen und das Token generieren, mit dem der HTTP-Authorization-Header aufgebaut und signiert wird. Für eine erfolgreiche Autorisierung benötigt man

  • den Consumer Key,
  • das Consumer Secret,
  • das Access Token,
  • und das Access Token Secret.

Während der Consumer Key und das Access Token in den Authorization-Header übernommen werden, dienen das Consumer Secret und das Access Token Secret dazu, den Header zu signieren. Letztere müssen geheim bleiben.

Nachdem nun klar ist, wie der Entwickler sich gegenĂĽber Twitter autorisieren kann, geht es nun an den Aufruf des Twitter-Streaming-APIs. Es erfordert einen HttpWebRequest, der an die HTTP-Header angehangen wird. AnschlieĂźend erfolgt eine asynchroner Request, wobei als Callback-Methode die Methode StreamCallback zu ĂĽbergeben ist. Sie wird im weiteren Verlauf dann aufgerufen, wenn eine neue Nachricht gesendet wird, wie das folgende Snippet zeigt:

public IAsyncResult CreateRequest(List<string> searchWords)
{
string requestUri = CreateRequestUri(searchWords);
HttpWebRequest request = CreateWebRequest(requestUri);

Dictionary<string, string> signatureParameters =
CreateSignatureParameters();
string signatureString = CreateSignatureString(signatureParameters);

string key = consumerSecret + "&" + accessTokenSecret;
string signature = CreateSignature(signatureString, key);

string authheader =
CreateAuthorizationHeader(signatureParameters, signature);
request.Headers.Add("Authorization", authheader);

return request.BeginGetResponse(StreamCallback, request);
}

Die Methode StreamCallback ĂĽberfĂĽhrt die zeilenweise eingelesenen eingehenden Nachrichten aus dem JSON-Format in die Tweet- Datenstruktur nach der Methode:

public static T DeserializeFromJson<T>(string jsonStringToDeserialize)
where T : class
{
if (string.IsNullOrEmpty(jsonStringToDeserialize))
return null;
MemoryStream ms = null;
try
{
ms =
new MemoryStream(Encoding.UTF8.GetBytes(jsonStringToDeserialize));
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(ms);
}
finally
{
if (ms != null)
ms.Close();
}
}

Auch für professionelle Anwendungen empfehlen sich quelloffene Bibliotheken für eine Twitter-Integration. Erwähnt sei Twitterizer [http://www.twitterizer.net/], ein umfangreiches Interface zu Twitter unter .NET. Der Quellcode hat als Vorlage für einige der oben beschrieben Code-Snippets gedient.

Über das Twitter-Streaming-API erhaltene Tweets können nun weiter verarbeiten. Beispielsweise können sie als Grundlage für eine sogenannte Sentiment-Analyse dienen. Mit ihr lassen sich in Texten geäußerte Meinungen finden und bewerten. So könnte sich eine Firma dafür interessieren, ob ihre Marke gerade positiv oder negativ bewertet wird, oder entsprechende Trends frühzeitig erkennen. Die Bewertungen lassen sich dann in Relation zu Werbekampagnen setzen, um deren Erfolg zu testen. Gleiches gilt für weitere Ereignisse, die einen signifikanten Einfluss auf das Kundenverhalten hatten.

Die Sentiment-Analyse bedient sich dabei der Methoden des Text-Minings, bei dem schwach strukturierte Textdaten erfasst werden. Neben Methoden aus der Statistik kommen computerlinguistische Verfahren zum Einsatz. Während erstere versuchen, mittels quantitativer Analysen und Algorithmen das Problem anzugehen, liegt der Schwerpunkt letzterer auf der Verarbeitung natürlicher Sprache (siehe Saarbrückener Pipelinemodel). Dabei geht es zunächst darum, den Text zu normalisieren und syntaktisch zu analysieren, um Informationen über den grammatikalischen Aufbau zu erhalten. Diese lassen sich anschließend für eine semantische Analyse heranziehen, bei der es darum geht, die Bedeutung des Textes zu erfassen bzw. anhand vorgegebener Kategorien zu klassifizieren. Dabei können statistische Klassifikatoren zum Einsatz kommen, die anhand von Beispieldaten so trainiert werden, dass sie einen Text der einen oder anderen Kategorie zuordnen. Als Möglichkeiten bietet sich z.B. der Naive Bayes Klassifikator an, der anhand der Trainingsdaten ermittelt, mit welcher Wahrscheinlichkeit ein Text einer bestimmten Kategorie zugeordnet werden kann, oder Support Vector Machines (SVM), die vom Ansatz her versuchen, eine Hyperebene zu finden, die Beispieldaten, die zu verschiedenen Kategorien gehören, optimal voneinander trennt. Diesen Methoden ist gemeinsam, dass der zu klassifizierende Text durch einen Vektor repräsentiert wird, der zu jedem Term die Häufigkeit angibt, mit dem dieser im Text vorkommt.

Der Artikel kann das Thema in der Kürze nur oberflächlich anreißen, eine weiterführende Behandlung würde den Umfang sprengen. Dem interessierten Leser seien die folgenden Links zum Einstieg in das Thema empfohlen:


Dr. Thomas Pohl
ist Development Architect bei der SAP AG. Seine Schwerpunkte liegen im Bereich der semantischen Textanalyse.
()