Sentiment Analyse in Apache Spark

Größe: px
Ab Seite anzeigen:

Download "Sentiment Analyse in Apache Spark"

Transkript

1 Hochschule für Technik und Wirtschaft Berlin Freie wissenschaftliche Arbeit zur Erlangung des akademischen Grades Master of Science in Wirtschaftsinformatik Sentiment Analyse in Apache Spark Masterthesis im Fachbereich Wirtschaftswissenschaften II im Studiengang Wirtschaftsinformatik der Hochschule für Technik und Wirtschaft Berlin vorgelegt von: Andreas Becker Ostseestraße Berlin Erstbetreuer: Prof. Dr. Ingo Claßen Zweitbetreuer: Prof. Dr. Christian Herta Abgabetermin:

2 Abstract Abstract Diese Arbeit beschäftigt sich mit dem Thema Sentiment Analyse im Big Data Bereich. Es wird der aktuelle Stand des Forschungsgebiets durch Literaturrecherche erörtert. Des Weiteren wird ein Einblick in das maschinelle Lernen und die technischen Grundlagen der Datenspeicherung und verarbeitung erklärt. In dem praktischen Teil der Arbeit wird Sentiment Klassifikation mit dem naives Bayes-Klassifikator und der Support Vector Machine auf dem Apache Spark Framework durchgeführt. Als Datenbasis dienen hierfür Kundenbewertungen des Onlinehändlers Amazon. Bei der Klassifikation wird das Hauptaugenmerk auf die Performance und Skalierbarkeit des Apache Spark-Frameworks innerhalb eines Computer Clusters gelegt. Dafür werden unterschiedliche Konfigurationen und verschieden große Datasets getestet. Die Ergebnisse der durchgeführten Tests zeigen, dass sich Spark nicht skalieren lässt. Abschließend wird ein einfacher Algorithmus zur Generierung eines Sentiment Lexikons in Spark implementiert. Dabei werden RDDs, also das Speicherkonzept von Spark, genutzt II

3 Inhaltsverzeichnis Inhaltsverzeichnis Abstract... II Inhaltsverzeichnis... I Abbildungsverzeichnis... III Tabellenverzeichnis... V Abkürzungsverzeichnis... VI 1 Einleitung Ziel und Aufbau Fachliche Grundlagen Sentiment Analyse Begriffserläuterungen Aufgaben und Probleme Ebenen der Sentiment Analyse Dokumenten-Ebene Satz-Ebene Aspekt-Ebene Sentiment Lexikon Maschinelles Lernen Sentiment Klassierung durch überwachtes Lernen Sentiment Klassierung durch unüberwachtes Lernen Klassifikatoren Naïve Bayes Support Vector Machine Gradientenverfahren Features Wortart N-Gramme Lemmatisierung Stimmungsverändernde Wörter Stimmungswörter und Sätze Kompositionelle Regeln Satz- und Sonderzeichen Syntakische Abhängigkeiten TF-IDF-Maß Technische Grundlagen Daten und Datenspeicher Hadoop Distributed File System I

4 Inhaltsverzeichnis 3.3 Apache Spark Spark Komponenten und Architektur Resilient Distributed Datasets Daten in Apache Spark Sentiment Analyse in Apache Spark Skalierbarkeit der Sentiment Klassifikation Vorgehen Technische Basis Datenbasis Aufbereitung der Daten Klassifikation Durchführung Bewertung der Ergebnisse Implementierung eines Algorithmus zur Sentiment Lexikon Generierung Grundlage Datenbasis Umsetzung Bewertung Schlussbemerkungen und Ausblick Literaturverzeichnis... VI Anhang... XIII A Code der Spark Sentiment Klassifikation... XIII B Dictionary... XIV II

5 Abbildungsverzeichnis Abbildungsverzeichnis Abbildung 1 Kundenbewertung Tablet... 5 Abbildung 2: LDA Topic Model Abbildung 3: Schoutens Algorithmus zur Erkennung neuer Aspekte Abbildung 4: Vier Wege um von "good" auf "bad" zu kommen (Godbole) Abbildung 5: Gesichte des maschinellen Lernens Abbildung 6: Vergleich von verschiedenen Algorithmen in der Sentiment Klassifikation Abbildung 7: Hyperebene im Vektorraum mit schmalen und breiten Rand Abbildung 8: Hyperebene in einem nicht linear trennbaren Datensatz Abbildung 9: Bag-of-Words-Modell Abbildung 10: Wissenspyramide Abbildung 11: HDFS-Architektur Abbildung 12: Ausführungszeigen Spark/Hive im Vergleich Abbildung 13: Spark Stack Abbildung 14: Spark Cluster-Architektur Abbildung 15: Jobausführung in einer Spark-Applikation Abbildung 16: Abhängigkeitsformen von RDDs Abbildung 17: Partitionierung einer Datei in HDFS Abbildung 18: Architektur des HTW-Cluster Abbildung 19: Aufbau der Datenbasis Abbildung 20: Einlesen der Daten in SciKit Learn Abbildung 21: Aufteilung einer Datei in HDFS Abbildung 22: Datenvorbereitung Spark Abbildung 23: Funktionen zur Datenvorbereitung in Spark Abbildung 24: Ermittlung TFIDF in Spark Abbildung 25: Code-Anpassung Abbildung 26: Bayes in Spark Abbildung 27: Caching in Spark Abbildung 28: Executoren im Cluster Abbildung 29: Join in Spark III

6 Abbildungsverzeichnis Abbildung 30: Berechnung des Executor-Speichers Abbildung 31: Dictionary: Datenbasis Abbildung 32: Dictionary: Daten einlesen und verteilen Abbildung 33: Dictionary: Filter Abbildung 34: Dictionary: Filtern von positiven Reviews Abbildung 35: Dictionary: Filtern von Negation und POS-Tags Abbildung 36: Dictionary: Funktionen zur Filterung Abbildung 37: Dictionary: Berechnung der Wortanzahl Abbildung 38: Dictionary: Abgleich positiver und negativer Wörter Abbildung 39: Dictionary: Erweiterung der Seeds IV

7 Abkürzungsverzeichnis Tabellenverzeichnis Tabelle 1: Begriffe einer Meinung... 5 Tabelle 2 Meinung 5-Tupel... 7 Tabelle 3: Aufgaben der Sentiment Analyse... 8 Tabelle 4: Extrahierte Aspekte im LDMA-Modell Tabelle 5: Synonyme und Antonyme zu "good" (WordNet) Tabelle 6: Muster zur Extraktion von two-word Phrases (entnommen aus Turney) Tabelle 7: Beispiel zur Bayes-Klassifizierung Tabelle 8: Tags der POS-Treebank Tabelle 9: Stimmungsveränderte Wörter Tabelle 10: Vergleich von Speichermedien Tabelle 11: Apache Spark Projekt-Aktivität Tabelle 12: Repräsentationselemente von RDDs Tabelle 13: Testsysteme Tabelle 14: Konfigurationsparameter Tabelle 15: Zusammenfassung Datenbasis Tabelle 16: Tags in Datenbasis Tabelle 17: Performance-Test Tabelle 18: Performance-Test Tabelle 19: Performance-Test Tabelle 20: Performance-Test Tabelle 21: Performance-Test Tabelle 22: Performance-Test Tabelle 23: Performance-Test Tabelle 24: Performance-Test Tabelle 25: Dictionary: gefundene Adjektive V

8 Abkürzungsverzeichnis Abkürzungsverzeichnis RDD NLP KNN POS LSA ESA HDP LDA LDMA SVM KI PMI ONMTF SSD RAM HDFS JSON XML Resilient Distributed Dataset Natural Language Processing k-nearest-neighbour Part of Speech Latent Semantic Analysis Explicit Semantic Analysis Hierachi-cal Dirichlet Process Latent Dirichlet Allocation Latent Dirichlet Markov Allocation Support Vector Machine Künstliche Intelligenz Pointwise Mutual Information nonnegative tri-factorization model (ONMTF) Solid State Disk Random-Access Memory Hadoop Distributed File System JavaScript Object Notation Extensible Markup Language VI

9 Einleitung 1 Einleitung Die Meinungen anderer Menschen beeinflussen unsere eigenen Entscheidungen und Ansichtsweisen jeden Tag. Für die Geschäftswelt bedeutet das, dass Kunden gerne über die Ansichten anderer Kunden informiert sind. So lesen beispielweise 88% der Befragten einer Studie von Kundenbewertungen um zu sehen, ob ein lokales Geschäft gut ist. Auch Organisationen haben ein reges Interesse an der Meinung von Menschen. Dies gilt für Unternehmen, die Kundenfeedback sammeln ebenso wie für Nachrichtenmagazine, die über Twitter die Stimmung zu aktuellen Themen sammeln. Dass Meinungen wichtig sind ist schon lange bekannt. Sie werden deswegen gerne gesammelt und ausgewertet. Die klassische Herangehensweise, Meinungen zu sammeln, sind Umfragen und Befragungsbögen. Mit dem Aufkommen des Web 2.0 ergab sich allerdings eine neue Möglichkeit, aktiv Daten nach Meinungen zu durchsuchen: die Sentiment Analyse. Im Internet findet ein reger Informationsaustausch in Blogs, Foren und Bewertungsportalen statt. Es werden riesige Datenmengen 2, die potentiell nützliche Informationen unter anderem für Unternehmen, Wissenschaftler, Politiker und Dienstleister enthalten, generiert. Aufgrund dieses Datenvolumen ist es nötig, diese maschinell zu entdecken, analysieren und zu bewerten. Dieser Aufgabe hat sich die Sentiment Analyse gewidmet. In dieser Arbeit wird die Sentiment Analyse in Hinblick auf die Verarbeitung großer Datenmengen und des maschinellen Lernens betrachtet. Dabei wird zunächst auf Grundlage einer intensiven Literaturrecherche der Forschungsstand der Sentiment Analyse erläutert und anschließend die Grundlagen des maschinellen Lernens erklärt. In Kontext des Big Data-Bereiche wird am Ende der Arbeit das Framework Apache Spark genutzt, um Aufgaben der Sentiment Analyse auszuführen. Dabei steht vor 1 2 allein 500 Millionen Twitter-Posts pro Tag 1

10 Einleitung allem die Performanz und Skalierbarkeit häufig genutzter Algorithmen der Sentiment Klassifikation im Vordergrund. 1.1 Ziel und Aufbau Mit dieser Arbeit soll gezeigt werden, dass sich Aufgaben der Sentiment Analyse in das Framework Apache Spark implementieren lassen und dort auf eine performante Weise ausgeführt werden können. Um auf dieses Thema hinzuführen, ist diese Arbeit einen theoretischen und praktischen Teil gegliedert. Im theoretischen Teil werden zunächst die Grundlagen der Sentiment Analyse beschrieben. Dabei wird auf verschiedene Bereiche, wie die Aufgaben, Probleme und Vorgehensweisen eingegangen. Neben der Sentiment Analyse werden auch Grundlagen des maschinellen Lernens und der Klassifikation vermittelt. Anschließend wird auf die technischen Hintergründe der Datenspeicherung und Apache Spark eingegangen. Der theoretische Teil mündet in einen praktischen Teil, bei dem Methoden der Sentiment Analyse auf Apache Spark übertragen werden. Dabei wird ein Performance-Vergleich von Spark und Algorithmen zum maschinellen Lernen aus frei verfügbaren Python-Bibliotheken durchgeführt. Es wird getestet, ab welcher Datenmenge sich die Benutzung der Spark Plattform auf einem Cluster sich lohnt und wie gut skalierbar das System ist. Als Datenbasis dienen dafür Kundenbewertungen des Onlinehändlers Amazon, die in einer wissenschaftlichen Arbeit ([76]) gesammelt wurden. 2

11 Fachliche Grundlagen 2 Fachliche Grundlagen In diesem Kapitel wird auf die fachlichen Grundlagen der Arbeit eingegangen. Dabei wird zuerst die Sentiment Analyse beschrieben. Im Rahmen dieser Arbeit war es nicht möglich, alle Bereiche der Sentiment Analyse abzudecken. Stattdessen soll ein übersichtlicher Einstieg in das Thema gewährt werden, indem die Aufgaben und Herangehensweisen der Sentiment Analyse erklärt werden, sowie ein etwas tieferer Einblick in einige Themenbereiche gegeben wird. Anschließend werden die grundlegenden Konzepte des Maschinenlernens beschrieben. Auch dieses Thema kann natürlich nicht umfassend erläutert werden. Im Bereich des Maschinenlernens werde ich mich deshalb auf ausgewählte Verfahren beschränken und nur die statistischen Grundlagen, die für diese Verfahren notwendig sind, erörtern. 2.1 Sentiment Analyse Die Sentiment Analyse ist ein Themenkomplex aus verschiedenen Bereichen der Computerlinguistik. Ihr Ziel ist es, die Haltung, Stimmung, Meinung und generelle Einstellung von Personen zu verschiedenen Entitäten, wie zum Beispiel Produkten, anderen Personen, Dienstleistungen und aktuellen Themen zu analysieren. In der Wissenschaft ist die Sentiment Analyse laut [33] derzeit eines der aktivsten Forschungsgebiete der linguistischen Datenverarbeitung (Natural Language Processing, kurz NLP). Die ersten Forschungen in diesem Bereich fanden um 2000 statt, jedoch wurde vor allem mit dem Web 2.0 ein starker Anstieg in der Forschung erzielt. Die Stimmungen und Meinungen von Leuten wurden immer interessanter und wichtiger und vor allem leichter zu erreichen. In Foren, Chats und anderen Plattformen, wie Twitter, tauschen sich täglich Millionen von Menschen aus. Wirtschaftliche Wichtigkeit erlangt die Sentiment Analyse im Bereich der Kundenbewertungen. Für viele Hersteller ist das Feedback ihrer Kunden wichtig und Kaufverhalten kann über Bewertungen analysiert werden. 3

12 Fachliche Grundlagen In diesem Themenbereich werde ich zunächst darauf eingehen, welche Aufgaben die Sentiment Analyse hat und vor welchen Problemen der Analyst steht. Es wird genau definiert, was eine Meinung im Sinne des NLP ist und welche Ebenen der Sentiment Analyse es gibt. Des Weiteren wird erklärt, wie Dokumente nach Meinungen durchsucht und wie diese anschließend analysiert werden können Begriffserläuterungen Sentiment Analyse bezieht sich für gewöhnlich auf subjektive Haltungen von Personen oder Meinungen. Im Folgenden wird genau definiert, was eine Meinung beinhaltet. Nach Liu Bing in [31] bildet eine Meinung das 5-Tupel (e i, a ij, s ijkl, h k, t l ) bei dem e i eine Entität bezeichnet, a ij ein Aspekt dieser Entität ist und s ijkl die negative, positive oder neutrale Stimmung zu dem Aspekt a ij der Entität e i darstellt. Das 5-Tupel wird durch den Vertreter der Meinung h k und durch den Zeitpunkt t l, an dem die Meinung ausgedrückt wurde, vervollständigt. Dabei gelten für die genannten Begriffe die Definitionen in Tabelle 1. Da die Veröffentlichungen im Bereich der Sentiment Analyse hauptsächlich auf Englisch sind, führt diese Tabelle auch die englischen Fachbegriffe. Bezeichnung Bezeichnung Englisch Erklärung Deutsch Entität Entity, Object, targed entity Das Ziel, gegen das sich die Meinung richtet. Aspekt Aspect, Feature Ein Teilbereich der Entität, wie zum Beispiel das Lenkrad eines Autos. Meinungsvertreter Opinion holder Die Person oder Organisation, die die Meinung ausdrückt. 4

13 Fachliche Grundlagen Stimmung, Meinung Sentiment, Opinion Tabelle 1: Begriffe einer Meinung Die subjektive Haltung des Meinungsvertreters zur Entität im Ganzen oder zu einem Aspekt der Entität. Zur anschaulichen Darstellung werden anhand eines Amazon Reviews zum Tablet Lenovo YOGA Tablet 2 nun einige Meinungs-5-Tupel gebildet. Dafür sind die einzelnen Sätze der Kundenbewertung mit Zahlen versehen. Abbildung 1 Kundenbewertung Tablet (1) Das Tablet hat ein sehr gutes und nützliches Design. (2)Der Standfuß lässt so einiges mit sich machen. (3)Stehen, liegen und durch die Runde Form lässt es dich sehr gut halten. (4)Durch die Dolby App können Leute doch sanfte Töne aus dem Tablet abgespielt werden. (5)Ebenfalls hat das Display eine gute Auflösung. (6)Doch es gibt einige Macken. (7)Einige Apps und der Chrome Browser laufen hackelig ab. (8)Videos werden durch das schwache WLAN mit ladekreiseln geprägt und verzögert die Ladezeit. (9)Man darf nicht alles glauben was der Hersteller sagt wie z.b. die Akku-Laufzeit. (10) Tests bestätigen eine enorm kürzere Laufzeit eines Entladezyklusses. (11) Das größte Manko ist, die Speichererweiterung. (12)Eine MicroSD mit einer FAT32 lässt sich nur einfügen. (13) Wenn man weitere Geräte wie externe Festplatte oder USB Stick per OTG einfügen möchte MÜSSEN diese ebenfalls das o.g. Format haben. (15) Zudem darf auch keine SD eingesteckt sein. (16) Mäuse, Tastaturen, PS3 (Samsung Geräte unterstützen den Controller) und Xbox-Controller werden leider auch nicht anerkannt. (17) In allem ein Mittelmäßiges Tablet. (18) Doch für das Geld gibt es bessere. 5

14 Fachliche Grundlagen Zunächst müssen die Entität und ihre Aspekte identifiziert werden. Die Entität e i ist das Tablet Lenovo YOGA 2. Diese Information wird aus den Meta-Daten der Kundenbewertung gezogen. Innerhalb der Reviews wird statt der offiziellen Bezeichnung lediglich das Tablet (1) verwendet. Man hat also zwei Synonyme, die einer Entität zugeordnet werden müssen. e i = {Lenovo Yoga Tablet 2, Tablet} Innerhalb der Kundenbewertung werden neben dem Tablet selber auch verschiedene Aspekte sowohl neutral als auch mit positiver oder negativer Wertung angesprochen. Ein Beispiel hierfür ist das in Satz 1 positiv erwähnte Design, durch das das Triple (Lenovo Yoga Tablet 2, Design, positiv) gebildet wird. Der Zeitpunkt, an dem die Meinung geäußert wurde, und der Vertreter der Meinung werden nicht explizit in der Kundenbewertung erwähnt, sondern müssen aus den Metadaten genommen werden. In diesem Beispiel gibt es mit dem Amazon-User Charalambos nur einen Meinungsvertreter. Der Zeitpunkt der Meinungsäußerung ist der 5. Januar Diese Information ist besonders wichtig, wenn untersucht werden soll, wie sich die Meinungen im Laufe der Zeit geändert haben. Ein vollständiges 5-Tupel wäre demzufolge (Lenovo Yoga Tablet 2, Design, positiv, Charalambos, ) In Tabelle 2 werden die restlichen 5-Tupel, die diesem Review entnommen werden können, dargestellt. 5-Tupel (Lenovo Yoga Tablet 2, Design, positiv, Charalambos, ) (Lenovo Yoga Tablet 2, Standfuß, positiv, Charalambos, ) (Lenovo Yoga Tablet 2, Dolby App, positiv, Charalambos, ) Satz Satz 1 Satz 2 Satz 4 6

15 Fachliche Grundlagen (Lenovo Yoga Tablet 2, Display, positiv, Charalambos, ) Satz 5 (Lenovo Yoga Tablet 2, Performance, negativ, Charalambos, ) Satz 7 (Lenovo Yoga Tablet 2, WLAN, negativ, Charalambos, ) Satz 8 (Lenovo Yoga Tablet 2, Akku, negativ, Charalambos, ) Satz 9 / 10 (Lenovo Yoga Tablet 2, Speichererweiterung, negativ, Charalambos, ) Satz 11 (Lenovo Yoga Tablet 2, Peripherieanbindung, negativ, Charalambos, ) Satz 16 (Lenovo Yoga Tablet 2, Tablet, neutral, Charalambos, ) Satz 17 (Lenovo Yoga Tablet 2, Preis, negativ, Charalambos, ) Satz 18 (Lenovo Yoga Tablet 2, Tablet, negativ, Charalambos, ) Satz 18 Tabelle 2 Meinung 5-Tupel Aufgaben und Probleme Für die Sentiment Analyse ist es zuerst notwendig, die essentiellen Bestandteile des im vorherigen Kapitel definierten 5-Tupel zu finden. Je nach Ebene der Sentiment Analyse (Kapitel 2.1.3) sind allerdings nicht alle Bestandteile notwendig. Wichtig ist zunächst das Finden der Entitäten und ihrer dazugehörigen Aspekte. Auf mögliche Features wird in Kapitel eingegangen, während die Extraktion dieser Features in Kapitel beschrieben wird. Bereits an dieser Stelle ergeben sich Herausforderungen. Nur die relevanten Entitäten müssen herausgezogen werden 7

16 Fachliche Grundlagen und, wenn sie wie in Abbildung 1 auch unter Synonymen auftreten, gruppiert werden. Bei den Aspekten verhält es sich ähnlich und es kommt noch dazu, dass Aspekte nicht immer explizit genannt werden (Kapitel ). Natürlich muss auch in Erfahrung gebracht werden, ob zu den gefundenen Entitäten und Aspekten überhaupt eine Stimmung ausgedrückt wird oder ob schlichtweg Fakten genannt werden. Eine Übersicht über die verschiedenen Aufgaben in den jeweiligen Ebenen wird in [29] gegeben und im Folgenden kurz aufgelistet. Die Tabelle 3 macht deutlich, dass sich die Aufgaben der Sentiment Analyse an den Ebenen orientieren. Die Ebenen werden deswegen in den folgenden Abschnitten genauer erläutert. Ebene Dokumenten- Ebene Satz-Ebene Aspekt-Ebene Aufgaben 1. Klassifizierung von Kundenbewertungen mit den Klassen positiv, neutral, negativ. 1. Herausfinden, ob der gegebene Satz subjektiv ist und eine Meinung ausdrückt. 2. Klassifizierung des Satzes mit den Klassen positiv, neutral, negativ. 1. Aspekte extrahieren 2. Herausfinden, ob die Meinungen zu den Aspekten positiv, neutral, negativ sind. 3. Gruppierung der Aspekte und Zusammenfassung der Meinungen. Tabelle 3: Aufgaben der Sentiment Analyse 8

17 Fachliche Grundlagen Ebenen der Sentiment Analyse Man unterscheidet generell drei Ebenen, auch Level genannt, in der Sentiment Analyse. Die gröbste Ebene ist die Dokumenten-Ebene, bei der der gesamte Text nur eine Meinung zu einem Produkt ausdrückt. Dies findet zum Beispiel bei Filmkritiken Anwendung. Etwas feiner ist die Satz-Ebene, bei der jeder Satz einzeln analysiert wird. Häufig reicht aber auch dieser Feinheitsgrad nicht aus, weswegen bei der Analyse auf der Aspekt-Ebene jeder einzelne Aspekt einer Entität betrachtet wird. Im Folgenden werden die Ebenen genauer beschrieben und auf Besonderheiten eingegangen Dokumenten-Ebene Eine Analyse auf der Dokumenten-Ebene bezieht sich auf das gesamte Meinungs- Dokument. Es wird untersucht, ob insgesamt ein positives oder negatives Sentiment vorliegt. Eine Analyse auf dieser Ebene ist sinnvoll, wenn nur eine einzige Entität als Untersuchungsobjekt vorliegt. Die Meinung wird nur genauer von einer Instanz vertreten. Dies ist zum Beispiel bei Kundenbewertungen unterschiedlicher Produkte und Dienstleistungen der Fall, da hier meistens nur genau ein Produkt von einer Person bewertet wird. Problematisch wird es, wenn in einem Dokument mehrere Produkte bewertet werden, wie es bei Blog-Beiträgen vorkommt, oder wenn es, wie in Foren, mehrere Meinungsvertreter gibt. Sentiment classification assumes that the opinion document d (e.g., a product review) expresses opinions on a single entity e and the opinions are from a single opinion holder h. (Liu Bing, in [61] Seite 422) Das in Kapitel definierte 5-Tupel wird in diesem Fall vereinfacht dargestellt. (e, allgemein, s, h, t) 9

18 Fachliche Grundlagen Die Entität e wird von dem Vertreter der Meinung h mit der übergreifenden Stimmung s klassifiziert. Dabei können e, h und t bekannt, unbekannt, relevant oder irrelevant sein. Das Vorgehen bei der Sentiment Analyse entscheidet sich danach, welche Werte s annehmen kann. Man unterscheidet hierbei zwischen kategorischen Werten, wie zum Beispiel positiv und negativ, bei denen ein Klassifizierungsproblem entsteht, und numerischen beziehungsweisen ordinären Werten, wie zum Beispiel 1-10 Sterne, bei denen ein Regressionsproblem entsteht Satz-Ebene Die Analyse auf der Dokumenten-Ebene ist für viele Anwendungen zu ungenau, da im ganzen Dokument nur eine Meinung ausgedrückt werden kann. Eine genauere Untersuchungsmöglichkeit bietet die Analyse auf der Satz-Ebene. In diesem Fall wird jeder Satz auf eine ausgedrückte Meinung untersucht. Das in Kapitel definierte 5-Tupel wird auf der Satz-Ebene nicht genutzt. Dies liegt daran, dass die Analyse auf Satz-Ebene nur einen Zwischenschritt darstellt. Wenn der Satz aus dem Dokument gelöst ist, kann der Bezug auf die Entität verloren gehen. Der Satz Ich mochte es nicht. liefert auf Satzebene zwar eine negative Haltung und einen Meinungsvertreter, aber die Entität wird erst deutlich, wenn der Satz im Kontext zu den anderen Sätzen, also auf Dokumentenebene, gesehen wird. Klassifikation auf der Satz-Ebene kann entweder als 3-Klassen-Problem (neutral, negativ, positiv) oder als zweistufiges Problem gesehen werden, bei dem in einem ersten Schritt danach klassifiziert wird, ob ein Satz eine Meinung enthält und im zweiten Schritt, ob diese Meinung positiv oder negativ ist (vgl. Liu). Dieses Vorgehen wird auch als Subjectivity Classification bezeichnet. 10

19 Fachliche Grundlagen Subjectivity Classification Subjectivity Classification ist die Einteilung von Sätze in objektive und subjektive Sätze. Objektive Sätze nennen im Allgemeinen nur Fakten, während subjektive Sätze Meinungen, Stimmungen und Einstellungen bestimmter Personen gegenüber beliebigen Entitäten ausdrücken. Ein guter Indikator für Subjektivität sind Adjektive. Wiebe zeigt in [10] dass in einem Corpus mit mehr objektiven als subjektiven Sätzen die Wahrscheinlichkeit, dass ein Satz subjektiv ist, wenn er ein Adjektiv enthält, bei über 55% liegt. Dennoch kann der Unterschied zwischen einem objektiven und einem subjektiven Satz sehr subtil sein: Der Fernseher hat ein gutes Bild. Der Fernseher ist ein gutes Gerät, um Filme zu gucken. Obwohl beide Sätze das Adjektiv gut enthalten, ist nur der erste subjektiv, während der zweite objektiv ist. Darüber hinaus können auch Substantive der Subjectivity Classification dienen. Riloff et al erreichen in [22] mit dem naïve Bayes Klassifikator (Kapitel )und Substantiven als Features eine Genauigkeit von circa 81%. Kamal versucht Subjectivity Classification in [31] durch überwachtes Lernen. Dafür nutzt er Unigrams und die Features TF-IDF, Position, Part-of-Speech, Opinion Indicator Seed Word (Stimmungswörter), Negation und Adverbien. Von den angewandten Klassifikatoren erzielte der naïve Bayes die besten Ergebnisse. Als präzisestes Feature stellte sich Part-of-Speech heraus. Eine weitere Herangehensweise zur Klassierung nach subjektiven und objektiven Sätzen ist in [23] zu finden. Das in den meisten Fällen außer Acht gelassene Feature Readiblity (Lesbarkeit) wird hier zur Klassierung genutzt. Die These dabei ist, dass Sätze mit schlechter Lesbarkeit dazu tendieren, objektiv zu sein. Als Beispiel hierfür kann ein Satz aus dem Wikipedia-Artikel zum Thema Flash-Speicher 3 dienen: 3 11

20 Fachliche Grundlagen Anders als das Gate bei normalen MISFETs ist das Floating-Gate von allen anderen Teilen (Kanalgebiet und von Steuer-Gate) durch ein Dielektrikum (derzeit meist Siliziumdioxid) elektrisch isoliert; das Potential auf dem Floating-Gate ist daher im Grunde undefiniert (dies wird auch als schwimmend, englisch floating, bezeichnet). Dieser Satz ist nicht leicht verständlich, da er neben einer recht komplexen Struktur auch viele Fachbegriffe enthält. Zum Testen der aufgestellten These werden sechs verschiedene Lesbarkeits-Indikatoren als Feature genutzt. Jeder dieser Indikatoren basiert auf mindestens einem der folgenden Merkmale: 1. Durchschnittlich Wortlänge 2. Durchschnittliche Satzlänge 3. Durchschnittliche Anzahl einsilbiger Wörter pro Satz 4. Durchschnittliche Anzahl mehrsilbiger Wörter pro Satz 5. Bekanntheit der Wörter (Frequenz in Leipzig`s Wortschatz 4 ) Die eigentliche Klassifikation wurde mit einer Support Vector Machine vorgenommen. Obwohl die verwendeten Merkmale als rather crude (Remus) anzusehen sind, konnte mit dem Experiment ein Verhältnis zwischen Lesbarkeit und Subjektivität hergestellt werden. Die Lesbarkeit ist also ein brauchbares Feature für die Subjectivty Classification auf Satz-Ebene Sarkasmus Sarkasmus bezeichnet beißenden Spott und Hohn, der oftmals sehr subtil vermittelt wird und dadurch maschinell besonders schwierig zu erkennen ist. Im Kontext der Sentiment Analyse bewirkt Sarkasmus, dass eine positive Stimmung negativ wird und umgekehrt. Nach Liu in [33] spielt Sarkasmus in Kundenbewertungen eine untergeordnete Rolle, während er online häufig in Diskussionen und Kommentaren anzutreffen ist

21 Fachliche Grundlagen Eine häufige Datenquelle für die Forschung in Sarkasmus-Erkennung ist die Online- Plattform Twitter. In [51] wurde Sarkamus-Erkennung mithilfe von halb-überwachtem Lernen durchgeführt. Als Datensets dienten zum einen eine Sammlung von 5.9 Millionen Twitter- Beiträgen (Tweets) und zum anderen eine Sammlung von Amazon-Reviews. Zwei Beispielsätze aus den untersuchten Daten zeigen, wie schwierig Sarkasmus- Erkennung sein kann. 1. thank you Janet Jackson for yet another year of Super Bowl classic rock! (Twitter) 2. [I] Love The Cover (Amazon, Buch-Review) Der erste Satz bezieht sich auf den (angeblich) schwachen Super Bowl-Auftritt Janet Jacksons im Jahr Die negative Haltung wird hier nur durch den Vergleich mit dem viel kritisierten Auftritts im Vorjahr ( yet another ) erkennbar. Dennoch gibt es keinen expliziten Verweis darauf, dass das Vorjahr wirklich als negativ einzustufen gilt. Das zweite Beispiel wirkt alleingestellt zunächst durchaus positiv. Die Metadaten enthalten jedoch die Information, dass der Titel der Kundenbewertung don t judge a book by its cover ist. Durch diese subtile Nutzung der Redewendung, muss der Bewertungstext als negativ angesehen werden. Um diese Herausforderungen zu meistern, wurden in [51] Muster in Sätzen identifiziert. Dafür wurden zunächst spezifische Wörter, wie zum Beispiel Produktnamen, Buchtitel, Autoren und User, durch allgemeine Tags ersetzt. Anschließend wurden die vorkommenden Wörter in high-frequency words (häufig vorkommenden Wörter, kurz HFWs) und content words (Wörter, die nicht so häufig vorkommen, kurz CWs) unterteilt, wobei auch die gesetzten Tags und Satzzeichen als Wörter gelten. Ein Satzmuster kann aus 2-6 HFWs und 1-6 CWs bestehen. Ein einzelner Satz kann also mehrere Muster enthalten, die sich überschneiden können. Nachdem einige Muster aussortiert wurden, wurden die übriggebliebenen Muster als Feature-Vektoren mit den Werten exact Match (alle Teile des Musters treten in der korrekten Reihenfolge ohne zusätzliche Wörter auf), sparse Match (zusätzliche Wörtern können zwischen den einzelnen Teilen des Musters liegen), incomplete Match (nur ein paar Teile des Musters treten auf) und no Match (kein oder nur ein Teil eines Musters) 13

22 Fachliche Grundlagen genutzt. Zusätzlich wurden die Satzlänge, sowie die Anzahl von Ausrufezeichen, Fragezeichen, Anführungsstrichen und großgeschriebenen Wörtern als generische Feature genutzt. Vor der Durchführung der Klassifikation mit der KNN-Methode, wurde eine Basis, gegen die sich der vorgeschlagene Algorithmus messen muss, gebildet. Diese Basis basiert auf der Annahme, dass klassischer Sarkasmus die Form das Gegenteil von dem, was gemeint ist, sagen annimmt. Sollte eine Amazon-Kundenbewertung einen positiven Text, aber eine negative Sterne-Bewertung (1-3 Sterne) haben, erfüllt sich dieses Schema. Das gleiche gilt für den umgekehrten Fall. Das Ergebnis des Experiments zeigt, dass der Algorithmus der Mustererkennung effektiver als die Basis ist. Die Genauigkeit ist mit 0.76 höher als die der Basis (0.5). Darüber hinaus weisen das F-Maß (Basis 0.24; Experiment 0,788) und die falschen Negative/Positive darauf hin, dass die Annahme, Sarkasmus sei nur das Gegenteil von dem, was gesagt wird, zu trivialisiert ist und die subtileren Formen des Sarkasmus bei der Basis nicht erkannt wurden. Ein weiteres Ergebnis war, dass die Punktation der schwächste Prädikator ist. Die Ausnahme hierbei bilden drei aufeinanderfolgende Punkt ( ), die in Kombination mit anderen Features einen starken Prädikator bilden. Ein weiterer Versuch zur Sarkasmus-Erkennung wurde in [21] unternommen. Es wurde ein Algorithmus entwickelt, der Tweets, die eine positive Stimmung zu einer negativen Situation beinhalten, identifiziert. Dies ist eine sehr spezielle Form des Sarkasmus. Mithilfe eines Bootstrapping-Algorithmus und den Twitter-Hashtags #sarcasm und #sarcastic wurden zunächst sarkastische Tweets gesammelt und dann ausgehend vom Wort love, das als das häufigste positive Stimmungswort in sarkastischen Tweets gilt, weitere positive Stimmungswörter und negative Situationen gesammelt. Ein Satz galt dann als sarkastisch, wenn eine negative Situation direkt auf ein positives Stimmungswort fällt. Das Experiment hat gezeigt, dass die Kombination positive Verbalphrase gefolgt von negativer Situation ein guter Hinweis auf Sarkasmus ist, während die Kombination positive Verbalphrase gefolgt von negativem Sentiment weitaus schlechtere Werte erzielte. Dennoch stößt die Methode in einigen Situation an ihre Grenzen. Es wurden zwar Sätze wie 14

23 Fachliche Grundlagen I love fighting with the one I love love working on my last day of summer Can t wait to wake up early to babysit als sarkastisch identifiziert, aber es gab auch falsche positive. Dies kommt daher, dass einige Situationen häufig, aber nicht immer, negativ sind (es gibt Menschen, die tatsächlich gerne früh aufstehen). Des Weiteren wurden zu allgemeine Situationen ( I love working there ) als sarkastisch eingestuft Aspekt-Ebene Die Analyse auf der Aspekt-Ebene ist die genaueste Form der Sentiment Analyse. Anders als die Analyse auf der Dokumenten- oder Satz-Ebene, wird bei der Aspekt- Ebene das in Kapitel 2.1 definierte 5-Tupel (e i, a ij, s ijkl, h k, t l ) vollständig genutzt. Konkret bedeutet das, dass nun zu jedem Teil (Aspekt) einer bestimmten Entität, die Stimmung eines Meinungsvertreters zu einem bestimmten Zeitpunkt bestimmt werden kann. Anders als bei der Dokument-Ebene, in der ein komplettes Dokument nur eine Stimmung zu einer Meinung ausdrücken kann, können Meinungen nun differenzierter betrachtet werden. So ist es häufig der Fall, dass, zum Beispiel bei einer Produktbewertung, ein Teilbereich des Produkts als negativ angesehen wurde, obwohl andere Bereiche und das Produkt insgesamt als durchaus positiv gewertet wurden. Nach Liu sind für die Analyse auf der Aspekt-Ebene zwei Schritte, die Aspekt Extraktion und die Sentiment Klassifikation, ausschlaggebend. Die Aspekt Extraktion wird im folgenden Kapitel erklärt, während die Sentiment Klassifikation ein Teil des Kapitels 2.2 ist. 15

24 Fachliche Grundlagen Aspekt Extraktion Der erste Schritt ist zunächst immer das Finden und Extrahieren der einzelnen Aspekte. Man unterscheidet hier zwischen expliziten und impliziten Aspekten. Ein expliziter Aspekt ist im Normallfall ein Substantiv, das den Teilbereich der Entität benennt. Dies könnte im Bereich der Produktbewertungen zum Beispiel Geschwindigkeit oder Preis sein. Implizite Aspekte werden meistens durch andere Wörter beschrieben und nicht ausdrücklich genannt. So könnte der explizite Aspekt Preis implizit durch die Wörter billig oder teuer erwähnt werden, während Geschwindigkeit durch langsam oder schnell genannt werden kann. Für das Finden von expliziten Aspekten werden hauptsächlich vier verschiedene Herangehensweisen genutzt (vgl [33]). Zum einen wird die Extraktion anhand von häufig genutzten Substantiven und Nominalphrasen vollzogen. Im einfachsten Fall wird das hierbei mit einem Part-of-Speech-Tagger bearbeitet und anschließend nach häufig vorkommenden Substantiven und Nominalphrasen gefiltert. Diese Methode funktioniert vor allem bei Kundenbewertungen, da sich das Vokabular generell sehr ähnelt, wenn Menschen über die verschiedenen Aspekte eines Produkts schreiben. Die weniger häufig genutzten Wörter stehen meist nicht im direkten Zusammenhang zum Produkt und unterscheiden sich von Bewertung zu Bewertung stark. In fortgeschrittenen Methoden wird versucht, nur Substantive und Nominalphrasen zu extrahieren, die in Sentiment- Sätze vorkommen oder einem bestimmten Muster folgen. Zum anderen können Aspekte durch ihre Beziehung zu Stimmungswörtern extrahiert werden. Die Stimmungswörter selber sind oft bekannt ( großartig, schlecht ). Sollten die Aspekte nicht bekannt sein, kommt das dem Stimmungswort am nächsten stehende Substantiv, bzw. die am nächsten stehende Nominalphrase, als Aspekt in Frage. Weiterreichende Extraktion kann hier durch die Erkennung von Dependenzgrammatik erreicht werden. Dieses linguistische Gebiet beschäftigt sich mit der hierarchischen Struktur von Sätzen und den wechselseitigen Beziehungen, 16

25 Fachliche Grundlagen bzw. Abhängigkeiten, von Wörtern. Zur Erkennung von Dependenzen können spezielle Parser verwendet werden. Topic Models sind statistische Modelle, die vor allem in der Text Klassifizierung für das Finden von Topics, also Themenbereichen, verwendet werden. Man geht dabei davon aus, dass ein Dokument über ein bestimmtes Thema mehr themenspezifische Wörter enthält als ein Dokument, in dem dieses Thema nicht vorkommt. So enthält ein Dokument über das Thema Essenszubereitung wahrscheinlich Wörter wie kochen, braten und schmecken, während das Thema Haustiere eher Wörter wie Hund, Katze oder Hamsterrad enthalten wird. Im Normalfall tauchen in einem Dokument mehrere unterschiedliche Themen auf. Topic Models machen sich diese Eigenschaft zu Nutze, indem sie von der statistischen Verteilung der Wörter auf die Zusammensetzung der Themen schließen. Obwohl Topic Models zunächst nur der Themenerkennung dienen, können sie leicht für die Sentiment Analyse erweitert werden (vgl. [31]). Im Bereich der Aspect Extraction sind die gefundenen topics Aspekte. Allerdings müssen die Modelle hier erweitern werden, da zusätzlich zu den Aspekten auch die Stimmungswörter gefunden werden müssen. Mit Latent Semantic Analysis (LSA), Explicit Semantic Analysis (ESA), Hierachical Dirichlet Process (HDP) und Latent Dirichlet Allocation (LDA) gibt es verschiedene Topic Models, die für die Text Klassifizierung und die Sentiment Analyse genutzt werden. Die klassischen Vorgehensweisen sind hierbei das LSA und das LDA, wobei das LDA, beziehungsweise erweiterte Formen von ihm, das meistgenutzte Model darstellt. Aus diesem Grunde wird im Folgenden kurz genauer auf das LDA eingegangen, während die anderen Modelle zunächst außer Acht gelassen werden. Das Latent Dirichlet Allocation-Modell basiert, wie die anderen Modelle auch, auf einem Bayesschen Netz, in dem die Knoten Zufallsvariablen und die Kanten die Abhängigkeiten zwischen den Knoten beschreiben. Abbildung 2 stellt das LDA graphisch dar. Die schattierten und unschattierten Kreise zeigen beobachtbare und nicht beobachtbare (latente) Variablen, die gerichteten Pfeilen zwischen ihnen die Abhängigkeiten und die Rechtecke, die die Variablen umrunden, deuten eine mehrfache Ausführung der Schritte (die Anzahl wird jeweils durch den Buchstaben im Rahmen gezeigt) an. 17

26 Fachliche Grundlagen Abbildung 2: LDA Topic Model 5 Wenn M die Anzahl der zu untersuchenden Elemente ist, jedes Dokument eine Folge von N Wörtern ist, jedes Wort ein Element aus einem Vokabel-Index mit V unterschiedlichen Elementen und T die Anzahl der Topics ist, verläuft der Algorithmus zur Wortgenerierung so: 1. Für jedes Topic z = {1 K} ziehe die Dirichletverteilung ϕ Z ~ Dirchlet (β) 2. Für jedes Dokument m = {1 M} ziehe θ m ~ Dirchlet(α) für jedes Wort w i im Dokument m ziehe ein Topic z d,i ~ θ m ziehe ein Wort w d,i ~ ϕ Z d,i Es sollen also die Verteilung von Topic-Wörtern, die Ausmaße der Topics und weitere Modell-Parameter gefunden werden. In [59] hat das LDA zu einem mit dem Hidden Markov Model verbundenen Topic Model, dem LDMA, erweitert. Das LDMA geht anders als das LDA nicht davon aus, dass Wörter unabhängig voneinander auftreten und ignoriert somit auch die Wortposition. Durch das Hinzufügen einiger Variablen wird bei der Wortgenerierung entschieden, ob ein Wort als Unigramm, Bigramm oder Trigramm erstellt werden soll. Aufeinanderfolgende Wörter haben also generell das gleiche Topic

27 Fachliche Grundlagen Durch diese Erweiterung war es möglich, in einem Testdatensatz über Kundenbewertungen zu Digitalkameras genauere Aspekte als im LDA zu finden. In Tabelle 4 sind zur Veranschaulichung einige Beispiele abgebildet. Kundenbewertungen zu Canon-Kameras LDMA LDA Canon Canon Canon powershot Powershot Digital zoom Zoom Optical zoom Digital picture quality Picture Photos quality quality Tabelle 4: Extrahierte Aspekte im LDMA-Modell Während es viele Methoden gibt, um explizite Aspekte zu extrahieren, wurden bisher nur wenige Vorschläge der Wissenschaft, implizite Aspekte aus Texten herauszuziehen. Dies liegt unter anderem daran, dass der Großteil der in Kundenbewertungen genannten Aspekte explizit ist. Dennoch gibt es einige Arbeiten, die sich mit diesem Thema beschäftigen. In [66] werden implizite Aspekte mithilfe von Kookkurrenz-Assoziationsanalyse (co-occurrence Association Mining). Dieses Verfahren macht sich die Kookkurrenz, also das gemeinsame Auftreten, von Stimmungswörtern und Aspekten zu nutze. Das Stimmungswort bildet in der Assoziationsregel das Antezedens und der Aspekt die Konsequenz ( Wenn [Stimmungswort], dann [Aspekt] ). In einem ersten Schritt werden diese Assoziationsregeln generiert und in einem zweiten Schritt durch Clustering robuster gemacht. Anschließend wird nach Stimmungswörtern gesucht, denen kein expliziter Aspekt zugeordnet wird und anhand der generierten Regeln das beste Cluster und somit der geeignetste Aspekt zugeordnet. Dieses Vorgehen kann ein relativ hohes F-Maß von ca. 74% erreichen und durch das Hinzufügen von Substring-, Abhängigkeits- und topic model-regeln erweitert 19

28 Fachliche Grundlagen werden. Allerdings wird es dadurch beschränkt, dass nur implizite Aspekte gefunden werden können, die auch explizit im Dokument vorhanden sind. Als Alternative wurde in [18] ein mehrstufiger Algorithmus vorgeschlagen. Zunächst wird aus einem Trainingsdatensatz eine Liste mit allen einzigartigen impliziten Aspekten F, eine Liste mit allen einzigartigen Lemmata O und eine Kookurrenz-Matrix C aus den impliziten Aspekten und Lemmata mit den Dimensionen F x O generiert. Darauffolgend wird für jeden potentiellen impliziten Aspekt ein Wert berechnet, der sich aus der Summe der Kookkurrenz jedes Wortes geteilt durch seine Häufigkeit bildet. Für jeden Satz wird der Aspekt ausgewählt, für den der höchste Wert ermittelt wurde und dessen Wert eine vorher festgelegte Grenze überschritten hat. In Pseudocode wird der Algorithmus wie in Abbildung 3 dargestellt. Abbildung 3: Schoutens Algorithmus zur Erkennung neuer Aspekte Diese Methode stellt eine Verbesserung gegenüber anderen Verfahren dar und erreicht generell eine höhere Performance. Des Weiteren muss durch den vorgegeben Grenzwert nicht jeder Satz einen impliziten Aspekt enthalten. Eine Annahme, die der zuvor beschriebene Algorithmus trifft. Nachteilig wirkt sich aus, dass nur maximal 1 Aspekt pro Satz gefunden werden kann und der Grenzwert nicht pro Aspekt gilt. 20

29 Fachliche Grundlagen Sentiment Lexikon Ein offensichtliches Konzept der Sentiment Analyse ist es, Wörtern positive, negative und neutrale Stimmungen zuzuordnen. Diese Wörter können in Listen gesammelt und für die weitere Analyse, wie zum Beispiel bei der Klassierung 6, genutzt werden. Nach [33] gibt es grundsätzlich drei Vorgehensweisen, um ein Sentiment Lexikon zu erstellen: manuell, basierend auf Wörterbüchern und basierend auf dem gegeben Text-Korpus. Im manuellen Ansatz wird per Hand eine Liste aus positiven und negativen Wörtern zusammengestellt. Durch die Vielzahl möglicher Wörter ist die Aufgabe sehr zeitund ressourcenintensiv. So gibt es im Englischen über Adjektive 7, von denen viele dazu in Frage kommen, Stimmungen auszudrücken. Hinzu kommen nach Substantive und selbst Wörter, die häufig falsch geschrieben werden und dadurch am besten mehrmals in einem Sentiment Lexikon erscheinen müssten ( beautiful, beautifull ). Aus diesem Grund wird die manuelle Methode eher zu Verifizierung automatisch gesammelter Lexika genutzt. Bei dem auf Wörterbüchern basierenden Ansatz werden zunächst einige Wörter, deren Sentiment bekannt ist, manuell rausgesucht. Diese Wörter werden als Seed bezeichnet. Anschließend wird ein Online-Wörterbuch genutzt, um für die Seeds Synonyme und Gegenteile zu finden. Wenn zum Beispiel good als Seed gewählt und WortNet als Wörterbuch gewählt wird, würde man an die in Tabelle 5 gezeigten Wörter kommen. 6 siehe auch Kapitel zur Feature Selection 7 21

30 Fachliche Grundlagen Good Synonyme bang-up, bully, corking, cracking, dandy, great, groovy, keen,neat, nifty, not bad, peachy, slap-up, swell, smashing, old, satisfactory, acceptable, decent, solid, superb, well-behaved, hot, redeeming, serious Gegenteil bad Tabelle 5: Synonyme und Antonyme zu "good" (WordNet) Diese Wörter werden ins Lexikon aufgenommen. Dabei gilt, dass die Synonyme das gleiche Sentiment ausdrücken und die Gegenteile das gegenteilige Sentiment ausdrücken. Mit den neu gefundenen Wörtern kann nun eine neue Suche im Wörterbuch gestartet werden. So baut sich das Lexikon langsam auf. Am Ende des Prozesses kann das Lexikon manuell auf Korrektheit geprüft werden. Dieses Vorgehen wurde zum Beispiel in [43] und [67] genutzt. Der Nachteil dieser Methode besteht darin, dass der logische Zusammenhang zwischen den Synonymen nachlässt, wenn viele Iterationen durchgeführt werden. Dieses Problem wird in [68] mit dem Beispiel von WordNet aufgefasst. Es ist möglich, mit der Hilfe von Synonymen in nur drei Iterationen von good auf bad, also dem Antonym zu kommen (Abbildung 4). 22

31 Fachliche Grundlagen Abbildung 4: Vier Wege um von "good" auf "bad" zu kommen (Godbole) Um diesem Problem entgegenzuwirken, wurde der Algorithmus so angepasst, dass für jedes gefundene Wort ein Wert berechnet wird. Die gefunden Wörter verlieren an Gewicht, wenn sie über einen langen Pfad (die Sprünge von Wort zu den Synonymen) gefunden wurden. Der wahre Wert jedes Wortes ist die Summe aller Werte über die einzelnen Pfade. Zusätzlich dazu wird geprüft, ob ein genutzter Pfad zwischen positiven und negativen Wörtern wechselt. Pfade werden nur akzeptiert, wenn die Anzahl der Wechsel unterhalb einer bestimmten Grenze bleibt. Des Weiteren werden nur die Synonyme und Antonyme ausgewählt, die in der WordNet- Liste weit oben stehen. Dieses Vorgehen nutzt die Sortierung von WordNet nach Sense, also der Sinnhaftigkeit, der gegebenen Synonyme und Gegenteile. Zum Schluss werden von den gefundenen Wörtern nur diejenigen genommen, die die höchsten berechneten Werte haben, um nicht eindeutig negative oder positive Wörter ausschließen zu können. Der auf Wörterbüchern basierende Ansatz hat den Vorteil, dass Stimmungswörter recht einfach und schnell gefunden werden können. Allerdings sind die gefundenen Wörter sehr allgemein und nicht auf bestimmten Domänen bezogen. Stimmungswörter können in unterschiedlichen Bereichen andere Bedeutungen haben. So ist das Wort love fast immer positiv, wenn es aber in einem Bericht zu einem Tennisspiel genutzt wird, steht es höchstwahrscheinlich dafür, dass in diesem Spiel keine 23

32 Fachliche Grundlagen Punkte erzielt wurden. Ein ähnliches Beispiel ist der Nutzung von loud. Es ist erwünscht, dass Lautsprecher laut werden können, aber unerwünscht, dass der Kühlschrank laut ist. Um auf dieses Problem besser reagieren zu können, wird statt des Wörterbuchs basierten Ansatz der auf dem Text-Korpus basierende Ansatz genutzt. Der Korpus basierte Ansatz ist angepasster und enthält in der Regel mehr themenspezifische Wörter. Eines der ersten Konzepte für diesen Ansatz wird in [63] vorgeschlagen. Ausgehend von einigen manuell ausgesuchten Adjektiven als Seed, sollten mithilfe bestimmter Regeln neue Adjektive im Korpus gefunden werden. Die Idee hinter diesen Regeln ist, dass zusammenhänge Sätze, Wörter und Satzteile in ihrem Sentiment konsistent sein sollten. Eine der Regeln besagt beispielsweise, dass Adjektive, die mit einem and verbunden sind, die gleiche Stimmung ausdrücken ( this refrigerator is quit and spacious ). Ähnliche Regeln wurden für Verbindungen mit or, but, either-or und neither-nor aufgestellt. Da diese Verbindungen in der Realität nicht immer so konsistent sind, wurden anschließend mithilfe eines log-linearen Regressionsmodels die Informationen unterschiedlicher Verbindungen kombiniert, um zu prüfen, ob die verbundenen Adjektive jeweils das gleiche Sentiment haben. Durch Clustering wurden die Adjektive in Subsets mit gleicher Orientierung verteilt und nach Frequenz ausgewählt. Dieses Vorgehen ist eines der Schlüsselkonzepte der Korpus basierten Lexikongenerierung und wurde in mehreren Werken genutzt und erweitert. So wird dieses Vorgehen in [63] angewandt und zusätzlich nach der Kookkurrenz von Wörtern gesucht. Für jedes Wort, das nicht als Seed verwendet wird, wird die Häufigkeit ki(p/n), dass das Wort zusammen mit einem positiven/negativen Seed auftritt, berechnet. 1 ki(p n) Mit der Häufigkeit kann anschließend die Wahrscheinlichkeit der Kookkurrenz ki(p n) Op O p n = und das darauf basierende Log-Verhältnis ln berechnet werden. Dieses Verhältnis bildet den sogenannten polarity score (Polaritätswert). Wörter, mit einem ausreichend hohen Polaritätswert werden mit in das Lexikon aufgenommen. On 24

33 Fachliche Grundlagen Mit diesen beiden Herangehensweisen können zwar gezielt Wörter, die zum Korpus gehören, gefunden werden, aber die Tatsache, dass Wörter je nach Kontext unterschiedliche Bedeutungen haben, bleibt bestehen. Diese Herausforderungen werden in [33] als basic rules of opinion definiert und in dieser Arbeit in Kapitel in der Featureauswahl beschrieben. Dabei ist vor allem der Teil zu erwünschten und unerwünschten Fakten zu beachten. 25

34 Fachliche Grundlagen 2.2 Maschinelles Lernen Das Fachgebiet des maschinellen Lernens beschäftigt sich mit der Entwicklung und Analyse von Algorithmen, die Wissen generieren können. Es sollen Muster, Regelmäßigkeiten und Gesetze in Daten erkannt werden und somit ein Schließen auf unbekannte Daten ermöglicht werden. Die Idee des maschinellen Lernens besteht seit es Computer gibt und ist eng an die Entwicklung von künstlicher Intelligenz gebunden. Bereits 1950, vier Jahre nachdem der erste Universalcomputer (ENIAC) in Betrieb genommen wurde, schlug Alan Turing seinen legendären Test vor, um zu sehen, ob Maschinen das Denkvermögen eines Menschen erreichen können. Die Orientierung an der Lernfähigkeit des Menschen blieb jahrelang bestehen. So wurde 1957 das erste neuronale Netz (Perzeptron) von Frank Rosenblatt entwickelt. Das Modell war stark an das menschliche Gehirn mit seinen Neuronen angelehnt. Die Entwicklung im Bereich der KI und des maschinellen Lernens stagnierte anschließend, da Expertensysteme für viele Aufgaben geeigneter waren. Abbildung 5: Gesichte des maschinellen Lernens 8 Erst Anfang der 90er Jahre erhielt das Forschungsgebiet wieder neuen Schub. Durch die Einführung der Statistik in das maschinelle Lernen wurde eine neue Herangehensweise geschaffen. Mithilfe von Wahrscheinlichkeitsrechnung und bestimmten Modellen können anhand von Daten Vorsagen getroffen werden. In dieser Zeit wurden viele der heute üblichen Modelle, wie die SVM, Entscheidungsbäume 8 26

35 Fachliche Grundlagen und neuronale Netze entwickelt (siehe Abbildung 6). Der Fokus ging immer weiter auf die Daten statt auf das Wissen. Im Bereich von Big Data ist statistische KI heute der Kernpunkt 9. Man unterscheidet hauptsächlich drei Arten vom maschinellen Lernen. Zum einen ist dies das Überwachte Lernen (supervised learning), das auch in der Sentiment Analyse weit gebräuchlich ist. Zum anderen wird auch das Unüberwachte Lernen (unsupervised learning) genutzt. Diese beiden Ansätze werden in den folgenden Kapiteln näher beschrieben. Die dritte Art ist das sogenannte Bestärkte Lernen (reinforcement learning). Hier interagiert eine Software, der Agent, mit einem dynamischen Umfeld, um ein bestimmtes Ziel zu erreichen. Der Agent bekommt keine Rückmeldung wie nah er vom Ziel entfernt ist und wird nicht in seinen Fehlern korrigiert. Er muss also zum einen das, was er bereits weiß, ausnutzen, aber zum anderen auch neue Möglichkeiten testen, um in Zukunft bessere Entscheidungen treffen zu können 10. Als Beispiel kann man sich einen Agenten vorstellen, der versucht Tic-Tac-Toe zu erlernen 11, indem er das Spiel gegen jemanden spielt. Diese Form des maschinellen Lernens spielt in der Sentiment Analyse eine eher untergeordnete Rolle, weswegen sie im Folgenden nicht genauer erklärt wird Sentiment Klassierung durch überwachtes Lernen Das überwachte Lernen erfolgt generell durch die Einteilung der Werte in bestimmte Klassen. Klassen sind disjunkte und aneinander grenzende Intervalle mit Merkmalswerten. Die Einteilung in die Klassen wird als Klassierung bezeichnet. Besonders bei großen Datensets kann die manuelle Klassierung eine lange Zeit beanspruchen. Deswegen werden bestimmte Modelle genutzt, um die Klassierung durch maschinelles Lernen durchführen zu lassen. Ein solches Modell wird als Klassifikator bezeichnet. Im vorhergehenden Kapitel wurden bereits einige Klassifikatoren wie

36 Fachliche Grundlagen die Support Vector Machine oder der Bayes Klassifikator ernannt. Für die Zuordnung zu den Klassen benötigt ein Klassifikator bestimmte Merkmale, anhand derer er die Einteilung vornehmen kann. Solche Merkmale werden im Folgenden auch als Feature(s) bezeichnet. Die Feature-Auswahl ist beim überwachten Lernen durch Klassierung ausschlaggebend. Mögliche Features werden in Kapitel 2.24 besprochen. Sentiment Analyse kann als eine Aufgabe des überwachten Lernens mit drei unterschiedlichen Klassen positiv, negativ und neutral formuliert werden. In der Forschung werden häufig Online-Produktbewertungen als Datensatz verwendet, da diese leicht zu bekommen sind und häufig die vom Meinungsvertreter angedachte Gesamtbewertung in Form einer ordinären Bewertung mitliefern. So werden zum Beispiel Produktbewertungen auf Amazon mit 1 bis 5 Sternen bewertet, die dann in die Klassen neutral (3 Sterne), positiv (4 oder 5 Sterne) und negativ (1 oder 2 Sterne) unterteilt werden können. Zur Vereinfachung des Problems kann die neutrale Klasse auch nicht berücksichtigt werden. Die Sentiment Klassifizierung ist der traditionellen Text Klassifizierung (Unterteilung von Dokumenten in verschiedene Themenbereiche wie Sport, Reisen, Wirtschaft) mit dem Unterschied ähnlich, dass Stimmungswörter (z.b. gut, super, schlecht, miserabel) wichtiger als themenspezifische Wörter. Dadurch, dass Sentiment Klassifizierung eine Text Klassifizierung ist (Liu, Seite 31), können alle Klassierungs-Methoden des überwachten Lernens angewandt werden. Für das überwachte Lernen ist ein Trainingsdatensatz, mit dem die angewandten Klassifikatoren trainiert werden können, wichtig. Trainingsdaten müssen oft manuell erstellt werden. In der Wissenschaft gibt es zahlreiche Veröffentlichungen zu verschiedenen Ansätzen in der Sentiment Klassierung durch überwachtes Lernen. Eine gute Übersicht wird in [25] geboten. Hier wird anhand eines Korpus aus Filmkritiken Sentiment Klassierung mit verschiedenen Klassifikatoren und Features durchgeführt. Die Ergebnisse sind in Abbildung 6 zu sehen und werden im Folgenden kurz erklärt. 28

37 Fachliche Grundlagen Abbildung 6: Vergleich von verschiedenen Algorithmen in der Sentiment Klassifikation Zeile 1 zeigt den ursprünglichen Versuch. Die Filmkritiken wurden in einem Bag-of- Words-Modell zusammengefasst. Das Bag-of-Words-Modell stellt sowohl die Präsenz als auch die Häufigkeit von Unigrammen dar. Die Wörter, die in das Modell aufgenommen wurden, kamen aus einem vordefinierten Wort-Katalog, der zum Beispiel Wörter wie still oder really stinks enthielt. Die getesteten Algorithmen sind der naïve Bayes-Klassifikator (NB), die Support Vector Machine (SVM) und die Maximum-Entropy-Methode (ME), die im Gegensatz zum naïve Bayes kein bestimmtes Verhältnis zwischen den Features voraussetzt. Die ersten beiden Klassifikatoren werden in Kapitel genauer beschrieben. In Zeile zwei und folgend wird nicht mehr auf die Häufigkeit der Wörter, sondern nur noch auf ihre Präsenz geachtet. Es werden Tests mit Bigrammen, POS-Tags und nur mit Adjektiven gemacht. Dabei hat sich herausgestellt, dass nur Bigramme gegenüber Unigrammen eine schlechtere Genauigkeit erzielen und Adjektive nicht so präzise sind, wie die am häufigsten vorkommenden Unigramme. In der letzten Zeile wird die Position des Worts im gesamten Dokument mit einbezogen. Da Filmkritiken oft mit einer allgemeinen Stimmung beginnen, dann die Handlung erklären und am Ende die Sicht des Autors zusammenfassen, wird die Position durch erstes Viertel, letztes Viertel und Mittelteil angegeben. Pang et al kommen zu dem Schluss, dass die Support Vector Machine 29

38 Fachliche Grundlagen die besten Ergebnisse erzielte, aber weit hinter den in der klassischen Textklassierung nach Topics erzielten Ergebnissen liegt 12. Als Grund wird dafür unter anderem die verdrehte Schreibweise in den Filmkritiken angeführt. So enthält der Satz This film should be brilliant. It sounds like a great plot, the actors are first grade, and the supporting cast is good as well, and Stallone is attempting to deliver a good performance. However, it can t hold up in einem Bag-of-Features-Modell viele positive Feature, obwohl das Gesamtsentiment negativ ist Sentiment Klassierung durch unüberwachtes Lernen Im Gegensatz zum überwachten Lernen wird im unüberwachten Lernen kein Trainingsdatensatz benötigt. Die Erstellung eines Trainingsdatensatzes erfordert oft eine manuelle Vorbereitung und ist vor allem bei großen Datasets sehr zeitaufwändig. Mit Methoden des unüberwachten Lernens kann diese Arbeit gespart werden. Allerdings sind sie oft nicht so genau und ausgereift wie die Klassierung im überwachten Lernen. Die Klassierung von Sentiments durch unüberwachtes Lernen wurde in mehreren Veröffentlichungen durchgeführt. Eine der bekanntesten und viel replizierten Techniken ist in [12] zu finden. Das unüberwachte Lernen wird hier auf einen Korpus von Kundenbewertungen aus verschiedenen Bereichen angewandt und im Folgenden beschrieben. Zunächst werden Sätze, die Adjektive und Adverbien enthalten, extrahiert. Dies geschieht mithilfe eines Part-of-Speech-Taggers (siehe Kapitel ). Da alleinstehende Adjektive und Adverbien zwar ein guter Hinweis auf Sentiment sein können, aber durch die Isolation der Kontext verloren gehen kann, werden immer zwei aufeinanderfolgende Wörter gezogen. Die Wörter werden entnommen, wenn sie den in der Tabelle 6 dargestellten Mustern entsprechen. Die Bedeutung der verwendeten Tags entspricht der PEN-Treebank und wird in Kapitel erklärt. 12 dort werden Genauigkeiten von über 90% erreicht 30

39 Fachliche Grundlagen Erstes Wort Zweites Wort Drittes Wort (wird nicht mit extrahiert) 1. JJ NN oder NNS Irgendetwas 2. RB, RBR oder RBS JJ Nicht NN, nicht NNS 3. JJ JJ Nicht NN, nicht NNS 4. NN oder NNS JJ Nicht NN, nicht NNS 5. RB, RBR oder RBS VB, VBD, VBN oder VBG irgendetwas Tabelle 6: Muster zur Extraktion von two-word Phrases (entnommen aus Turney) In einem zweiten Schritt wird die semantische Orientierung der extrahierten Phrasen ermittelt. Dafür wird die Transinformation (mutual information), also die Stärke des semantischen Zusammenhangs, zwischen den beiden extrahierten Wörtern genutzt. Der verwendete Indikator ist die Pointwise Mutual Information (PMI), der durch die Formel p(wort1 & wort2) PMI(wort1, wort2) = log2 ( p(wort1)p(wort2) ) definiert ist. Die Wahrscheinlichkeit, dass Wort1 und Wort2 zusammen auftreten, wird durch p(wort1 & wort2) beschrieben. Wenn die Wörter statistisch unabhängig sind, wird die Wahrscheinlichkeit der Kookkurrenz durch das Produkt p(wort1)p(wort2) gegeben. Das Verhältnis zwischen diesen beiden Werten drückt also die statistische Abhängigkeit zwischen den beiden Wörtern aus. Zusätzlich zum PMI wird die Sentiment Orientation (SO) eines Satzes mit der Formel SO(Satz) = PMI(Satz, excellent ) PMI(Satz, poor ) 31

40 Fachliche Grundlagen berechnet. Die Referenzwörter excellent und poor wurden gewählt, weil sie in einem klassischen 5 Sterne-Bewertungssystem häufig die Bezeichnung für die beiden Extrema bilden. Die Sentiment Orientation ist also positiv, wenn der Satz mehr mit excellent als mit poor assoziiert wird und umgekehrt. Der Algorithmus zur letztendlichen Berechnung des Sentiments nennt sich PMI-IR und basiert darauf, Anfragen an eine Suchmaschine im Web zu schicken. Turney verwendete dafür die Altavista Advanced Search Engine, da sie den NEAR- Operator, der die Suche auf die vorangehenden/nachfolgenden 10 Wörter des durchsuchten Dokuments einschränkt, unterstützt. Die Wahrscheinlichkeit ergibt sich aus den Treffern (hits) der abgesendeten Anfragen und wird durch die Formel hits(satz NEAR "excellent")hits ("poor")) SO(Satz) = log2 ( ) hits(satz NEAR "poor")hits ("excellent") definiert. Zum Schluss wird die durchschnittliche Semantic Orientation der Phrasen in den Bewertungen ermittelt. Die Bewertung gilt als empfehlenswert, wenn die durchschnittliche SO positiv ist und als nicht empfehlenswert, wenn sie negativ ist. Im Experiment wurde eine durchschnittliche Genauigkeit von 74% erreicht, die allerdings je nach Bereich schwankt (z.b. nur 66% bei Filmkritiken, aber 84% bei Reisen). Turneys Algorithmus wurde unverändert in [34] auf Twitter-Daten angewandt. Dabei waren von ca. 800 als positiv eigenordneten Tweets über 100 false positiv. Bei den als negativ eigenordneten Werten war dieses Verhältnis besser. Eine weitere Methode des unüberwachten Lernens wird von Zagibalov in [5]beschrieben. Die Sentiment Klassierung wird auf einem chinesischen Korpus mithilfe von Seeds durchgeführt. Seeds sind die Ausgangspunkte, von denen weitere lexikalische Einheiten ( lexical items ) gefunden werden sollen. Zagibalov nutzt also keine Seed-Wörter, sondern lexikalische Einheiten, die vom System als Einheit gesehen werden. Das können Morpheme 13, Phrasen oder Wörter sein. Zunächst muss 13 Kleinste Spracheinheit (z.b. Silben) 32

41 Fachliche Grundlagen also ein passendes Seed gefunden werden. In vorherigen Arbeiten wurde beobachtet, dass positive Wörter in der chinesischen Sprache öfter verwendet werden, selbst wenn ein negatives Sentiment ausgedrückt wird (z.b. nicht gut statt schlecht ). Der Algorithmus beschränkt sich also auf das Finden positiver Seeds und geht dabei wie folgt vor: 1. Finde alle Buchstabenfolgen zwischen nicht-buchstaben (z.b. Zahlen, Punktation), die Negation und Adverbien enthalten. Trenne die Folge an der Negation und speichere die Sequenz, die dem negierten Adverb folgt, ab 2. Zähle die Häufigkeiten der in 1. gefundenen eindeutigen Sequenzen, die dem negierten Adverb folgen (X) 3. Zähle die Häufigkeiten der in 1. gefundenen eindeutigen Sequenzen, die nicht dem negierten Adverb folgen (Y) 4. Finde alle Sequenzen, bei denen Y-X > 0 ist Bei der Klassierung wird das Dokument anschließend in Zonen unterteilt. Eine Zone ist ein Bereich zwischen Punktationen. Zonen gelten als positiv, wenn es überwiegend positive Vokabeln in ihnen gibt und als negativ, wenn es überwiegend negative sind. Da es zwei Vokabellisten (positiv und negativ) gibt, werden zwei Werte nach der Formel Spos/neg = L²d Lphrase SdNd berechnet, wobei Ld die Länge der passenden lexikalischen Einheit, Lphrase die Länge der aktuellen Zone, Sd der aktuelle sentiment score der lexikalischen Einheit und Nd eine Checkvariable, die -1 ist, wenn eine Negation vor der lexikalischen Einheit steht und ansonsten 1 ist. Der sentiment score einer Zone ist die Summe der Scores aller Items, die in der Zone gefunden wurden. Um das Sentiment für das ganze Dokument zu bekommen, wird die Differenz zwischen den postivien und negativen Zonen berechnet. Wenn diese größer als 0 ist, ist das Dokument positiv. Wie eingangs erwähnt, startet der Algorithmus mit nur einem Eintrag ( good ) in der Vokabelliste. 33

42 Fachliche Grundlagen Diese Liste wird erweitert, in dem die Klassierung mehrmals durchgeführt wird. Lexikalische Einheiten werden in die Vokabelliste aufgenommen, wenn sie mindestens zweimal auftreten und ihre relative Häufigkeit 14 hoch genug ist. Diese unüberwachte Auswahl an Seed-Wörtern stellte sich als äußerst effizient heraus und übertraf in manchen Fällen selbst die überwachte Auswahl an Seed-Wörtern (80% Genauigkeit bei überwachter, 82% Genauigkeit bei unüberwachter Auswahl). In [69] wurde versucht, das in Zagibilov beschriebene Vorgehen auf einen Korpus mit Filmkritiken in Englisch zu übertragen. Die Ergebnisse waren sehr schlecht und lagen nur bei circa 51% Genauigkeit. Die Dominanz von positiven Seeds könnte also eine Eigenheit der chinesischen Sprache sein. Eine andere Herangehensweise wird in [41] vorgeschlagen. Dokumente können mit Signalen, die Emotionen anzeigen, versehen sein. Dazu gehören zum Beispiel Smileys, aber auch Abkürzungen wie lol (laughing out lout) oder Sterne bei einer Restaurantbewertung. Hu benutzt ein Twitter-Dataset und stellt die These auf, dass in so kurzen Beiträgen selten Emotionssignale genutzt werden, die widersprüchlich zum Text sind. Für das unüberwachte Lernen wird ein neues Framework, das Emotional Signals for unsupervised Sentiment Analysis (ESSA), vorgestellt. Die ersten Schritte in dem Framework umfassen das Modellieren von Emotionsindikatoren und Korrelationen von Emotionen. Anschließend wird die Sentiment Analyse mit einem Modell, das auf dem orthogonal nonnegative tri-factorization model (ONMTF) basiert, durchgeführt. Die non-negativ matrix factorzization beschreibt im Grunde genommen einen Vorgang, bei dem eine Input-Matrix in mehrere kleinere Matrizen zerlegt wird, die alle keine negativen Elemente besitzen. Dadurch können die Matrizen leichter analysiert werden. Das Zerlegungs-Problem ist nicht immer lösbar, weswegen Werte auch approximiert werden. Die Grundidee das OMNTF besteht darin, dass Daten anhand der Verteilung von Features und Features anhand der Verteilung von Daten geclustert werden können. Mit dem OMTF-Model wird versucht, die Input-Wort-Matrix mit einer drei Faktoren 14 Verhältnis zwischen positiven und negativen Auftreten 34

43 Fachliche Grundlagen Matrix, die gleichzeitig Cluster Label zu Wörtern und ganzen Beiträgen zuweist, anzunähern. Das vorgeschlagene Modell erreicht auf den getesteten Datasets eine Genauigkeit von bis zu 74%. Es wurde also bewiesen, dass ESSA ein effektives Framework für unüberwachtes Lernen ist und Emotionssignale eine wichtige Rolle bei der Sentiment Analyse spielen können Klassifikatoren Sentiment Analyse kann mithilfe von Klassifikation, also dem Einteilen von Dokumenten in Klassen (positiv, negativ, neutral) durchgeführt werden. Ein Algorithmus, der diese Klassifikation implementiert, nennt sich Klassifikator. Für die Sentiment Analyse kann nahezu jeder Klassifikator genutzt werden. So wurden unter anderem in [14] neuronale Netze, Entscheidungsbäume in [7] und k-nearest-neighbor in [41] genutzt. Eines der genauesten Verfahren ist die Support Vector Machine, während der naïve Bayes aufgrund seiner ressourcenschonenden Performanz sehr beliebt ist. Beide Klassifikatoren werden im Folgenden erläutert Naïve Bayes Die Klassifikation nach dem( naïven) Bayes wurde mit als erstes genutzt um eine Sentiment Analyse anhand von Filmkritiken durchzuführen (Pang, Lee, Vaithyanathan 2002) und ist auch weiterhin eines der meistverwendeten Verfahren. Dieser Klassifikator beruht auf dem Satz von Bayes, der die Berechnung von bedingten Wahrscheinlichkeit beschreibt. Der Zusatz naïve bezeichnet die Annahme, dass jedes Attribut nur vom Klassenattribut abhängt. Dies bedeutet, dass die Wahrscheinlichkeit, dass ein Wort eines Dokuments in eine bestimmte Kategorie gehört, unabhängig von der Wahrscheinlichkeit, dass auch andere Wörter in dieser Kategorie sind, ist. Durch diese Annahme wird der naïve Bayes eine sehr ressourcenschonende Methode ([16], S 33). 35

44 Fachliche Grundlagen Allerdings ergibt sich hierbei vor allem bei der Sentiment Analyse ein Problem: die genutzten Feature sind nicht immer unabhängig, da sie durch Syntax und Semantik verbunden sind. Der naïve Bayes-Klassifikator ist dadurch eine sehr vereinfachte Methode. Dennoch sind die erzielten Ergebnisse vor allem im Verhältnis zur Effizienz und zum Zeitaufwand angemessen und machen den Bayes-Klassifikator deshalb zu einer beliebten Methode zur Text Klassierung (vgl. [82]). Der naïve Bayes wird durch die Funktion vnb = arg max v V P(vj) i P(ai vj) beschrieben. Dabei wird das Klassenlabel vnb = vj einem bestimmten j zugeordnet. Der Berechnung liegen die Wahrscheinlichkeiten der einzelnen Feature zu Grunde. Die Einfachheit dieses Algorithmus kann in einem (vereinfachten) Beispiel deutlich gemacht werden. Ziel sei die Sentiment Klassifikation anhand von Stimmungswörtern mit den Klassen positiv und negativ. Der Bayes-Klassifikator wurde mit den in Tabelle 7 abgebildeten Daten trainiert. Feature 1 Feature 2 Feature 3 Feature 4 Sentiment 1 Schnell Hübsch Teuer In Positiv 2 Langsam Hässlich Teuer In Negativ 3 Schnell Bäh Teuer Out Negativ 4 Langsam Hässlich Lächerlich Out Negativ 5 Schnell Hübsch Preiswert Angesagt Positiv Tabelle 7: Beispiel zur Bayes-Klassifizierung Ein neuer Datensatz (Schnell, Hässlich, Preiswert, In) soll klassifiziert werden. vnb = arg max v V P(vj) i P(ai vj) 36

45 Fachliche Grundlagen vnb = arg max v {positiv, negativ} P(vj) P(Feature 1 = Schnell) P(Feature 2 = Hässlich) P(Feature 3 = Presiwert) P(Feature 4 = In) Zunächst muss die Wahrscheinlichkeit P(positiv) und P(negativ) ermittelt werden. P(positiv) = 2 5 P(negativ) = 3 5 Anschließend können die bedingten Wahrscheinlichkeiten abgeschätzt werden. Für Feature 1 würde dies so aussehen. P(Feature 1 = Schnell Sentiment = positiv) = 2 2 P(Feature 1 = Schnell Sentiment = negativ) = 1 3 Die Berechnung muss für alle Feature durchgeführt werden. P(positiv)P(Schnell pos) P(Hässlich pos) P(Preiswert pos) P(In pos) = 0,25 P(negativ)P(Schnell neg) P(Hässlich neg) P(Preiswert neg) P(In neg) = 0,04 Normalisiert: 0,25 0,25 + 0,04 = 86% 0,04 0,04 + 0,25 = 14% 37

46 Fachliche Grundlagen Das neue Element (Schnell, Hässlich, Preiswert, In) wird der Klasse positiv zugeordnet. Bei geringen Datenmengen kann zusätzlich ein m-schätzer genutzt werden, um weitere Datensätze zu simulieren Support Vector Machine Support Vector Machines (SVM) sind Modelle, die im überwachten Lernen zur Klassifizierung und Regressionsanalyse genutzt werden können. Die mit ihr verbundenen Algorithmen sind dazu in der Lage, Muster zu erkennen und Daten zu analysieren. SVMs basieren auf dem Prinzip der Structural Risk Minimization (SRM). Eine Herausforderung des Maschinenlernens ist immer, ein Model aus einem endlichen Trainingsdatensatz zu generieren, ohne dass es durch Überanpassung zu speziell wird, um mit neuen Daten, die nicht aus dem Trainingsdatensatz stammen, umzugehen. Das SRM-Prinzip adressiert dieses Problem indem die optimale Balance zwischen Komplexität des Modells und der Fähigkeit, neue Daten aufzunehmen, gefunden werden soll. Es soll also die Hypothese h gefunden werden, mit der die kleinstmögliche Wahrscheinlichkeit garantiert werden kann, in einem unbekannten und zufälligen Datensatz einen Fehler zu machen (vgl. [38]). Der Ausgangpunkt für eine Support Vector Machine ist ein Trainingsdatensatz für dessen Objekte die Klasseneinteilung bekannt ist. (x1,y2), (x2, y2),, (xn, yn) mit xi Rg und yi {± 1} {für i = 1, 2,, N} Die Objekte werden durch Vektoren in einem Vektorraum repräsentiert, wobei xi den Eingangsdaten und yi den beiden Klassen entsprechen, in die eingeordnet werden soll. Die Aufgabe der Support Vector Machine ist nun, diese Menge von Objekten durch das Einfügen einer Hyperebene in zwei Klassen zu unterteilen. Im einfachsten Fall 38

47 Fachliche Grundlagen erfolgt eine lineare Trennung. Schon hier gibt es mehrere Möglichkeiten, die Hyperebene zu platzieren. Abbildung 7: Hyperebene im Vektorraum mit schmalen und breiten Rand Abbildung 8 zeigt zwei Möglichkeiten, die Hyperebene in einen linear trennbaren Datensatz zu legen. Im linken Bereich des Bildes wurde die Hyperebene so platziert, dass nur ein schmaler Rand bis zur Klassengrenze entsteht. Es wird jedoch angestrebt, den Abstand zur Hyperebene zu maximieren, um möglichst viele neue Datensätze in der Klasse aufnehmen zu können. Im rechten Teil der Abbildung ist dies besser gelungen. In der Praxis ist die Arbeit mit linear trennbaren Datensätzen der Ausnahmefall. Viel öfter kommt es vor, dass sich Klassengrenzen überschneiden. Die Hyperebene kann nicht wie auf der linken Seite der Abbildung 8 verbogen gelegt werden. Stattdessen wird der Vektorraum mit den Trainingsdaten in eine so hohe Dimension überführt, dass sich die Daten linear trennen lassen. Bei der Rücktransformationen in den ursprünglichen Dimensionsraum wird die lineare Hyperebene wieder zu einer nichtlinearen. Um den enorm hohen Rechenaufwand im höher dimensionalen Raum zu vermeiden, werden Kern-Funktionen, die die ursprüngliche ersetzen, verwendet. Die Kern-Funktionen machen die SVM zu einem universalen Lerner (vlg Joachims). Sie können dazu genutzt werden, die SVM zusätzlich zu linearen Funktionen, auch polynomische Klassifizierungsverfahren, radiale Basisfunktionen (RBF) und neuronale Netze lernen zu lassen. 39

48 Fachliche Grundlagen Abbildung 8: Hyperebene in einem nicht linear trennbaren Datensatz 15 Joachims legt in [38] sowohl in der Theorie als auch in einem Experiment nieder, warum Support Vector Machines ein für die Text Klassifizierung geeigneter Klassifikator sind. Zum einen ist die Text Klassifizierung, und damit auch die Sentiment Analyse, typischerweise ein Klassifizierungsproblem mit einer hohen Anzahl von relevanten Features. Die Gefahr der Überanpassung hängt bei SVMs nicht zwangsläufig von der Feature-Anzahl ab, wodurch sie in dieser Situation geeignet sind. Hinzu kommt, dass es für jedes Dokument nur einige Einträge im Dokument-Vektor gibt, die nicht 0 sind. So kann es gut sein, dass in einem Korpus von Kundenbewertungen, bei dem Stimmungswörter als Feature genutzt werden, das Wort amazing nur in 5 von 1000 Bewertungen vorkommt. Bei 995 Bewertungen wäre dieser Vektoreintrag also 0. Der induktive Algorithmus der SVM kann mit diesen dünnbesetzten Vektoren gut umgehen Gradientenverfahren Eine verbreitete Herangehensweise im maschinellen Lernen ist es, den Algorithmus während seiner Trainingsphase zu verbessern, indem die Gewichtung falsch platzierter Klassenlabel geändert wird. Dieses Vorgehen wird als Gradientenverfahren

49 Fachliche Grundlagen bezeichnet. Bei großen Datenmengen kann die Neuberechnung aller Gewichtungen zur sehr hohen Kosten führen. Während [70] die Limitierung hier bei der Last für die CPU sieht, stellt [71] eher Latenzen, Netzwerk-Beschränkungen und Bandbreiten bei verteilen Systeme als Probleme dar. Der Grundgedanke, dass das Gradientenverfahren zu hohen Kosten führen kann, bleibt allerdings bei beiden bestehen. Aus diesem Grund wird häufig ein vereinfachtes Verfahren, der Stochastic Gradient Descent (SGD), genutzt. Im Gegensatz zum ursprünglichen Gradientenverfahren werden beim SGD bei jeder Iteration des Algorithmus nur einige zufällig ausgewählte Gewichtungen angepasst. Durch diese Änderung senkt der SGD weiterhin das erwartete Risiko der Fehlklassifikation, aber ist dabei effizienter und einfacher zu implementieren als das normale Gradientenverfahren. Dies macht das SGD zu einem weit genutzten Verfahren. So wird es zum Beispiel in Praxisteil dieser Arbeit sowohl im SciKit-Learn als auch in Apache Spark beim Einsatz der Support Vector Machine verwendet Features Die Klassierung muss anhand bestimmter Merkmale, der Features, geschehen. In der Sentiment Analyse gibt es eine Vielzahl möglicher Feature. Die wichtigsten werden in diesem Abschnitt erläutert Wortart Die Wortart eines Wortes (engl. part-of-speech oder kurz POS) kann ausschlaggebend sein. Besonders für die Sentiment Analyse ist eine korrekte Zuordnung der Wörter zu ihren Wortarten, also das sogenannte Part-of-Speech-Tagging, wichtig. Adjektive drücken häufiger eine Stimmung aus, als es Substantive oder Verben tun und werden deswegen zum Teil auch als special feature angesehen. 41

50 Fachliche Grundlagen POS-Tagging geht weit über ein lexikalisches Zuordnen von Wörtern zu ihren Wortarten hinaus. In der deutschen Sprache unterscheidet man 10 Wortarten (und in Englisch 9, da Artikel nicht als eigene Wortart gezählt werden). 1. Substantiv (Nomen, Hauptwort) 2. Verb (Zeit- oder Tätigkeitswort) 3. Adjektiv (Eigenschaftswort) 4. Adverb (Umstandswort) 5. Pronomen (Fürwort) 6. Präposition (Verhältniswort) 7. Konjunktion (Bindewort) 8. Numerale (Zahlwort) 9. Artikel (Geschlechtswort) 10. Interjektion (Ausrufe- oder Empfindungswort) In der Praxis werden weit mehr als 10, respektive 9, POS-Tags genutzt. Das im Deutschen weitverbreitete Stuttgart-Tübingen-Tagset (STTS)16 nutzt zum Beispiel 53 verschiedene Tags. Im praktischen Teil dieser Arbeit wird vor allem mit dem Stanford Parser gearbeitet, der das im Englischen etablierte Penn Treebank POS Tags Tagset, mit 36 unterschiedlichen vordefinierten Tags, verwendet. Tag Bezeichnung Beschreibung Beispiel CC Coordinating conjunction Nebenordnende Konjunktionen; ausgeschriebene mathematische Operatoren CD Cardinal number Kardinalzahlen 1988 and, but, nor, or, yet plus, minus, times (*), over ( x y ) DT Determiner Artikel; Determinative a(n), every, no, the EX Existential there Das there, das die Existenz/Präsenz von etwas anzeigt FW Foreign Word Fremdwörter Hund another, any There (is a dog.)

51 Fachliche Grundlagen IN Preposition or subordinating Präpositionen, unterordnende on, in, since, for conjunction Konjunktionen JJ Adjective Adjektive; durch Bindestrichen verbundene good Zusammensetzungen, one-of-a-kind die als Adjektiv dienen second-smallest JJR Adjective, comparative vergleichende Adjektive mit der better Endung -er JJS Adjective, superlative Adjektive im Superlativ mit der Endung best -est, sowie most/least LS List item marker Buchstaben / Zahlen, wenn sie einer a), b), 1., 2. Aufzählung dienen MD Modal verb Alle Verben, die in der 3. Person can, could, may, Singular kein s als Endung haben might, must, ought, shall NN Noun, singular or mass Substantiv im Singular car NNS Noun, plural Substantiv im Plural; oft mit Endung cars s NNP Proper noun, singular Eigennamen im Singular California or mass NNPS Proper noun, plural Eigennamen im Plural Beckers PDT Prederterminer Determinative, die einem Artikel o- der Possessivpronomen vorangestellt all (her toys) such an awful movie sind POS Possessive ending Besitzanzeigende Wortendungen (the dog)`s (toy) PRP Personal pronoun Personalpronomen; Reflexsivpronomen; I, me, myself, mine Demonstrativpronomen PRP$ Possessive pronoun Possessivpronomen my, your, his, her RB Adverb Adverb; fast alle Wörter mit der Endung quietly -ly; nachgestellte Attribute; (good) enough negative Kennzeichner not / n t RBR Adverb, comparative vergleichende Adjektive mit der Endung -er earlier 43

52 Fachliche Grundlagen RBS Adverb, superlative Adverben im Superlativ earliest RP Particle Partikel (hier gibt es Überschneidungen off, well, um mit Adverben und Präposi- tionen) SYM Symbol Mathematische/wissenschaftliche Ω, Symbole und Ausdrücke TO To Nur das Wort to to UH Interjection Interjektion oh, please, uh, well VB Verb, base form Verben im Imperativ, Infinitiv oder Subjunctive (etwa der deutsche Konjunktiv) Do (it.) (You should) do (it.) (I suggest that you) do (it.) VBD Verb, past tense Verben im Präteritum; konjungierte Form von to be (If I) were (tall.) worked VBG Verb, gerund or present participle Partizip oder Gerundium writing singing VBN Verb, past participle Partizip written, sung VBD Verb, non-3 rd person Präsenz von Verben (ohne 3. Person); write singular present ist VB vorzuziehen VBZ Verb, 3 rd person singular Präsenz von Verben (nur 3. Per- writes present son); ist VB vorzuziehen WDT Wh-determiner Which/that als Relativpronomen which, that WP WH-pronoun Pronomen mit wh what, who, whom WP$ Possessive wh-pronoun Das Wort whose whose WRB Wh-adverb Adverben, die mit wh beginnen what, who, how, und how when Tabelle 8: Tags der POS-Treebank 44

53 Fachliche Grundlagen Trotz der umfangreichen Auswahl an Tags gibt es viele problematische Fälle (vgl. [20]), die hier zwar nicht in ihrer Gesamtheit aufgezählt werden sollen, aber zumindest beispielhaft erwähnt werden, um die Komplexität des Taggens darzustellen. Ein kritischer Fall ist die Unterscheidung zwischen Substantiven im Singular (NN) und Substantiven im Plural (NNS). Hierbei geht es nicht darum, ob das Substantiv in seiner Semantik in der Pluralform steht, sondern ob es die Pluralform des dazugehörigen Verbs auslöst. Im Satz Mathematics/NN is an interesting science wird Mathematics als Substantiv im Singular (NN) getaggt, obwohl es die für den Plural typische Endung s hat. Das gleiche gilt auch für den umgekehrten Fall, dass ein im Singular stehendes Substantiv die Pluralform eines Verbs auslöst. The deer/nns are hungry In diesem Satz wird deer aus dem Kontext heraus als NNS getaggt, obwohl das alleinstehende Wort auch im Singular sein könnte. Eine Ausnahme zu dieser Regel bilden Wörter, die eine Menge bezeichnen. Nine months/nns is a short time. Die Unterscheidung zwischen Substantiv (NN) und Gerundium (VBG) stellt ebenfalls ein komplexes Problem dar. Verbformen, die auf ing enden, können in vielen Fällen auch Substantive sein. Hinzu kommt, dass sowohl VBG als auch NN ein Artikel oder Possessivpronomen vorangestellt sein kann. Um diese Wortarten auseinander zu halten, kann geprüft werden, ob das Wort eine Pluralbildung erlaubt. Running/VBG isn t complicated. The writing/nn on the wall is beautiful. Im ersten Fall wäre die Pluralform ( Runnings aren t complicated. ) grammatikalisch falsch, wohingegen The writings on the wall are beautiful ein korrekt gebildeter Satz ist. Adjektive und Adverbien können zusätzlichen Aufschluss über die Wortart geben. Ein Substantiv kann nur durch ein Adjektiv (JJ) modifiziert werden, während ein Gerundium nur durch ein Adverb (RB) modifizierbar ist. This is an expensive/jj painting/nn. Painting/VBG well/rb is a skill hard learned. 45

54 Fachliche Grundlagen Weiterhin weist die Nutzung des Worts in einem of-satz darauf hin, dass es sich um ein Substantiv handelt. Steht das Wort jedoch in einer Nominalgruppe, ist es ein Gerundium. (Beispiel aus [20]) GM`s closing /NN of the plant GM`s closing/vbg the plant Sollte dem Wort mit der ing Endung ein Substantiv vorangestellt sein, ist dieses Wort auch ein Substantiv. (Beispiel aus [20]) the plant/nn closing/nn unsavory plant/nn closing/nn tactics/nns In der letzten Regel für die Unterscheidung von Substantiven und Gerundien ist festgelegt, dass ein -ing-wort, das vor einem Substantiv steht, ein Gerundium ist, wenn die Bedeutung des Satzes nach einer derartigen Umstellung, dass das Substantiv den Satzanfang bildet, gleich oder äquivalent bleibt. the rising/vbg market prices zu the market prices are rising/vbg Wenn sich die Bedeutung des Satzes hingegen verändert, ist das ing-wort ein Substantiv. hunting /NN permit Die Umstellung würde in diesem Fall a permit that is hunting ergeben, gemeint ist hingegen a permit for hunting. 46

55 Fachliche Grundlagen N-Gramme N-Gramme repräsentieren das zu untersuchende Dokument in Vektoren, die die Existenz und Häufigkeit der einzelnen Wörter darstellen. Dazu gehören sowohl U- nigramme, also N-Gramme, die nur aus einem Wort bestehen, als auch zusammenhängende Ausdrücke (z.b. das Tetragramm United States of America ). Nach Liu Bing ([33] S 33) sind N-Gramme die am häufigsten genutzten Features in der klassischen topic based Text Klassifizierung, also der Einteilung von Texten in einzelne Themenbereiche und werden auch für die Sentiment Analyse genutzt. In [16] wird erwähnt, dass N-Gramme mit mehr als 3 Wörtern nur bei sehr großen Datenmengen nützlich sind, da ein gemeinsames Auftreten der N-Gramme im gleichen Dokument unwahrscheinlich ist. Google hat in diesem Zusammenhang ein N- Gramm-Model, das auch Pentagramme (5-Gramm) einschließt, mit über zehn Billion Wörtern aus dem World Wide Web trainiert17. In [25] hat sich gezeigt, dass eine Vorhersage, die sich nur auf die Existenz von Wörtern als Feature bezieht, eine höhere Genauigkeit erreichen kann als eine, die die Häufigkeit der Wörter mit einbezieht. Für das reine Vorkommen von Wörtern ist das Bag-of-Word-Model geeignet. Dieses recht einfache Model stellt die Wörter in einem Dokument binär (vorhanden/nicht vorhanden) in einem Vektor dar. Dabei können Füllwörter herrausgefiltert werden. Abbildung 9: Bag-of-Words-Modell

56 Fachliche Grundlagen Lemmatisierung Lemmatisierung ist die Zurückführung von ihren Wörtern auf ihre Grundform, dem Lemma. Die Effektivität der Lemmatisierung hängt unter anderem von der untersuchten Sprache ab. In [6] wurde festgestellt, dass sich das Zurückführen von Wörtern auf ihre Grundform (running -> run) im Englischen negativ auf die Vorhersagegenauigkeit auswirkt, wohingegen die Lemmatisierung im Russischen positive Auswirkungen hatte Stimmungsverändernde Wörter In vielen Fällen können Wörter nicht isoliert betrachtet werden, sondern müssen im Zusammenhang mit anderen Wörtern analysiert werden. Die Stimmung, die in einer Meinung weitergegeben wird, kann durch die sogenannten sentiment shifter geändert werden. Zu den Sentiment Shiftern gehört unter anderem die Negation, die dem dazugehörigen Wort die gegenteilige Wirkung verleiht, aber auch Sarkasmus kann dazu genutzt werden, Stimmung zu ändern. Tabelle 9 zeigt die nach Liu klassifizierten Sentiment Shiftern mit Beispielwörtern in Englisch. Sentiment Shifter Negation Beispiel Not, never, none, nobody, nowhere, neither, cannot Modal auxiliary (modale Hilfsverben) Presuppositional Items (Präsuppositionen) I don`t like it. (das positive like wird negativ) Would, should, could, might, must, ought The picture quality could be better. (das positive better erhält einen negativen Kontext) Adverben: Barely, hardly Andere Wörter: fail, neglect 48

57 Fachliche Grundlagen It barely works. (works verliert seine positive Bedeutung) Sarcasm (Sarkasmus) What an amazing quality, it broke on the first day Decrease/Increase (Reduzierung/Zunahme) (Da Pain ein negatives Wort ist, entsteht durch die Re- This drug reduced my pain significantly duzierung von pain ein positives Sentiment) Tabelle 9: Stimmungsveränderte Wörter Stimmungswörter und Sätze In jeder Sprache gibt es bestimmte Wörter und Sätze, die besonders häufig dafür genutzt werden, eine Stimmung zu beschreiben. So werden positive Stimmungen im Deutschen oft mit großartig, super oder wunderbar beschrieben, während negative Stimmungen durch Wörter wie schlecht, miserabel oder widerlich ausgedrückt werden. Adjektive werden besonders häufig als Stimmungswörter genutzt, aber auch Substantive (Vergnügen) und Verben (hassen) kommen in Frage. Zusätzlich zu einzelnen Wörtern werden auch Redensarten genutzt, um Meinungen auszudrücken ( Bei dem Film ist doch Hopfen und Malz verloren ) Kompositionelle Regeln Die Rules of opionions, also die Regeln der Meinungsbildung, werden von Liu in [31] als weiterführende Ausdrücke, die dazu genutzt werden können, explizite oder implizite Meinungen zu bilden, beschrieben. Sie bestehen aus einer Kombination 49

58 Fachliche Grundlagen anderer Feature und dienen dazu, auf besondere Situationen einzugehen und genaue Entscheidungen zu treffen. Der Ausgangpunkt für die Regeln ist die formale Darstellung: 1. Positiv :: = P 2. PO 3. stimmungveränderndes_wort N 4. stimmungsveränderndes_wort NE 5. Negativ ::= N 6. NE 7. stimmungveränderndes_wort P 8. stimmungveränderndes_wort PO Dabei stehen P und N für atomare (Wort oder Phrase) [p]ositive und [n]egative Stimmungswörter und PO, NE für Ausdrücke, die sich aus mehreren atomaren Stimmungswörtern zusammensetzen. Das gleiche gilt auch für die stimmungsverändernden Wörter. Die einfachste Regel ist in 3, 4, 7 und 8 zu sehen. Wenn stimmungsverändernde Wörter und Phrasen im Zusammenhang mit dem Wort stehen, wird die gegenteilige Stimmung erzeugt. Ein weiteres Set von Regeln basiert auf der Änderung der Menge des Elements, zu dem die Meinung ausgedrückt wird. 9. PO ::= weniger_oder_gesenkt N 10. mehr_oder_erhöht P 11. NE ::= weniger_oder_gesenkt P 12. mehr_oder_erhöht Diese Regeln beschäftigen sich damit, dass eine Änderung der Menge von einem Sentiment die Stimmung, die ausgedrückt wird, ändern kann. Liu bringt hier das Beispiel von Medikamenten. Man nehme den Satz This drug reduced my pain significantly Normalerweise drückt Pain (Schmerz) eine negative Stimmung aus. Der Satz drückt insgesamt jedoch eine positive Stimmung aus, weil das Negative verringert wird (weniger Schmerz). Ganz ähnlich verhält es sich mit Mengenangaben generell. 50

59 Fachliche Grundlagen 13. PO ::= kein_wenig_weniger_oder_verringerte_anzahl_von NPI 14. viel_mehr_erhöhte_anzahl_von PPI 15. NE ::= kein_wenig_weniger_oder_verringerte_anzahl_von PPI 16. viel_mehr_erhöhte_anzahl_von PPI 17. NPI ::= potentiell_negatives_element 18. PPI ::= potentiell_positives_element Für einige Aspekte ist eine geringe Menge schlecht, während eine hohe Menge gut ist und umgekehrt. So würde this notebook costs a lot eine negative Stimmung ausdrücken (NPI) und durch the price of this notebook is reduced eine positve Stimmung erhalten (PO). Eine weitere Regel beschäftigt sich mit erwünschten und unerwünschten Fakten. Neben subjektiven Ausdrücken kann Stimmung auch in objektiven Phrasen ausgedrückt. Der Satz Schon nach einem Monat hatte ich eine Pfütze unter meinem Wasserbett ist objektiv, drückt aber dennoch eine unerwünschte Situation und somit eine negative Stimmung aus. Dabei ist das Wort Pfütze ansonsten kein Stimmungswort. 19. P ::= erwünschter_fakt 20. N ::= unerwünschter_fakt Liu nennt noch zwei weitere Regeln. Zum einen ist dies die Abweichung von einer Norm oder einem erwünschten Wertebereich und zum anderen die Produktion und der Verbrauch von Ressourcen und Müll. Ersteres lässt sich in den Regeln 21 und 22 zusammenfassen. Bei bestimmten Aspekte ist es erwünscht, in einem bestimmten Wertebereich zu bleiben. Wenn von diesem Wertbereich abgewichen wird, entsteht eine negative Stimmung. Als Beispiel hierfür kann der Satz Der Kühlschrank kommt nie unter 15 C dienen. 21. P ::= innerhalb_gewünschter_wertebereich 22. N ::= außerhalb_gewünschter_wertebereich Die letzten Regeln lauten: 23. P ::= produziert_viel_oder_mehr_ressourcen 51

60 Fachliche Grundlagen 24. produziert_kein_wenig_weniger_müll 25. verbraucht_keine_wenig_weniger_ressourcen 26. verbraucht_viel_oder_mehr_müll 27. N ::= produziert_kein_wenig_weniger_ressourcen 28. produziert_viel_oder_mehr_müll 29. verbraucht_viel_oder_mehr_ressourcen 30. verbraucht_keine_wenig_weniger_müll Sie beziehen sich auf den Verbrauch und den Konsum von Ressourcen und Müll. Ein typisches Beispiel hierfür ist der erwünscht niedrige Stromverbrauch technischer Geräte. Auch in anderen Werken wurden Kompositionsregeln aufgestellt. In [65] wurden sechs Regeln aufgestellt: polarity reversal, aggregation (fusion), propagation, domination, neutralization und intensification. Polarity Reversal ist die Umkehrung der Stimmung durch stimmungsändernde Wörter und die soeben beschriebenen Regeln zur Quantität eines Aspekts. Die Aggregation beschreibt das Zusammenschließen von gegenteiligen Wörtern zu der Stimmung des dominanteren Worts, zum Beispiel POS( beautiful ) und NEG ( fight ) wird zu POS( beautiful fight ). Propagation bezieht sich auf sogenannte transfer - und propagation -Wörter, die die Stimmung auf ein anderes Wort übertragen. So ist his behaviour allgemein kein stimmungshaltiges Wort, wenn es jedoch im Zusammenhang mit POS( to admire ) steht, wird das positive Sentiment auch auf POS( his behaviour ) mit übertragen. Die Regeln der domination sind wie folgt. Wenn die Polaritäten von einem Verb und einem Objekt entgegengesetzt sind, dann wiegt die Polarität des Verbs schwerer (NEG( to deceive ) und POS( hopes ) => NEG( to deceive hopes ). Wenn ein zusammengesetzter Satz durch but eingeleitet wird, wiegt der Satzteil mit dem but schwerer (NEG( It was hard to climb a mountain all night long ), but POS( a magnificent view rewarded the traveler at the morning ) => POS(ganzer Satz)). Die Regel der neutralization sagt aus, dass Stimmungswörter neutralisiert werden können, wenn bestimmte Modifizierer angebracht werden ( despite und NEG( worries ) wird zu NEUT( despite worries ). Die letzte Regel ist die der intensification und besagt, dass bestimmte Modifizierer die Stärke eines Sentiment erhöhen können (POS_Wert( happy ) < 52

61 Fachliche Grundlagen POS_Wert( very happy ). In einem Experiment hat diese Auswahl an Features eine signifikant höhere Genauigkeit gebracht als vorherige Methoden (bis zu 87%) Satz- und Sonderzeichen In bestimmten Fällen können neben den eigentlichen Wörtern auch Satzzeichen einen Aufschluss über die ausgedrückte Stimmung geben. Die übermäßige Nutzung von Ausrufe- und Fragezeichen drückt oft eine aggressive Haltung des Meinungsvertreters aus und kann ein Hinweis auf Negativität sein. Diese aggressive Haltung kann ebenso durch exzessive Großschreibung erreicht werden, wodurch selbst die Kapitalisierung von Wörtern ein Untersuchungsobjekt darstellen kann. Sonderzeichen werden unter anderem dafür verwendet, Emoticons zu erstellen. Diese Stimmungs-Symbole ( : - ), : - ( ) drücken Zufriedenheit oder Abneigung aus und sind somit wichtige Feature (vgl. [16]) Syntakische Abhängigkeiten Die bereits vorgestellten N-Gramme und das Bag-of-Words-Model sind nicht dazu in der Lage, syntaktischen Abhängigkeiten von nicht zusammenhängenden Wörtern abzubilden. Das heißt, dass in einem N-Gramm zwar die Folge guter Film vorkommen kann, aber die Folge ein guter und sehr spannender Film ein anderes N- Gramm bilden würde. In [74] wurde mithilfe eines Entscheidungsbaumes nach häufig vorkommenden Mustern in Filmkritiken gesucht. Diese wurden als Feature verwendet und haben zu einer sehr hohen Genauigkeit (87% statt circa 83% mit dem Bag-of-Words-Modell) geführt. 53

62 Fachliche Grundlagen TF-IDF-Maß Das TF-IDF-Maß ist ein Wert, der zur Beurteilung der Wichtigkeit eines Wortes in einem Korpus ausgewandt werden kann. Das TF steht für Term Frequency, also die Häufigkeit des Vorkommens eines Worts in dem Korpus. Wenn dieser Häufigkeit allerdings zu viel Gewicht zugeordnet wird, werden Wörter, die zwar häufig vorkommen, aber generell wenig sinnvolle Informationen weitergeben, in ihrer Wichtigkeit zu hoch eingeschätzt. Im Deutschen sind dies unter anderem Bindewörter wie und und Artikel. Aus diesem Grund wird mit der inversen Dokumentenhäufigkeit (IDF) ein Wert zur Bestimmung des Informationsgehalts eines Wortes berechnet. Der IDF-Wert wird durch die Formel D + 1 IDF(t, D) = log DF(t, D) + 1 bestimmt, wobei t das zu untersuchende Wort, D das zu untersuchende Dokument, DF(t, D) die Anzahl der Dokumente, in denen das Wort t vorkommt und D die Gesamtanzahl aller Dokumente im Korpus ist. Die Nutzung des Logarithmus sorgt dafür, dass der IDF Wert 0 wird, wenn das Wort t in allen Dokumenten vorkommt. Der TD-IDF-Wert kann anschließend durch TFIDF(t, d, D) = TF(t, d) IDF(t, D) berechnet werden, wobei TF(t, d) die Anzahl des Wortes t in einem Dokument d ist. 54

63 Technische Grundlagen 3 Technische Grundlagen In diesem Kapitel werden die technischen Grundlagen dieser Arbeit beschrieben. Dabei wird zunächst darauf eingegangen, wie Daten aus technischer Sicht definiert sind und wie diese gespeichert werden können. Es wird der Unterschied zwischen flüchtigem und nicht flüchtigem Speicher erklärt und daraus abgeleitet, warum die in dieser Arbeit genutzte in-memory-technologie sinnvoll ist. Darüber hinaus wird auf das verwendete System eingegangen, das sich auf dem Hadoop-Filesystem HDFS und dem Framework Apache Spark zusammensetzt. 3.1 Daten und Datenspeicher Der Oxford Dictionary definiert Daten als the quantities, characters, or symbols on which operations are performed by a computer, stored and recorded on magnetic, optical, or mechanical recording media, and transmitted in the form of electrical signals 18. Im übertragenden Sinne sind Daten also schlichtweg maschinenlesbare und -bearbeitbare Zeichenketten, die einer bestimmten Syntax entsprechen. Sie werden dafür genutzt, Informationen zu erlangen und Wissen zu generieren. So könnte die beispielsweise die Zeichenfolge Phoenix eine Stadt, ein Name oder eine mystische Kreatur. Erst durch einen Kontext wird aus den Daten eine bedeutungsvolle Information. Die Informationen werden zum Wissen, wenn sie organisiert, weiterverarbeitet oder anderweitig genutzt werden

64 Technische Grundlagen Abbildung 10: Wissenspyramide Jedes Jahr werden mehr digitale Daten auf der Welt produziert, verarbeitet und weitergeleitet. Während der weltweite Datenverkehr 2008 noch ein Volumen von 487 Milliarden Gigabyte hatte, sollen es im Jahre 2016 bis zu 1,3 Zettabyte, die fast dreifache Menge von 2008, sein 19. Für diese Arbeit sind vor allem Konzepte zur Speicherung von Daten wichtig. Moderne digitale Computer arbeiten mit dem Binärsystem. Jegliche Daten werden in eine Folge von Bits konvertiert. Ein Bit kann die Werte 0 und 1 annehmen. Es ist jedoch unüblich, nur einzelne Bits zu speichern, da für die Repräsentierung eines Schriftzeichens mehrere Bits notwendig sind. Die am meisten genutzte Speichereinheit ist deswegen das Byte, das eine Folge von 8 Bit darstellt und in der Anfangszeit der PCs zur Kodierung eines einzelnen Schriftzeichens ausreichte. Die wichtigsten Technologien zur Datenspeicherung sind heutzutage Halbleiterspeicher und magnetische Speicher. Die Hauptanwendung von magnetischen Speichern sind Festplatten zur Massenspeicherung von Daten. Eine Festplatte ist eine sich drehende Scheibe aus magnetisierbarem Material, über der ein Schreibarm (Actuator) mit einem elektromagnetischen Kopf sitzt 20. Beim Schreiben von Daten magnetisiert der Kopf Bereiche der html 20 Festplatten haben noch weitere Bestandteile (z.b. Anschlüsse, Actuatorachsen, Stromversorgung), die an dieser Stelle außer Acht gelassen werden 56

65 Technische Grundlagen Plattenoberfläche. Hierbei muss hervorgehoben werden, dass sie sich Platte physisch um die eigene Achse drehen muss. Die Bipolarität der Platte lässt sich anschließend wieder auf das Binärsystem übertragen: nicht magnetisiert für 0, magnetisiert für 1. Das gleiche Prinzip gilt auch beim Lesen der Daten: Um einen bestimmten Bereich zu lesen, muss sich die Platte erst bis zu der Stelle drehen, an der die Daten gespeichert sind. Dies nimmt Zeit in Anspruch und sorgt somit für langsamere Lese-/und Schreibezeiten. Der Vorteil von Festplatten besteht darin, dass sie nicht flüchtige Speicher sind, also ihre Daten auch ohne Stromzufuhr persistent halten können. Des Weiteren sind sie als sehr gereifte Technologie verhältnismäßig preiswert. Sie finden zum Beispiel als Datenspeicher von PCs oder Datenbanksystemen Anwendung. Halbleiterspeicher basieren auf einem anderen Prinzip: jedes Bit wird in einem integrierten Schaltkreis, der aus ein oder mehreren Transistoren besteht, gespeichert. Diese sogenannten Speicherzellen bilden die Basis vieler Datenträger, von denen hier zunächst die Solid State Disk (SSD) und der Random-Access Memory (RAM) hervorgehoben werden sollen. Die SSD verwendet NAND-Flash-Speicher, eine Technologie, bei der Floating-Gate-Transistoren eingesetzt. Das Floating-Gate ist eine isolierte Elektrode, die Ladung permanent speichern kann und erst beim Anlegen negativer Spannung wieder entladen wird. Dadurch ist auch die SSD, ähnlich wie die oben beschriebene Festplatte, ein nicht flüchtiger Speicher. Sie erreicht höhere Lese-/und Schreibgeschwindigkeiten, ist durch die fehlenden mechanischen Bewegungen leiser und robuster. Der RAM ist hingegen ein flüchtiger Speicher. Das heißt, dass die Daten bei einer Unterbrechung der Stromzufuhr verloren gehen. Der Name Random-Access Memory liegt dem Fakt zu Grunde, dass jede Speicherzelle direkt angesprochen werden kann und nicht sequenziell oder in Blöcken ausgelesen werden muss. Ram zeichnet sich deswegen durch besonders schnelle Zugriffszeiten aus und wird deshalb als Hauptspeicher von Computern verwendet. Nachteilig wirken sich der verhältnismäßig hohe Preis und die Flüchtigkeit des Speichers aus. 57

66 Technische Grundlagen Die Tabelle 10 fasst die Hauptmerkmale der drei vorgestellten Speichermedien zusammen. Bei den Zugriffsgeschwindigkeiten wird zwischen sequentiellen Zugriff und direktem Zugriff unterschieden, um den Vorteil des Random-Access Memory zu verdeutlichen. Zu beachten ist, dass die Werte von 2009 stammen. Zu dieser Zeit waren SSDs auf dem Verbrauchermarkt noch nicht so weit gereift. Speichermedium Flüchtigkeit Zugriffsgeschwindigkeit 21 Preis 22 sequentiell direkt Festplatte (SATA) Nicht flüchtig 53.2M Werte/sek 316 Werte/sek ab 0,03 pro GB SSD Nicht flüchtig 1924 Werte/sek 42.2M Werte/sek ab 0,35 pro GB RAM flüchtig 36.7M Werte/sek 358.2M Werte/Sekunde Tabelle 10: Vergleich von Speichermedien ab 7,37 pro GB 23 Da bei großen Datenmengen eine hohe Verarbeitungsgeschwindigkeit ausschlaggebend ist, wird RAM immer häufiger im Bereich des Big Data als In-Memory - Technologie eingesetzt. Dabei gilt es, zwei große Schwachpunkte des RAMs auszugleichen: Zuverlässigkeit und begrenzte Kapazität 24. Eine angemessene Lösung sind verteilte Systeme. Durch Replikation von Hardware und Daten werden die Auswirkungen bei Ausfällen reduziert. Des Weiteren wird das System sowohl in der Kapazität als auch in der Rechenleistung horizontal skalierbar. Das HDFS ist ein Dateisystem für verteilte Rechnersysteme und auch Apache Spark nutzt In-Memory Technologie. Beide Systeme werden in den folgenden Kapiteln erklärt. 21 Werte entommen aus Figure 3 in 22 Endverbaucherpreise von ( ) 23 DDR3-RAM 24 Vgl 58

67 Technische Grundlagen 3.2 Hadoop Distributed File System Das Hadoop Distributed File System (HDFS) ist ein Dateisystem zum Speichern großer Datenmengen auf verteilen Rechnersystemen (Cluster), das im Jahre 2008 im Rahmen des Hadoop-Projekts der Apache Foundation veröffentlich wurde. Ziel bei der Entwicklung ist vor allem hohe Fehlertoleranz, da Fehler in der Hardware bei einer Vielzahl von Rechnern eher die Regel als die Ausnahme darstellen. Des Weiteren soll die performante und skalierbare Arbeit mit großen Datasets ermöglicht werden. Typischerweise steht dabei eine hohe Lesegeschwindigkeit im Vordergrund. Datensätze sollen möglichst nur einmal erstellt bzw. geschrieben werden, aber dauerhaft zum Lesen bereit stehen. Die Architektur von HDFS ist nach dem Master/Slave-Modell aufgebaut. Den Kern eines HDFS-Clusters bildet ein Master-Server, der sogenannte Namenode (Master). Er ist für die Regulierung der clientseitigen Zugriffe auf Dateien verantwortlich. Darüber hinaus verwaltet er den Namensraum des Dateisystems. Der Namensraum ähnelt stark dem anderer Dateisysteme: er ist hierarchisch strukturiert (Ordner, Unterordner, Dateien) und ermöglicht das Erstellen, Löschen, Verschieben und Umbenennen von Dateien und Ordnern. Intern werden Dateien in Blöcke aufgespalten und in Datanodes (Slave) abgelegt. Das Mapping, also wie die Blöcke in den Datanodes abgelegt werden, wird ebenfalls vom Namenode verwaltet. 59

68 Technische Grundlagen Abbildung 11: HDFS-Architektur Apache Spark Spark ist ein open-source Framework für skalierbare und verteilt arbeitende Software, das 2009 an der University of Berkeley entwickelt und 2013 an Apache gestiftet wurde. Spark ein sehr wachsendes und aktives Projekt (Tabelle 11). Es ist zurzeit eines der drei aktivsten Projekte der Apache Foundation und hatte in der ersten Hälfte des Jahres 2014 mehr Beiträge von Entwicklern als MapReduce, YARN und HDFS zusammen. Auch im Vergleich mit allgemeinen Projekten des Big Data- und Machine Learning-Bereichs sticht Spark hervor. So ist es zum Beispiel aktiver als NumPy oder matplotlib, zwei beliebte Python-Projekte zur Datenverarbeitung

69 Technische Grundlagen Juni 2013 Juni 2014 beitragende Entwickler beitragende Firmen Gesamtanzahl lines of code Tabelle 11: Apache Spark Projekt-Aktivität Warum konnte Spark in so einer kurzen Zeit so wachsen und welche Anwendungsbereiche hat es zurzeit? Laut [78] ist die Fähigkeit große Datenmengen zu speichern kein Wettbewerbsvorteil mehr für Unternehmen, da die Kosten und der Aufwand für große Datenspeicher in den vergangenen Jahren stark gesunken sind. Die wirklichen Vorteile liegen nun in zwei Bereichen: Geschwindigkeit und Qualität der Datenverarbeitung. Die Geschwindigkeit beschreibt, wie schnell man von Daten zu Entscheidungen kommen kann, während die Qualität beschreibt, welche Algorithmen man auf die Daten anwenden kann. In beiden Bereichen sticht Apache Spark hervor. In [3] wurde zum ersten Mal die gute Performance von Spark SQL, das damals noch Shark hieß, beschrieben. In einem Experiment wurden SQL-Abfragen an sowohl Apache Hive, der Dataware House-Erweiterung von Hadoop und an Spark SQL geschickt. Die verwendete Abfrage war nach dem Muster SELECT * FROM grep WHERE field LIKE %XYZ% ; aufgebaut und wurde auf ein 50GB Dataset angewandt. Sowohl das Hive Cluster als auch das Spark Cluster haben bei einer gleichen Ausstattung 10 Nodes für die Durchführung der Anfrage zur Verfügung gehabt. Die enormen Unterschiede in der Performance können Abbildung 12 entnommen werden, wobei das cold heißt, dass zunächst ein RDD 26 erstellt werden muss und hot, dass das RDD bereits vorhanden ist und nur noch einmal verwendet werden muss. 26 Siehe Kapitel

70 Technische Grundlagen Abbildung 12: Ausführungszeigen Spark/Hive im Vergleich Ein ähnlicher Test wurde in der gleichen Arbeit auch zum Thema Machine Learning gemacht. Sowohl auf Spark als auch auf Hadoop wurde eine lineare Regression und ein k-means-algorithmus über 10 Iterationen auf ein 100GB Dataset angewandt. Spark war bei der linearen Regression über 25mal schneller und bei der rechenintensiveren k-means-methode immernoch über 3mal schneller. Noch beeindruckender sind die auf Databricks 27 veröffentlichten Ergebnisse 28 vom letzten Jahr: Spark hält den Weltrekord im Sortieren großer Datenmengen. Beim Test auf einem System aus 6592 Kernen und 206 Nodes konnte ein 100TB großes Datenset innerhalb von 23 Minuten sortiert werden. Zum Vergleich: der vorherige Weltrekord wurde von Hadoop MapReduce gehalten und lag bei der Nutzung von 10mal mehr Nodes bei 72 Minuten. Darüber hinaus wird Spark mit einer Vielzahl von anspruchsvollen Algorithmen zur Datenverarbeitung ausgeliefert und häufig erweitert. Die einzelnen Komponenten erlauben unter anderen maschinelles Lernen und das Arbeiten mit Graphen. Die 27 Entstanden aus dem UC Berkeley AMPLab, Erfinder von Spark

71 Technische Grundlagen Benutzung dieser Algorithmen kann sehr elegant sein. So hat zum Beispiel Yahoo! in einem Testprojekt das bisherige Hadoop basierte Programm zur Personalisierung der Website auf Spark umgestellt. Dabei ist das Projekt von Zeilen C++ Code auf nur 120 Zeilen Code in Scala geschrumpft. Viele weitere Firmen nutzen Spark in unterschiedlichsten Bereichen wie Sicherheit 29, Echtzeitempfehlungen 30 und Business Intelligence 31. In den folgenden Kapiteln wird näher auf den Umfang und die Architektur von Spark eingegangen. Des Weiteren werden die Resilient Distributed Datasets, die das fundamentale Konzept von Spark bilden, erläutert Spark Komponenten und Architektur Das Spark-Projekt besteht aus mehreren Komponenten, die in Abbildung 13 grafisch dargestellt sind. Die Hauptfunktionen befinden sich im Spark Core. Hier werden die Aufgaben verwaltet, das Dateisystem angesprochen und die Fehlerbehandlung in Gang gesetzt. Im Spark Core ist darüber hinaus die Spark API enthalten, die unter anderem die in Kapitel beschriebenen RDDs bereitstellt. 29 https://www.youtube.com/watch?v=ogedtapysym https://www.youtube.com/watch?v=o6qucfkzs_o 30 https://www.youtube.com/watch?v=3lbgifch4_g https://www.youtube.com/watch?v=dkou16sg https://www.youtube.com/watch?v=5p3xu49ec_i 63

72 Technische Grundlagen Abbildung 13: Spark Stack 32 Eine weitere Komponente ist Spark SQL. Seine Anfänge hatte Spark SQL als Apache Shark-Projekt, bis es komplett in Spark integriert wurde. Aus diesem Grunde findet man noch viele Publikationen unter dem alten Namen. Im Grunde genommen ist Spark SQL ein Datenanalyse-System, das neben SQL-Abfragen auch weiterführende Funktionalität ermöglicht. Es ist kompatibel zu Apache Hive, dem Datawarehouse-System von Apache, und ist in der Lage, Hive Query Language-Abfragen (HQL) auszuführen. Die Kompatibilität zu Hive ermöglicht die Arbeit mit Systemen, die die Hadoop API implementieren. Dazu gehört auch das Dateisystem HDFS, das im praktischen Teil dieser Arbeit genutzt wird. Weitere Dateiformate, wie JSON, XML und Parquet werden ebenfalls unterstützt. Für diese Arbeit ist außerdem das Modul Mlib wichtig. Mlib ist eine Bibliothek mit verschiedenen Algorithmen und Funktionalitäten im Bereich des maschinellen Lernens. Es wird eine Vielzahl von Algorithmen bereitgestellt. Darunter befinden sich auch die für die Sentiment Analyse üblichen Klassifikatoren, wie zum Beispiel Support Vektor Machines und Bayes. Die Klassen können in Java, Python und Scala genutzt werden. Ähnlich wie bei Spark SQL ist es auch hier möglich, Hadoop-Dateisysteme anzusprechen

73 Technische Grundlagen Die beiden anderen Komponenten, Spark Streaming und GraphX, spielen in dieser Arbeit eine eher untergeordnete Rolle. Spark Streaming ermöglicht die Verarbeitung von Datenströmen zur Laufzeit. GraphX hingegen ist eine Bibliothek mit diversen Funktionen zur Manipulation und Verarbeitung von Graphen. Sie stellt gängige Algorithmen wie zum Beispiel PageRank bereit. Beide Komponenten erweitern die RDDs von Spark und sind über Java, Python und Scala ansprechbar. Die in Abbildung 15 unter dem Spark Core abgebildeten Elemente sind die sogenannten Cluster Manager. Spark wird üblicherweise auf Computer Clustern, also einem Verbund mehrere Rechner, ausgeführt. Dabei koordiniert der SparkContext die verschiedenen, voneinander unabhängigen, Prozesse der Spark Anwendung. Um diese Aufgabe erfüllen zu können, muss der SparkContext mit einem Cluster Manager verbunden werden, der die Ressourcen über die verschiedenen Anwendungen verteilt. Derzeit werden drei verschiedene Cluster Manager unterstützt: Sparks eigener Cluster Manager, YARN und Mesos. Letztere sind ebenfalls Projekte der Apache Foundation. Abbildung 14: Spark Cluster-Architektur 33 Die höchste Einheit in Spark ist eine Applikation, also eine Instanz des Spark- Context. Innerhalb einer Applikation können mehrere Jobs ausgeführt werden. Dies 33 https://spark.apache.org/docs/latest/img/cluster-overview.png 65

74 Technische Grundlagen können einzelne Batches, interaktive Sitzungen mit mehreren Jobs oder dauerhaft verfügbare Server, die auf Anfragen antworten, sein. Jede Applikation hat sogenannte Executors, die sich auf Worker Nodes befinden. Ein Executor führt bestimmte Prozesse für die Applikation aus und bleibt für die gesamte Laufzeit der Applikation verfügbar. Also selbst dann, wenn er zurzeit keinen Prozess ausführt. Dies hat verschiedene Vorteile. Zum einen laufen so Applikationen isoliert voneinander ab (vgl. [81]) und zum (vgl. [80]) anderen können sie Prozesse schnell gestartet werden und auf die in-memory Daten zugreifen Nachteilig ist, dass sich Applikationen keine Daten teilen können. Mit Spark ist es möglich, Jobs sowohl innerhalb einer Applikation als auch applikationsübergreifend zu planen. Für die applikationsübergreifende Planung ist der Cluster Manager verantwortlich. Generell unterscheidet man hier zwei Arten, Ressourcen zu verteilen. Beim static partioning erhält jede auf dem Cluster laufende Applikation ein festgelegtes Maximum an Ressourcen. Etwas flexibler verhält sich das dynamic sharing of CPU. Zwar bekommen die Applikationen auch hier ein festgelegtes Maximum zugewiesen, aber wenn sie nicht laufen, können andere Applikationen die zugewiesenen CPU-Kerne nutzen. Innerhalb einer Applikation können mehrere Jobs gleichzeitig laufen (siehe Abbildung 16). Standardmäßig wird das First in-first out-prinzip genutzt (FIFO). Das heißt, dass der Job, der zuerst gestartet wurde, bei der Verteilung von Ressourcen priorisiert wird. Abbildung 15: Jobausführung in einer Spark-Applikation

75 Technische Grundlagen Resilient Distributed Datasets Apache Spark nutzt Resilient Distributed Datasets (RDD) zur Ausführung von inmemory Anwendungen auf Computer-Clustern. RDDs wurden zuerst in [4] als read-only, partioned collection of records beschrieben. Sie können nur durch Transformation (transformations), also deterministische Operationen, aus einem zuverlässigen Speicher oder anderen RDDs erstellt werden. Zu diesen Operationen zählen zum Beispiel Filter, Gruppierungen, Kreuzprodukte, Partitionen und weitere. Jedes RDD enthält Informationen darüber, wie es von anderen Datasets erschaffen wurde. Dies dient der Fehlertoleranz, da es so für ein Programm nicht möglich ist, ein RDD zu referenzieren, das es nach einem Fehler nicht wiederherstellen kann. Für die Nutzung von RDDs wird gegen die API von Spark programmiert. Der erste Schritt dabei ist die Definition und Transformation von RDDs aus einem zuverlässigen Speicher. Anschließend können auf diesen RDDs Operationen (actions) ausgeführt werden, die Werte zurückgeben oder Daten in einen Speicher exportieren. Eine Übersicht über die gängigen Transformationen und Operationen kann der Spark Dokumentation35 entnommen werden. Darüber hinaus können RDDs für die spätere Nutzung mithilfe der persist-methode im Speicher von Spark abgelegt werden. In [4] werden sowohl Vorteile als auch Grenzen von RDDs ausgearbeitet. Verglichen wird hierbei mit der Distributed Shared Memory (DSM) Technologie, die die Verteilung des Arbeitsspeichers auf verteilten Systemen beschreibt. Der größte Unterschied zwischen RDDs und den herkömmlichen DSM besteht auf in Granularität der Lese- und Schreiboperationen. DSMs verhalten sich feingranular (fine-grained). Dies bedeutet, dass bei einem Update jeder Datensatz einzeln angesprochen wird. Im Gegensatz dazu sind RDDs grob granular (coarse grained). Die Datensätze können also nicht einzeln angesprochen werden. Stattdessen beziehen sich die Operationen immer auf das gesamte Datenset und es wird die Information, durch welche Operation das RDD entstanden ist, mit abgelegt. Dadurch wird die Nutzung von RDDs auf Anwendungen beschränkt, die ihre Datenoperationen in Bulk ausführen

76 Technische Grundlagen wollen. Ein Vorteil hingegen ist, dass die Fehlerbehandlung effizienter wird, da fehlerhafte Partitionen eines RDDs schlichtweg neu berechnet werden können. Darüber hinaus wird auch ein großer Overhead gespart, da für die Wiederherstellung der RDDs keine Log-Dateien, sondern nur der sogenannte Lineage-Graph, notwendig sind. Als Lineage-Graph bezeichnet man dabei die Kette von Informationen, welche Transformationen auf den betreffenden RDDs durchgeführt wurden. Des Weiteren kann die Runtime-Umgebung bei der Nutzung von Bulk-Operationen auf RDDs durch Planung der Tasks die Performance verbessern. Resilient Distributed Datasets werden für gewöhnlich durch fünf Elemente (Tabelle 12) so dargestellt, dass ihre Abstammung nachvollziehbar bleibt. Bezeichnung Spark-Implementierung Erklärung Partition Partitions() Atomare Stücke des Datasets. Abhängigkeiten Dependencies() Abhängigkeiten zu den Eltern-RDDs Berechnungsfunktion Iterator(p, parentiters) Eine Funktion, um das RDD anhand der Eltern-RDDs zu berechnen. Anordnung der Daten preferredlocations(p) Informationen zur Anordnung der Daten. Auf einige Partionen p kann durch Lokalität der Daten schneller zugegriffen werden. Partionsschema Partitioner() Informationen zur Partitionierung der Daten (hash/range). Tabelle 12: Repräsentationselemente von RDDs Durch die Nutzung von Operationen können zwischen den RDDs zwei verschiedene Abhängigkeiten, nämlich die engen (narrow) und weiten (wide), entstehen. Bei engen Abhängigkeiten wird jede Partition des Eltern-RDD höchstens von einer Partition des Kind-RDDs benutzt, während es bei weiten Abhängigkeiten mehrere sein können. Diese bewusste Unterscheidung hat den Vorteil, dass bei engen Abhängigkeiten ein besserer Ausführungsplan auf nur einem Knoten des Clusters genutzt werden kann und die Wiederherstellung bei einem Fehler effizienter ist, da nur die 68

77 Technische Grundlagen verlorengegangenen Eltern-Partitionen wieder hergestellt werden müssen. Abbildung 16 stellt den Unterschied zwischen den beiden Abhängigkeitsformen grafisch so dar, dass ein blaues Rechteckt ein RDD ist, die in ihm liegenden ausgefüllten Rechtecke Partitionen sind und die gerichteten Pfeile die Abhängigkeiten sind. Abbildung 16: Abhängigkeitsformen von RDDs Daten in Apache Spark Apache Spark setzt auf das HDFS-Filesystem auf. Wie bereits in Kapitel 3.2 erwähnt, werden Dateien in HDFS in Blöcke unterteilt und auf Data Nodes abgelegt. Die Größe der Blöcke kann dabei je nach Einstellung des Systems entweder 124MB (Standard) oder 64MB. Dateien werden redundant auf die Data Nodes verteilt und dabei gesplittet, wenn sie die Blockgröße überschreiten. Wie genau die Dateien gesplittet werden, hängt vom InputFormat 36 ab. Textdateien können beispielsweise zeilenweise aufgeteilt werden

78 Technische Grundlagen Abbildung 17: Partitionierung einer Datei in HDFS Beim Laden von Dateien in Apache Spark orientiert sich die Partitionsgröße zunächst an den Blöcken im HDFS. Das heißt, die in Abbildung 17 gezeigte Datei würde als RDD mit zwei Partitionen erzeugt werden. Zur Anpassung der Parallelisierung ist es möglich, RDDs zu repartitionieren. Das führt dazu, dass die Daten auf dem Filesystem neu verteilt werden und kann somit anfangs Zeit in Anspruch nehmen. Die wichtigsten in dieser Arbeit verwendeten Datenstrukturen der MLLIB-Bibliothek und somit von Apache Spark sind Vektoren und LabeledPoints. Vektoren kann man in sparse (dünnbesetzte) und dense (dichtbesetzte) Vektoren unterteilen. In der Text-Klassifikation und somit auch in der Sentiment Analyse werden eher dünnbesetzte Vektoren genutzt, da es viele Feature (Wörter) in einem Korpus gibt, aber wahrscheinlich nur wenige dieser Wörter in einem einzelnen Dokument vorkommen. Man nehme zum Beispiel die beiden Sätze: Ich mag Hunde viel lieber als Katzen. Du magst Hamster viel mehr als Katzen. Das gesamte Vokabular ist also {Ich, mag, Hunde, viel, lieber, als, Katzen, du, magst, Hamster, mehr}. 70

79 Technische Grundlagen In einem dichtbesetzten Vektor würden die beiden Sätze wie folgt repräsentiert werden. Satz 1 = {1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0} Satz 2 = {0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1} Es werden also auch die Einträge, die nicht vorhanden sind, mit einer 0 repräsentiert. Dies führt bei einem großen Gesamtvokabular zu sehr großen, speicherintensiven Vektoren. Um dieses Problem zu umgehen, werden Daten auch in dünnbesetzten Vektoren dargestellt. In Spark wurden dünnbesetzte Vektoren unter dem Namen SparseVector 37 in der Version 1.0 implementiert (vgl. [72]). Die oben dargestellten Sätze sehen als SparseVector wie folgt aus: Satz 1 = {11, [0, 1, 2, 3, 4, 5, 6, 7], [1, 1, 1, 1, 1, 1, 1]} Satz 2 = {11, [3, 5, 6, 7, 8, 9, ], [1, 1, 1, 1, 1, 1, 1]} Der erste Eintrag stellt dabei die Gesamtgröße des Vokabulars bzw. aller Feature dar, der zweite Eintrag zeigt, an welchen Stellen (Index) der Vektor Einträge hat, die nicht 0 sind und der dritte Eintrag stellt den Wert dieser Einträge dar. Die Nützlichkeit dieser Systems wird klar, wenn man sich die Verhältnisse zwischen Gesamtanzahl der Feature und der Anzahl der Feature Dokument ändert. Die Phrase Ich mag. würde beim oben beschriebenen Vokabular mit einem SparseVector wesentlich effizienter dargestellt werden als mit einem dichtbesetzten Vektor. dense = {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0} sparse = {11, [1, 2], [1, 1]}

80 Sentiment Analyse in Apache Spark 4 Sentiment Analyse in Apache Spark In diesem Kapitel wird die Sentiment Analyse in Apache Spark beschrieben. Dabei wird zuerst auf die Sentiment Klassifikation auf Dokumenten-Ebene eingegangen. Es soll untersucht werden, wie gut Spark mit einer großen Anzahl von Features, wie es bei der Sentiment Klassifikation häufig der Fall ist, umgehen kann. Anschließend wird die Implementierung eines einfachen Algorithmus zur Sentiment Lexikon Generierung auf Apache Spark beschrieben. 4.1 Skalierbarkeit der Sentiment Klassifikation In diesem Kapitel wird auf die Sentiment Klassifikation in Apache Spark eingegangen. Dabei wird ein Vergleich zwischen einer lokalen Lösung, die auf der Python Bibliothek SKLearn basiert und Apache Spark, das auf einem Computer-Cluster der Hochschule für Technik und Wirtschaft Berlin aufgesetzt ist, durchgeführt. Das Ziel dieses Vergleichs ist das Testen der Skalierbarkeit von Algorithmen zur Sentiment Klassifikation. Obwohl also eine angemessene Genauigkeit der Analyse angestrebt wird, steht diese nicht im Vordergrund Vorgehen Die Grundlage für den Vergleich bilden die in Kapitel 4.2 beschriebenen Systeme und die in Kapitel 4.3 beschriebenen Daten. Mithilfe von zwei Python Skripte (Anhang) werden zunächst Feature gesammelt und dann die Sentiment Klassifikation mit dem naïven Bayes und der Support Vector Machine durchgeführt. Es wird versucht, die Skalierbarkeit der beiden Klassifikatoren zu beschreiben, indem verschiedene Konfigurationen des Clusters und unterschiedlich umfangreiche Daten genutzt werden. 72

81 Sentiment Analyse in Apache Spark Die Sentiment Analyse wird stark vereinfacht auf der Dokumenten-Ebene durchgeführt. Das heißt konkret, dass viele der in Kapitel 2 beschriebenen Grundlagen nicht getestet werden. Vielmehr geht es darum, ein möglichst großes Dataset mit Dokumenten in zwei Klassen, positiv und negativ, einzuteilen. Dabei sollen die Möglichkeiten des Cluster-Systems und des Apache Spark-Framework genutzt werden Technische Basis Die Testsysteme sind zum einen in Tabelle 13 und zum anderen in Abbildung 18 dargestellt. Das in Abbildung 18 gezeigte Computer-Cluster der Hochschule für Technik und Wirtschaft Berlin besteht aus insgesamt 6 Rechnern, die über das Netzwerk verbunden sind. Sie haben alle Zugriff auf das unterliegende HDFS- Filesystem mit insgesamt 10TB Speicherplatz. Der Zugriff auf das Cluster ist über das HTW-Netzwerk möglich und kann auch über VPN realisiert werden. Der Spark- Driver, also die steuernde Einheit von Apache Spark im Cluster (siehe Kapitel 3.3.1) wird auf dem Rechner Hadoop03 gestartet, während die Rechner Hadoop04-Hadoop08 als Worker arbeiten. Standardmäßig starten die jeweiligen Worker mit der vollen Anzahl an Kernen (24) und 512MB Ram per Executor. Abbildung 18: Architektur des HTW-Cluster 73

82 Sentiment Analyse in Apache Spark Lokales System Computer Cluster Leistung pro Rechner, 6 Rechner insgesamt CPU Intel i GHz Dell R420 Intel Xeon E v GHz 1600Mhz; Zwei Prozessoren bei Hyper Threading 12 => 24 Kerne RAM 16GB RDIMM Festplatte SATA 7200RPM, 64MB Cache SAS-Festplatten, Verbund über Netzwerk 8GB, davon ca. 6 GB nutzbar HDFS- Betriebssystem Windows Bit Debian GNU/Linux 7.7 Software Python 2.7, SciKit-Learn, NLTK Python 2.7, Apache Spark 1.2, NLTK Tabelle 13: Testsysteme Die dort dargestellte genutzte Software ist zum einen das Natural Language Processing Toolkit (NLTK) und zum anderen SciKit-Learn. Das NLTK ist eine Bibliothek zur Textverarbeitung, die vor allem in Python sehr verbreitet ist. Sie ist sehr umfangreich, gilt aber nicht immer als die performanteste Lösung. So ist zum Beispiel der Algorithmus zum Part-of-Speech-Tagging vergleichsweise langsam 38. Die zweite 38 https://honnibal.wordpress.com/2013/09/11/a-good-part-of-speechpos-tagger-in-about-200-lines-of-python/ 74

83 Sentiment Analyse in Apache Spark Software, SciKit-Learn, bietet eine Vielzahl an Funktionen zum maschinellen Lernen. Darunter sind diverse Klassifikatoren und Möglichkeiten zur Datenaufbereitung. Das Spark-Cluster lässt sich durch diverse Parameter in seiner Leistung konfigurieren. Bezeichnung spark.driver.memory spark.executor.memory Threading Partitions per RDD Beschreibung Speicher des Driver (512MB Standard) Speicher pro Executor (512MB Standard) Einstellbar unter master x[number of Threads], legt die maximale Threadanzahl fest Einstellbar beim Parallelisieren der RDDs, z.b. sc.parallelize(data, NumberOfPartitions) Tabelle 14: Konfigurationsparameter Datenbasis Die Datenbasis für die Sentiment Analyse in Spark bilden die in [76] gesammelten Amazon-Kundenbewertungen 39. Insgesamt umfassen unbereinigten Daten fast 35GB. Die Bewertungen stammen aus verschiedenen Produktkategorien. 39 https://snap.stanford.edu/data/web-amazon.html 75

84 Sentiment Analyse in Apache Spark Anzahl von Kundenbewertungen 34,686,770 Anzahl von Kunden 6,643,669 Anzahl von Produkten 2,441,053 Anzahl von Kunden mit > 50 Bewertungen 56,772 Durchschnittliche Anzahl von Wörter pro Bewertungen 82 Zeit Jun Mar 2013 Tabelle 15: Zusammenfassung Datenbasis Die Bewertungen befinden sich in verschiedenen, nach Kategorien unterteilten, Textdateien und haben folgende Metatags. Tag Bedeutung Beispiel product/productid Produkt ID B00004CQI3 review/userid Kunden ID A2H5D7IK95F07M review/profilename Kundenname ER review/helpfulness Andere Kunden empfanden dieses Review als hilfreich/nicht hilfreich 2/3 review/score Bewertung (numerisch) 5.0 review/time Zeit des Review review/summary Titel /Zusammenfassung Great Family Movie review/text Bewertungenstext This is a fantastic movie for... 76

85 Sentiment Analyse in Apache Spark Tabelle 16: Tags in Datenbasis Innerhalb des Textfiles stehen die Informationen zu den Metadaten immer innerhalb einer Zeile. Die einzelnen Bewertungen sind durch eine Leerzeile voneinander getrennt. Abbildung 19: Aufbau der Datenbasis Aufbereitung der Daten Die Daten sind in ihrer ursprünglichen Form nicht für die Klassifikation nutzbar. Zum einen beinhalten sie überflüssige Informationen und zum anderen sind sie in einem falschen Format. In einem ersten Schritt müssen nur die relevanten Informationen rausgefiltert werden. Dies ist zum einem der Review/Score und der Review/Text. Das Einlesen erfolgt auf dem lokalen System zeilenweise (Abbildung 20). Dabei werden die irrelevanten Zeilen übersprungen. 77

86 Sentiment Analyse in Apache Spark Abbildung 20: Einlesen der Daten in SciKit Learn In Spark ist dieses Vorgehen ungeeignet, da nicht sichergestellt werden kann, dass Reviews beim Partitionieren der Dateien nicht getrennt werden. Wie in Kapitel beschrieben, werden Dateien in Spark aus den Data-Nodes des HDFS-Filesystem heraus erstellt und zeilenweise in blockgroße Partitionen aufgeteilt. In Abbildung 21 ist die oben beschriebene Situation vereinfacht anhand einer 160MB Textdatei dargestellt. Man nehme an, dass in Zeile 442 die maximale Blockgröße von 128MB erreicht wurde. Die Datei wird auf dem HDFS-Dateisystem also auf zwei Data-Nodes verteilt abgelegt. Für den Aufruf der Datei in Spark mit dem, Befehl bedeutet das, dass Zeile in Partition 1 und alles ab Zeile 442 in Partition zwei zu finden ist. Mit den Befehlen getnumpartitions() und partitions.collect() kann dieses Verhalten nachvollzogen werden. 78

87 Sentiment Analyse in Apache Spark Abbildung 21: Aufteilung einer Datei in HDFS Diese Information ist wichtig, weil es durch dieses Verhalten vorkommen kann, dass ein Review/Score einem Review/Text nicht eindeutig zugeordnet werden kann. Um dieses Problem zu umgehen, wird in Spark ein zusätzlicher Bearbeitungsschritt durchgeführt. Die ursprüngliche Datei wird zunächst nach den relevanten Zeilen gefiltert und dann repartioniert, damit sich alle Daten an einem Punkt befinden. 79

88 Sentiment Analyse in Apache Spark Abbildung 22: Datenvorbereitung Spark Aus der Partition wird nun ausgehend von der in Python implementierten Logik, dass ein Review/Text immer auf den dazugehörigen Review/Score folgt, eine neue Datei erzeugt, die wieder im HDFS gespeichert wird. Nun sind alle zusammengehörigen Informationen in einer Zeile und können nicht mehr getrennt auftreten. Der Aufbau der Daten ist nun ID[;]Score[;]Review/Text. Dieser Vorgang muss für jede Datei nur einmal durchgeführt werden. Sowohl in Spark als auch in SciKit Learn werden Review/Text und Review/Scores für die Weiterverarbeitung getrennt gehalten und erst bei der Vorbereitung zur Klassifikation wieder zusammengeführt. Dies wird in Spark nun durch eine eindeutige Zeilennummer ermöglicht (Review/Text und Review/Score von Bewertung 1 befindet sich in Zeile 1 der ursprünglichen Datei). Der Review/Score ist bei der Klassifikation die erwünschte Klasse. Die Klassifikation soll ein binäres Problem sein. Das heißt, dass in den Dokumenten nur zwischen positiv und negativ unterschieden werden soll. Dabei gilt ein Score von über 3.0 als positiv und ein Score von 3.0 oder niedriger als negativ. Aus dem Review/Text werden die Features gebildet. Der Text wird in einzelne Wörter unterteilt und weiter bearbeitet. Es werden verschiedene Bearbeitungsschritte unternommen, die zum Testen der Skalierbarkeit allerdings teilweise weggelassen werden. Darunter sind das Entfernen von Punktation, Lemmatisierung, das Zuordnen der Wortart und das Entfernen häufiger Wörter, wie and, or und is, die 80

89 Sentiment Analyse in Apache Spark höchstwahrscheinlich keinen Einfluss auf das Ergebnis der Sentiment Klassifikation haben werden (stopwords). Abbildung 23: Funktionen zur Datenvorbereitung in Spark Anschließend muss der Text in ein für den Klassifikator lesbares Datenformat gebracht werden. Bei SciKit Learn geschieht dies über einen TFID-Vectorizer, der für jedes Wort im Dokument das TFID berechnet und abspeichert. Um ihn Spark ein ähnliches Verfahren hinzukriegen, müssten mehrere Schritte durchgeführt werden. Abbildung 24: Ermittlung TFIDF in Spark Zunächst werden die Dokumente mit einem Hash-Vectorizer gehasht. Das heißt, dass ein beliebiges Wort gemappt wird, indem mithilfe einer Hashfunktion ein Index 81

90 Sentiment Analyse in Apache Spark zugewiesen wird. Anschließend wird die Häufigkeit jedes Wortes anhand der Indizes berechnet. Der Vorteil dieser Funktion besteht darin, dass sie effizient ist, da keine globale Index-zu-Wort-Zuordnung berechnet werden muss. Es kann jedoch passieren, dass es zu Hash-Kollisionen kommt, also dass zwei unterschiedliche Wörter einen gleichen Hash-Wert erhalten und somit gleichgesetzt werden. Durch die Nutzung des HashingTF() entsteht in Spark ein Vektor, dessen String- Repräsentation in unten zu sehen ist. Vorne stehen die Hashwerte und hinten die Häufigkeit des Auftretens in dem Dokument. { , [51713, 91349, ], [1.0, 2.0, 1.0]} IDF und TFIDF sind in Spark getrennt. Zunächst muss IDF gebildet werden, indem die vorher berechneten Hash-Werte mit der Funktion.fit() in das IDF-Model geladen werden. Dadurch wird der IDF-Vektor berechnet, der anschließend mit der.transform() Anweisung skaliert werden kann. Das Ergebnis ist der TFIDF-Vektor: (u 4, SparseVector( , {51713: , 91349: , : })) dem an erster Stelle bereits seine ursprüngliche ID bzw. Zeilennummer hinzugefügt wurde. Zusätzlich zum Hash-Wert jedes Worts ist nun der TFIDF-Wert (siehe Kapitel ) angegeben. Spark erwartet für die Klassifikation Daten im Format LabeledPoint 40. Ein Labeled- Point besteht aus einem Double-Wert, der die Klasse bildet und einem Double-Array, das die Features enthält. Um diese benötigten Daten bereitzustellen, müssen zunächst die Review/Scores- und Review/Text-Einträge, die nun in der Form eines TFIDF-Vektors sind, wieder zusammengeführt werden. Dies geschieht mithilfe der join()-funktion über die anfangs zugeordneten IDs. Der LabeledPoint wird nun so dargestellt: 40 https://spark.apache.org/docs/0.8.1/api/mllib/org/apache/spark/mllib/regression/labeledpoint.html 82

91 Sentiment Analyse in Apache Spark (1.0,( ,[51713,91349,113450], [2.5257, , ])) Dieses Format kann anschließend von Spark zum maschinellen Lernen verwendet werden. In SciKit Learn wird statt des HashVectorizers ein CountVectorizer genutzt, der zum selben Ergebnis führt. Die Anwendung des TFID-Vectorizers ist ähnlich Klassifikation Die Klassifikation findet sowohl in Python als auch in Spark mit dem naiven Bayes und einer Support Vector Machine statt. Diese Klassifikatoren wurden aufgrund ihrer häufigen Nutzung in der Text Klassifikation und der generell hohen Genauigkeit ausgewählt. Während in SciKit Learn die auf hohe Datenmenge ausgerichtete C- Implementierung der LIBLINEAR-SVM 41 nutzt, wird in Spark eine eigene Implementierung mit SGD verwendet. Die unterliegenden mathematischen Funktionen sind auf der Spark-Seite dokumentiert https://spark.apache.org/docs/1.1.0/mllib-linear-methods.html#mjx-eqn-eqregprimal 83

92 Sentiment Analyse in Apache Spark Durchführung Die Tests für die Skalierbarkeit werden in verschiedenen Phasen durchgeführt. In Phase 1 wird die Python-Implementierung auf dem lokalen System und Apache Spark auf einem einzelnen Rechner des Computer-Clusters getestet. Hiermit soll ermittelt werden, wie die Leistung von Spark sich mit der von SciKit Learn bei ähnlicher Hardware vergleichen lässt. Danach wird nur noch auf Spark mit unterschiedlichen Einstellungen getestet. Die Parameter für Driver Memory und Executor Memory werden angepasst. Des Weiteren wird die Partitionierung der eingelesen Datei manuell beeinflusst. Die Ergebnisse sind in den jeweiligen Tabellen zu sehen. Es werden unterschiedlichen Dateigrößen getestet. Die Genauigkeit des Klassifikators wird der Vollständigkeit halber mit angegeben. Die einzelnen Versuche werden im Folgenden genauer beschrieben. Versuch 1: Datenvorbereitung: Einlesen, Sätze in Wörter splitten, Entfernen von Punktation, Entfernen von Stop-Wörtern, Lemmatisierung, Part-of-Speech-Tagging Spark I: 1 Rechner des Clusters, 2 Threads, 6 GB Driver Memory, 6 GB Executor Memory, Apache Spark 1.2 Lokales System: Auslastung CPU: max. 29%, Auslastung RAM: max. 450 MB, Sci- Kit Learn mit Python

93 Sentiment Analyse in Apache Spark Dateigröße 35MB, 58,621 Reviews Datenvorbereitung Naive Bayes (inkl. Erstellung des TFIDS-Vektors) Lokales System 13min 8sek (davon 12min 35sek für POS-Tagging) 1sek 83% Genauigkeit Spark I 12min 20sek (davon 11min 10sek für POS-Tagging) 30min 44sek (davon 30min 17sek für TFID) 83% Genauigkeit Support Vector Machine (inkl. Erstellung des TFIDS-Vektors) 1sek 87% Genauigkeit 30min 32sek (davon 30min 17sek für TFID) 84% Genauigkeit Tabelle 17: Performance-Test 1 Versuch 2: Änderung: größere Datei Datenvorbereitung: Einlesen, Sätze in Wörter splitten, Entfernen von Punktation, Entfernen von Stop-Wörtern, Lemmatisierung, Part-of-Speech-Tagging Spark I: 1 Rechner des Clusters, 2 Threads, 6 GB Driver Memory, 6 GB Executor Memory, Apache Spark 1.2 Lokales System: Auslastung CPU: max. 31%, Auslastung RAM: max. 700 MB, Sci- Kit Learn 85

94 Sentiment Analyse in Apache Spark Dateigröße 93MB, 95,084 Reviews Datenvorbereitung Naive Bayes (inkl. Erstellung des TFIDS-Vektors) Lokales System 58min 10sek (davon 56min 15sek für POS-Tagging) 5sek 77% Genauigkeit Spark I 53min 58sek (davon 49min 58sek für POS-Tagging) 1h 48min 37sek (davon 1h 48min 6sek für TFID) 75% Genauigkeit Support Vector Machine (inkl. Erstellung des TFIDS-Vektors) 6sek 81% Genauigkeit 1h 48min 19sek (davon 1h 48min 6sek für TFID) 71% Genauigkeit Tabelle 18: Performance-Test 2 Versuch 3: Änderung: größere Datei, kein Part-of-Speech-Tagging Datenvorbereitung: Einlesen, Sätze in Wörter splitten, Entfernen von Punktation, Entfernen von Stop-Wörtern, Lemmatisierung Spark I: 1 Rechner des Clusters, 2 Threads, 6 GB Driver Memory, 6 GB Executor Memory, Apache Spark 1.2 Lokales System: Auslastung CPU: max. 30%, Auslastung RAM: max. 2,2 GB, Sci- Kit Learn 86

95 Sentiment Analyse in Apache Spark Dateigröße 186MB, 160,793 Reviews Lokales System Spark I Datenvorbereitung 3min 55sek 6min 40sek Naive Bayes (inkl. Erstellung des TFIDS-Vektors) Support Vector Machine (inkl. Erstellung des TFIDS-Vektors) 14sek 80% Genauigkeit 19sek 86% Genauigkeit 1h 7min 82% Genauigkeit 56min 78% Genauigkeit Tabelle 19: Performance-Test 3 Aufgrund der enormen Laufzeiten in Spark wird für die folgenden Versuche der Code angepasst. Statt Scores und Review-Texte getrennt zu halten und am Ende zu joinen, werden sie nun in einem RDD geführt. Des Weiteren werden keine TFIDF- Werte mehr berechnet, sondern nur die reinen Hash-Häufigkeitswerte genutzt. Die betroffenen Stellen sind in Abbildung 25 zu sehen. Abbildung 25: Code-Anpassung 1 87

96 Sentiment Analyse in Apache Spark Das bedeutet nun auch, dass die jeweiligen Punkte Naive Bayes und SVM / Support Vector Machine nun nur noch folgende Operationen umfassen: Tranieren des Modells, Prognose und Berechnung der Genauigkeit. Im Code sind diese Elemente wie in Abbildung 26 (respektive auch für die Support Vector Machine) zu sehen umgesetzt. Abbildung 26: Bayes in Spark Versuch 4: Änderung: größere Datei Datenvorbereitung: Einlesen, Sätze in Wörter splitten, Entfernen von Punktation, Entfernen von Stop-Wörtern, Lemmatisierung Spark I: 1 Rechner des Clusters, 2 Threads, 6 GB Driver Memory, 6 GB Executor Memory, Apache Spark 1.2 Lokales System: Auslastung CPU: max. 30%, Auslastung RAM: max. 6,6 GB, Sci- Kit Learn 88

97 Sentiment Analyse in Apache Spark Dateigröße 1,085GB, 1,2 Mio Reviews Lokales System Spark I Datenvorbereitung 20min 53sek 10min 32sek Naive Bayes Support Vector Machine 1min 25sek 80% Genauigkeit 2min 6sek 88% Genauigkeit 21min 41sek 83% Genauigkeit 21min 30sek 75% Genauigkeit Tabelle 20: Performance-Test 4 Diese Datei ist die letzte Datei, die mit dem lokalen System bearbeitet werden kann. Die darauffolgenden Dateien führen beim Trainieren der Klassifikatoren zu Out-of- Memory-Fehlern. Es beginnt Phase zwei der Durchführung, bei der verschiedene Einstellungen des Spark-Clusters gegeneinander getestet werden. Versuch 1: Spark 1: 3GB Executor Memory, Partitionen wie in HDFS (50) Spark 2: 6GB Executor Memory, Partitionen wie in HDFS (50) Spark 3: 12GB Executor Memory, Partitionen wie in HDFS (50) Spark 4: 12GB Executor Memory, neue Partitionierung (150) 89

98 Sentiment Analyse in Apache Spark Dateigröße 9,114GB, 7,85 Mio Reviews Spark 1 Spark 2 Spark 3 Spark 4 Einlesen Daten der 12min 48sek 12min 36sek 12min 44sek 8min 47sek Naive Bayes 21min 29sek 21min 33sek 21min 37sek 8min 26sek SVM 21min 37sek 21min 32sek 21min 25sek 8min 37sek Tabelle 21: Performance-Test 5 Versuch 2: Da Versuch 1 gezeigt hat, dass die bloße Änderung des zur Verfügung stehenden Speichers kaum Einfluss auf die Leistung hat, wird in Versuch zwei eine etwas größere Datei in Hinblick auf Partitionierung getestet. Spark 1: 12GB Executor/Driver Memory, Partitionen wie in HDFS (81) Spark 2: 12GB Executor/Driver Memory, Partitionen wie in HDFS (125) Spark 3: 12GB Executor/Driver Memory, Partitionen wie in HDFS (200) Spark 4: 12GB Executor/Driver Memory, neue Partitionierung (300) 90

99 Sentiment Analyse in Apache Spark Dateigröße 14,3 GB, 12,8 Mio Reviews Spark 1 Spark 2 Spark 3 Spark 4 Einlesen Daten der 16min 53sek 14min 12sek 13min 38sek 11min 55sek Naive Bayes 26min 40sek 26min 31sek 25min 12sek 23min 55sek SVM 26min 34sek 26min 15sek 25min 23sek 23min 37sek Tabelle 22: Performance-Test 6 Versuch 3: Mit diesem Versuch soll die Auswirkung des Zwischenspeicherns von RDDs untersucht werden. Wenn ein RDD nicht gecached wird, muss es bei jeder auf ihm ausgeführten Aktion alle Transformationen erneut durchführen. Zur Untersuchung wird das RDD an drei in Abbildung 27 gezeigten Stellen in den Cache geladen. Abbildung 27: Caching in Spark Der nun endgültige Code ist in Teil A des Anhangs zu sehen. Versuch 4: Spark 1: 12GB Executor/Driver Memory, Partitionen wie in HDFS (81) Spark 2: 12GB Executor/Driver Memory, Partitionen wie in HDFS (125) Spark 3: 12GB Executor/Driver Memory, Partitionen wie in HDFS (200) 91

100 Sentiment Analyse in Apache Spark Spark 4: 12GB Executor/Driver Memory, neue Partitionierung (300) Dateigröße 14,3 GB, 12,8 Mio Reviews Spark 1 Spark 2 Spark 3 Spark 4 Einlesen Daten der 16min 55sek 13min 38sek 13min 38sek 12min 06sek Naive Bayes 57sek 46sek 46sek 52sek SVM 47sek 35sek 35sek 1min 46sek Tabelle 23: Performance-Test 7 Versuch 5: Mit der in Versuch 4 neu gewonnenen Information, dass das Caching eines enormen Einfluss auf die Skalierbarkeit hat, werden nun noch unterschiedlichen Datenmengen mit den gleichen Einstellungen getestet. Die Einstellungen sind annähernd die maximalen Einstellungen des Clusters mit Rücksicht auf eventuell andere laufende Prozesse und das Betriebssystem. 14GB Driver-Memory/Executor Memory Partitionen anhand der Datei Datei 1: 17 GB (137 Partitionen) Datei 2: 34GB (237 Partitionen) Datei 3: 68GB (548 Partitionen) 92

101 Sentiment Analyse in Apache Spark Test der Skalierbarkeit Datei 1 Datei 2 Datei 3 Einlesen Daten der 22min 10sek 34min 19sek 52min 32sek Naive Bayes 1min 10sek 12min 5sek 2h 32min SVM 2min 56sek 3min 51sek 2h 35min Tabelle 24: Performance-Test 8 Bei der letzten Datei kam es zu häufigen Failed Stages, die zur erneuten Ausführung von Transformationen führten. Des Weiteren war es ob der großen Datenmenge nicht mehr möglich, die RDDs im Cache zu halten. Eine Alternative würde hier die Funktion persist() geben. Dieser Test zeigt, dass sich Spark, mit Ausnahme einiger Ausreißerwerte, die zum Beispiel durch konkurrierende Prozesse (es herrscht das First in First-out-Prinzip) entstanden sein können, bei kleineren Datenmengen linear skalieren lässt Bewertung der Ergebnisse Im Folgenden werden die Ergebnisse der Untersuchungen diskutiert. Dafür soll zuerst gezeigt werden, wie Spark den Programmablauf plant und durchführt. Wie bereits in Kapitel beschrieben wurde, verteilt der Driver Jobs und Tasks an die Executor Nodes. Diese Jobs werden in Stages eingeteilt, da man in Spark zwischen Transformationen und Aktionen unterscheidet. Alle Transformationen sind lazy. Das heißt, sie werden erst dann ausgeführt, wenn sie wirklich ausgeführt werden müssen. Es ist dadurch möglich mehrere Transformationen auszuweisen ohne dass sie direkt umgesetzt werden. Sobald eine Aktion ausgeführt wird, müssen die vorher angegebenen Transformationen ausgeführt werden. Der DAG, also der interne Prozessplaner von Spark, ermittelt an dieser Stelle den besten Weg, um die 93

102 Sentiment Analyse in Apache Spark Transformationen und anschließend die Aktionen durchzuführen. Der Bereich zwischen jeder Aktion ist eine Stage. In den durchgeführten Versuchen sind die Stages nach join() und collect() aufgeteilt. Innerhalb der Stages werden von den Executoren Tasks ausgeführt. Dem Cluster stehen insgesamt sieben Executoren zur Verfügung. Abbildung 28: Executoren im Cluster Dabei wird Hadoop03 einmal als Executor und einmal als Driver aufgeführt. In der Rolle als Driver ist dieser nur für das Sammeln von Daten und Verteilen von Aufgaben zuständig. Es wird kein Datenverarbeitung durchgeführt. Die Anzahl der verteilten Tasks hängt mit dem Level der Parallelisierung zusammen. Problemstellen im Code Bei der Durchführung der Versuche wurde schnell klar, dass die Leistung von Spark im Cluster und auf einem einzelnen Rechner stark hinter der lokalen Lösung mit Python bleibt. Der Grund hierfür wurde zuerst im Quellcode der Applikation gesucht. Dort gab es vor allem zwei Problemstellen: die Berechnung des TDIDF und das 94

103 Sentiment Analyse in Apache Spark anschließende zippen der Werte, sowie den Join der neu berechneten Review- Werte mit den Scores. Bei einem Join entsteht, wie in [75] beschrieben, eine hoher Datenaustausch im Netzwerk, da die Schlüssel beider zu joinenden Datasets über das Netzwerk an eine Maschine geschickt und dann dort zusammengeführt werden. Abbildung 29: Join in Spark Dieses Verhalten lässt sich zum einen mit der partitionby()-funktion beeinflussen, indem ein vorher definierter Partitionierer mitgegeben wird. So ist bekannt, welche Keys sich wo befinden und es muss statt beiden Datasets nur eines über das Netzwerk gesendet werden. Dieses Verhalten ließ sich während der Versuche leider nicht replizieren, weswegen der Join, wie bereits erklärt, schlichtweg weggelassen wurde. Lokalität der Daten In Spark werden unterschiedlichen Lokalitäten der Daten unterschieden. Die nicht repartitonierten Daten haben bei den durchgeführten Versuchen alle automatisch 95

104 Sentiment Analyse in Apache Spark die zwei besten Level, Process_Local und Nodel_Local, zugeordnet bekommen. Neben der tatsächlichen Lokalität der Daten hat auch die Einstellung spark.locality.wait Einfluss auf das Lokalitätslevel. Nach Ablauf der angegeben Zeit versucht Spark, die benötigten Informationen auf dem nächsten Level zu finden. Das heißt konkret, dass ein höher eingestellter Wert theoretisch dazu führen könnte, eine bessere Datenlokalität zu erreichen. Bei der Repartitionierung der Daten ist die Lokalität auf den niedrigsten Level, ANY, gesunken. Dennoch war die tatsächliche Ausführungszeit geringer. Driver Memory Die Größe des Driver Memory ist immer dann von Bedeutung, wenn für eine Action die Daten an einer Stelle gesammelt werden müssen. Das ist zum Beispiel bei collect() oder take() der Fall. In den durchgeführten Experimenten hatte Driver-Memory keinen großen Einfluss auf die Performance. Parallelisierung Beim Einlesen einer Datei aus dem HDFS-Filesystem sind die Partitionen eines RDDs zunächst die Block-IDs im HDFS (vgl [73]). Die dort eingestellte Blockgröße von 128MB führt dazu, dass eine 1GB große Datei in 9 Partitionen unterteilt wird und somit maximal 9 Threads erstellt werden können. Der optimale Level der Parallelisierung liegt allerdings weitaus höher. In der Spark-Dokumentation wird 2-3 Partitionen pro Kern das Cluster empfohlen, was sich beim verwendeten System auf über 300 Partitionen hochrechnen lässt. Die tatsächliche Auswirkung des Änderns der Partitionierung waren nicht so stark wie angenommen, dennoch konnten Unterschiede beobachtet werden. Dabei ist das anfängliche Neuverteilen der Daten kein großer Aufwand. Zum Repartionieren einer 14GB von 81 auf 300 Partitonen hat das System 14 Sekunden benötigt. Executor 96

105 Sentiment Analyse in Apache Spark Zunächst muss erwähnt werden, dass der in der Befehlszeile angegebene Speicher nicht der Speicher ist, den der Executor zum Bearbeiten der Daten zur Verfügung hat. In dieser Zeile wird angegeben, dass jeder Executor einen Speicher von 1GB haben soll. Daraus ergeben sich dann die in der nächsten Zeile gezeigten 530.3MB Speicher, der für Daten zur Verfügung steht. Grund hierfür ist die im Spark.storage 43 hinterlegte und in Abbildung X gezeigte Funktion, durch die vom gesamten zur Verfügung gestellten Speicher ein Teil der Memory Fraction (Standard 0,6) und ein Teil der Safety Fraction (Standard 0,9) bereitgestellt wird. Abbildung 30: Berechnung des Executor-Speichers Die Einstellungen des Executor-Memory hatten bei den Tests nur marginale Auswirkungen. Es müsste eventuell eine größere Datenmenge getestet werden. Speichern von RDDs Die größten Performancegewinne sind durch das Cachen von RDDs zu erzielen. Das liegt daran, dass ansonsten die jeweiligen RDDs in ihrer gesamten Historie 43 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/storage/blockmanager.scala#l

106 Sentiment Analyse in Apache Spark erneut berechnet werden müssen. Mit der Funktion cache() wird der derzeitige Berechnungsstand eines RDDs im RAM gespeichert. Mit der Funktion persist() könnte er auf der Festplatte hinterlegt werden. 4.2 Implementierung eines Algorithmus zur Sentiment Lexikon Generierung In diesem Kapitel wird der Ablauf und die Implementierung eines einfachen Algorithmus zur Sentiment Lexikon Generierung in Apache Spark beschrieben. Die Schlüsselkonzepte dafür wurden bereits in Kapitel beschrieben Grundlage Die Grundlage für den Algorithmus ist die Annahme, dass positive Stimmungswörter häufig mit anderen positiven Stimmungswörtern auftreten, während negative Stimmungswörter häufiger mit anderen negativen Stimmungswörtern auftreten. Des Weiteren bildet die im Kapitel und untersuchte Aussage, dass Stimmungswörter sehr häufig Adjektive sind, die Basis des Algorithmus Datenbasis Als Datenbasis dienen die im vorherigen Kapitel beschriebenen Amazon-Kundenbewertungen. Um die Laufzeit des Algorithmus zu verkürzen, werden die Daten vorbereitet. Die Vorbereitung wurde mit einer ursprünglich 35MB und einer ursprünglich 1GB großen Datei durchgeführt und ähnelt den Anfängen der in beschriebenen Datenaufbereitung. Aus Reviews werden alle Zeilen, die nicht Review/Score oder Review/Text sind entfernt. Anschließend wird mithilfe des POS-Taggers aus dem NLTK das POS-Tagging für die gesamte Datei durchgeführt. Dieser Vorgang 98

107 Sentiment Analyse in Apache Spark wurde auf dem lokalen System ausgeführt und hatte bei der 1GB großen Datei eine Gesamtlaufzeit von 1 Tag 4h 26min. Die hohe Laufzeit ist der Hauptgrund, warum keine größere Datei als Datenbasis verwendet wurde. Eine einzelne Zeile aus den jeweiligen Dateien hat nun das in Abbildung 31 gezeigte Muster. Abbildung 31: Dictionary: Datenbasis Im Gegensatz zu den Dateien in Kapitel 4.1 wurde die Reduktion der Review/Scores auf 1.0 für positiv und 0.0 für negativ noch nicht vorgenommen Umsetzung Nachdem die vorbereitete Datei in Spark eingelesen wurde, wird einer Trennung der positiven und negativen Reviews vorgenommen. Da in der kleineren Datei zum Beispiel dreimal so viele positive wie negative Reviews enthalten sind muss nun eine Anpassung der Anzahl der Reviews vorgenommen werden. Dafür wird aus der größeren Kategorie (positiv) nur ein Sample entnommen, während die kleinere Kategorie komplett erhalten bleibt. Abbildung 32: Dictionary: Daten einlesen und verteilen 99

108 Sentiment Analyse in Apache Spark Mit diesen Daten wird nun der eigentliche Algorithmus begonnen. Ausgehend von einem positiven ( good ) und einem negativen ( bad ) Seed werden nun die Bewertungen auf häufig vorkommende Adjektive durchsucht. Dazu wird für jedes positive Review geprüft, ob es das Wort good enthält und für jedes negative Review, ob es das Wort bad enthält. Alle Bewertungen in denen dies der Fall ist, enthalten potentielle Kandidaten zur Erweiterung der Seed-Liste und werden deswegen weiter untersucht. Es werden alle Adjektive, die nicht auf eine Negation folgen, extrahiert. Die Negationsliste ist dabei starr vorgegeben und enthält die Wörter {"not", "isnt", "doesnt", "isn't", "doesn't", "hasnt", "hasn't", "dont", "don't", "havent", "haven't"}. Für jedes ausgesuchte Adjektiv wird die Häufigkeit des Vorkommens in positiven und in negativen Reviews festgehalten. Die 5 häufigsten Adjektive jeder Seite werden in die Seed-Liste übernommen und der Algorithmus kann erneut starten. Bei der Implementierung in Spark wurden RDDs und RDD-Funktionen genutzt. Zunächst werden Reviews mit der in Abbildung 32 gezeigten Funktion in einzelne Wörter geteilt und so gefiltert, dass nur Bewertungen, die Seeds enthalten weiterverarbeitet werden (Abbildung 33 und 34). Abbildung 33: Dictionary: Filter Abbildung 34: Dictionary: Filtern von positiven Reviews 100

109 Sentiment Analyse in Apache Spark Anschließend werden erneut mithilfe der map() und filter() Funktion alle Adjektive, die nicht auf eine Negation folgen, extrahiert, wie auf den Abbildungen 35 und 36 zu sehen ist. Abbildung 35: Dictionary: Filtern von Negation und POS-Tags Abbildung 36: Dictionary: Funktionen zur Filterung Auf die beiden RDDs, die nun vermutlich positive und vermutlich negative Adjektive enthalten, wird die reducebykey()-funktion so angewandt, dass für jedes Adjektiv ein Tupel bestehend aus (Adjektiv, Anzahl) entsteht. Dabei werden für positive Adjektive positive Zahlen hoch gezählt (2mal good -> (good, 2)), während für negative Adjektive negative Zahlen runtergezählt werden (2mal bad -> (bad, -2). Abbildung 37: Dictionary: Berechnung der Wortanzahl Am Schluss werden beide RDDs per union() zusammengeführt. Dadurch kann es nun vorkommen, dass es zwei Tupel mit dem gleichen Adjektiv gibt, da sie sowohl in positiven als auch in negativen Reviews vorkamen. Eine zweite Anwendung des reducebykey() zieht nun die Anzahl der gleichen negativen Adjektive von den gleichen positiven Adjektiven ab. 101

110 Sentiment Analyse in Apache Spark Abbildung 38: Dictionary: Abgleich positiver und negativer Wörter Dadurch haben nun Adjektive, die häufig in negativen Reviews vorkamen, eine möglichst niedrige negative Zahl, während positive Adjektive eine hohe positive Anzahl aufweisen. Adjektive, deren Anzahl näher zu 0 liegt, kamen entweder generell selten, oder häufig in positiven und negativen Reviews vor. In beiden Fällen kann keine Aussage über ihre Orientierung getroffen werden. Um diese Adjektive auszuschließen, werden nun nur die 5 höchsten und niedrigsten Adjektive extrahiert. Abbildung 39: Dictionary: Erweiterung der Seeds Anschließend wird der Algorithmus erneut mit der erweiterten Seed-Liste durchgeführt. Die so gefundenen positiven und negativen Adjektive sollten anschließend manuell geprüft werden. Der gesamte Quellcode ist dieser Arbeit ist digitale Anlage beigelegt Bewertung Der Algorithmus ist in der Lage, häufig genutzte Adjektive zu finden. Allerdings werden auch nicht geeignete Wörter gefunden. Eine Liste der ersten 50 positiven und negativen gefundenen Wörter befindet sich im Anhang B. An dieser Stelle sollen einmal die ersten Iterationsrunden der Kategorie Electronics diskutiert werden. 102

111 Sentiment Analyse in Apache Spark Runde neu positiv neu negativ Seed good bad 1 great, other, easy, small, nice defective, horrible, terrible, poor, unusable 2 many, cable, few, new, little awful, told, unacceptable, disappointing, unreliable 3 old, only, big, happy, able unable, tech, useless, dissapointed, technician Tabelle 25: Dictionary: gefundene Adjektive Wie in Tabelle 25 zu erkennen ist, wurden neben vielen korrekten Wörtern auch nicht unbedingt korrekte Wörter gefunden. So ist other nicht generell positiv. Cable und technician sind keine Adjektive. Das heißt, dass einigen Wörtern nicht die richtige Wortart zugeordnet wurde. Es fällt positiv auf, dass domänenspezifische Wörter wie tech und später technical gefunden werden. Der Algorithmus könnte in einer weiteren Implementierungsphase durch mehrere Maßnahmen verbessert werden. Zum einen können die relevanten Wortarten ausgeweitet werden. Wie in Kapitel beschrieben, kommen auch Substantive als Stimmungswörter in Frage. Darüber hinaus können vergleichende Verben ( /jjs, jjr ) mit einbezogen werden. Dabei muss allerdings eine genauere Prüfung der Relevanz erfolgen, da besser nicht gut sein muss. Auch die Behandlung der Negation kann flexbiler gestaltet werden. Des Weiteren sollten semantische Regeln zur Prüfung von Stimmungswörtern genutzt werden. Die einfachen Beispiele in Englisch sind hierfür die and, or, neither, nor. Wenn beispielsweise ein and auf ein Stimmungswort folgt, ist das darauffolgende oftmals auch ein Stimmungswort mit der gleichen Orientierung. Diese Regeln können mit anderen Mustern auch über Satzgrenzen hinweg genutzt werden. 103

112 Sentiment Analyse in Apache Spark 104

113 Schlussbemerkungen und Ausb 5 Schlussbemerkungen und Ausblick Diese Arbeit hat einen Einblick in das Forschungsgebiet der Sentiment Analyse, das maschinelle Lernen und die Arbeit mit Apache Spark gegeben. Anfangs wurden die Kernkonzepte der Sentiment Analyse beschrieben. Dennoch gibt es Bereiche, wie die Meinungszusammenfassung, Meinungsbeschaffung und SPAM-Filterung, die nicht abgedeckt werden konnten. Die Sentiment Analyse wird aufgrund der Wichtigkeit von Meinung und der hohen Datenverfügbarkeit durch das Web 2.0 auch in Zukunft ein wichtiger Forschungsbereich bleiben. Das gleiche gilt auch für das maschinelle Lernen. Generierung von Wissen aus Daten weiterhin ein relevantes Thema bleiben und durch verbesserte und billigere Technologie voranschreiten. Ebenso wie die vorgestellten Forschungsbereiche wird auch das Framework Apache Spark weiterhin relevant sein. In dieser Arbeit wurde die Architektur von Spark erläutert und Performancetests auf einem Cluster durchgeführt. Im Ergebnis dieser Tests blieb Spark anfangs hinter den Erwartungen zurück. Die Performance konnte allerdings noch durch Anpassung diverser Parameter verbessert werden. Die Ergebnisse dieser Tests sollten grundlegendes Wissen über die Arbeit mit der Plattform vermitteln und somit einen guten Einstiegspunkt für neuer Benutzer von Spark bieten. Des Weiteren wurde ein einfacher Algorithmus zur Sentiment Lexikon Generation implementiert. Mit ihm ist es möglich, korpusbasierte positive und negative Adjektive zu finden. Dabei sind die einzelnen Schritte der Implementierung beschrieben worden, so dass sich der Algorithmus auf dieser Basis erweitern lässt. 105

114 Literaturverzeichnis 6 Literaturverzeichnis [1] L. Zhang und B. Liu, Extracting and Ranking Product Features in Opinion Documents., in Proceedings of the 23rd International Conference on Computational Linguistics (COLING- 2010), Beijing, [2] M. Zaharia, R. Xin, J. Rosen, M. J. Franklin, S. Shenker und I. Stoica, Shark: SQL and Rich Analytics at Scale, in Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data, New York, [3] M. Zaharia, R. Xin, A. Lupher, C. Engle, M. J. Franklin, S. Shenker und I. Stoica, Shark: Fast Data Analysis Using Coarse-grained Distributed Memory, in Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data, Scottsdale, [4] M. Zaharia, M. Chowdhury, T. Das, A. Dave, J. Ma, M. McCauley, M. J. Franklin, S. Shenker und I. Stoica, Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing, in Proceedings of the 9th USENIX Symposium on Networked Systems Design and Implementation, San Jose, [5] T. Zagibalov und J. Carroll, Automatic Seed Word Selection for Unsupervised Sentiment Classification of Chinese Text, in Proceedings of the 22nd International Conference on Computational Linguistics (Coling 2008), Manchester, [6] N. Yussupova, D. Bogdanova und M. Boyko, Applying of Sentiment Analysis for Texts in Russian Based on Machine Learning Approach, in IMMM 2012 : The Second International Conference on Advances in Information Mining and Management, Venedig, [7] K. Yessenov und S. Misailovic, Sentiment Analysis of Movie Review Comments, [8] G. Xu, Y. Zhang und L. Li, Web Mining and Social Networking, Springer, [9] H. F. Witschel, Using Decision Trees and Text Mining Techniques for Extending Taxonomies, in Proceedings of the Workshop on Learning and Extending Lexical Ontologies by using Machine Learning OntoML, Bonn, [10] J. Wiebe, E. Riloff und T. Wilson, Learning Subjectivity Nouns using Extraction Pattern Bootstrapping, in Proceedings of the Seventh Conference on Natural Language Learning (CoNLL-2003), Edmonton, VI

115 Literaturverzeichnis [11] W. Wang, H. Xu und X. Huang, Implicit Feature Detection via a Constrained Topic Model and SVM, in Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, Seattle, [12] P. D. Turney, Thumbs Up or Thumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews, in Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics (ACL), Philadelphia, [13] I. Steinwart und A. Christmann, Support Vector Machines, New York: Springer, [14] R. Socher, A. Perelygin, J. Wu, J. Chuang, C. Manning, A. Ng und C. Potts, Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank, in Proceedings of the Conference on Empirical Methods in Natural Language Processing, Seattle, [15] F. Sebastiani, Machine Learning in Automated Text Categorization, ACM Computing Surveys Vol. 34, pp. 1-47, März [16] S. Schrauwen, Machine Learning Approaches to Sentiment Analysis using the Durch Netlog Corpus, Clips CTRS, Juli [17] K. Schouten und F. Frasincar, Implicit Feature Detection for Sentiment Analysis, in Proceedings of the International World Wide Web Conference, Seoul, [18] K. Schouten und F. Frasincar, Finding Implicit Features in Consumer Reviews for Sentiment Analysis, in Proceedings of the International Conference on Web Engineering, Toulouse, [19] B. Santorini, M. P. Marcus und M. A. Marcinkiewicz, Building a Large Annotated Corpus of English: The Penn Treebanl, Computational Linguistics - Special issue on using large corpora: II, pp , Juni [20] B. Santorini, Part-of-Speech Tagging Guidelines for the Penn Treebank Project, [21] E. Riloff, A. Qadir, P. Surve, L. De Silva, N. Gilbert und R. Huang, Sarcasm as Contrast between a Positive Sentiment and Negative Situation, in Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, Seattle, [22] E. Riloff, J. Wiebe und W. Phillips, Exploiting Subjectivity Classifcation to Improve Information Extraction, in Proceedings of the 20th National Conference on Artificial Intelligence (AAAI- 05), Pittsburgh, VII

116 Literaturverzeichnis [23] R. Remus, Improving Sentence-level Subjectivity Classification through Readability Measurement, in Proceedings of the 18th International Nordic Conference of Computational Linguistics (NODALIDA), [24] G. Qiu, L. Bing, J. Bu und C. Chun, Expanding Domain Sentiment Lexicon through Double Propagation, in Proceedings of the 21st International Joint Conference on Artificial Intelligence (IJCAI-09), Pasadena, Kalifornien, [25] B. Pang, L. Lee und S. Vaithyanathan, Thumbs up? Sentiment Classification using Machine Learning Techniques, in Proceedings of the Conference on Empirical Methods in Natural Language Processing, Philadephia, [26] B. Pang und L. Lee, Opinion mining and sentiment analysis, in Foundations and Trends in Information Retrieval, Boston, James Finlay, 2008, pp [27] R. Narayanan, B. Liu und A. Choudhary, Sentiment Analysis of Conditional Sentences, in Proceedings of Conference on Empirical Methods in Natural Language Processing (EMNLP-09), Singapore, [28] J.-C. Na, H. Sui, C. Khoo, S. Chan und Y. Zhou, Effectiveness of simple linguistic processing in automatic sentiment classification of product reviews, in Knowledge Organization and the Global Information Society: Proceedings of the Eighth International ISKO Conference, Würzburg, [29] N. Mishra und C. Jha, Classification of Opinion Mining Techniques, International Journal of Computer Applications, Oktober [30] B. Liu, Web DataMining, Berlin: Springer, [31] B. Liu, Sentiment Analysis: A Multifaceted Problem, IEEE Intelligent Systems, pp , [32] B. Liu, Sentiment Analysis and Subjectivity, in Handbook of Natural Language Processing, Chapman & Hall, [33] B. Liu, Sentiment Analysis and Opinion Mining, Morgan & Claypool Publisher, [34] K. Latha und A. Sujitha, Real-Time Twitter Sentiment Classification Using Unsupervised Reviews, International Journal of Emerging Technology and Advanced Engineering, Mai VIII

117 Literaturverzeichnis [35] S.-M. Kim und E. Hovy, Determining the Sentiment of Opinions, in Proceedings of the COLING conference, Genf, [36] A. Kamal, Subjectivity Classification using Machine Learning Techniques for Mining Feature- Opinion Pairs from Web Opinion Sources, International Journal of Computer Science Issues (IJCSI), September [37] J. Jotheeswaran und Y. Kumaraswamy, Opinion Mining using decision tree based feature selection through Manhattan hierachical cluster mesaure, Journal of Theoretical and Applied Information Technology, 10 Dezember [38] T. Joachims, Text Categorization with Support Vector Machines: Learning with Many Relevant Features, in Proceedings of the European Conference on Machine Learning (ECML), [39] N. Jindal und B. Liu, Mining Comprative Sentences and Relations, in Proceedings of 21st National Conference on Artificial Intellgience (AAAI-2006), Boston, [40] N. Jindal und B. Liu, Identifying Comparative Sentences in Text Documents, in Proceedings of the 29th Annual International ACM SIGIR Conference on Research & Development on Information Retrieval (SIGIR-06), Seattle, [41] X. Hu, J. Tang, H. Gao und H. Liu, Unsupervised Sentiment Analysis with Emotional Signals, in Proceedings of the 22nd International World Wide Web Conference (WWW), Rio, [42] M. Hu und B. Liu, Mining Opinion Features in Customer Reviews, in Proceedings of Nineteeth National Conference on Artificial Intellgience (AAAI-2004), San Jose, [43] M. Hu und B. Liu, Mining and Summarizing Customer Reviews, in Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD-2004, full paper), Seattle, [44] D. E. Holmes und L. C. Jain, Data Mining: Foundations and Intelligent Paradigms Volume 2, Heidelberg: Springer, [45] D. E. Holmes und L. C. Jain, Data Mining: Foundations and Intelligent Paradigms Volume 1, Heidelberg: Springer, [46] R. Hausser, Computational Linguistics and Talking Robots, Heidelberg: Springer, [47] J. Fischer, Support Vector Machines (SVM), IX

118 Literaturverzeichnis [48] F. Fieber, M. Huhn und B. Rumpe, FB Informatik Universität Braunschweig, [Online]. Available: [49] J. Ecktstein, Agile Softwareentwicklung mit verteilten Teams, dpunkt Verlag, [50] J. Dean, Big Data, Data Mining and Machine Learning, Wiley, [51] D. Davidov, O. Tsur und A. Rappoport, Semi-Supervised Recognition of Sarcastic Sentences in Twitter and Amazon, in Proceedings of the Fourteenth Conference on Computational Natural Language Learning, Uppsala, [52] D. Davidov und A. Rappoport, Efficient Unsupervised Discovery of Word Categories Using Symmetric Patterns and High Frequency Words, in Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the ACL,, Sydney, [53] E. Cambria, B. Schuller, Y. Xia und C. Havasi, New Avenues in Opinion Mining and Sentiment Analysis, IEE Intelligent Systems, [54] J. Broß, Aspect-Oriented Sentiment Analysis of Customer Reviews Using Distant Supervision Techniques, Berlin, [55] S. Brody und N. Diakopoulos, Cooooooooooooooollllllllllllll!!!!!!!!!!!!!! Using Word Lengthening to Detect Sentiment in Microblogs, in Proceedings of the Conference on Empirical Methods on Natural Language Processing, Edinburgh, [56] M. Bramer, Principles of Data Mining, Springer, [57] S. Blair-Goldensohn, K. Hannan, R. McDonald, T. Neylon, G. A. Reis und J. Reyna, Building a sentiment summarizer for local service reviews, in Building a sentiment summarizer for local service reviews, Peking, [58] S. Bird, E. Klein und E. Loper, Natural Language Processing, Sebastapol: O Reilly Media, [59] A. Bagheri, M. Saraee und F. de Jong, Latent Dirichlet Markov allocation for sentiment analysis, in Proceedings of the Fifth European Conference on Intelligent Management Systems in Operations, Salford, [60] A. Bagheri, M. Saraee und F. de Jong, An Unsupervised Aspect Detection Model for Sentiment Analysis of Reviews, in Natural Language Processing and Information Systems, Salford, Springer, 2013, pp [61] C. C. Aggarwal und C. Zhai, Mining Text Data, Springer, X

119 Literaturverzeichnis [62] A. Abbasi, H. Chen und A. Salem, Sentiment Analysis in Multiple Languages: Feature Selection for Opinion Classification in Web Forums, ACM Transactions on Information Systems, [63] V. Hatzivassiloglou und K. R. McKeown, Predicting the semantic orientation of adjectives, in Proceedings of the 35th Annual Meeting of the Association for Computational Linguistics and Eighth Conference of the European Chapter of the Association for Computational Linguistics, Stroudsburg, [64] D. R. Rice und C. Zorn, Corpus-Based Dictionaries for Sentiment Analysis of Specialized Vocabularies, in Proceedings of the New Directions in Analyzing Text as Data Workshop, London, [65] A. Neviarouskaya, H. Prendinger und M. Ishizuka, Recognition of Affect, Judgment, and Appreciation in Text, in Proceedings of the 23rd International Conference on Computational Linguistics (COLING 2010), Peking, [66] Z. Hai, K. Chang und J. Kim, Implicit Feature Identification via Co-occurrence Association Rule Mining, in Proceedings of the 12th International Conference on Computational Linguistics and Intelligent Text processing (CICLing 2011), [67] A. Valitutti, C. Strapparava und O. Stock, Developing affective lexical resources, PsychNology Hournal, pp , [68] N. Godbole, M. Srinivasaiah und S. Skiena, Large-Scale Sentiment Analysis for News and Blogs, in International Conference on Weblogs and Social Media, Boulder, [69] J. Rothfels und J. Tibshirani, Unsupervised sentiment classification of English movie reviews using automatic selection of positive and negative sentiment items, 2 Juni [Online]. Available: [Zugriff am 12 Februar 2015]. [70] L. Bottou, Large-Scale Machine Learning with Stochastic Gradient Descent, in Proceedings of the 19th International Conference on Computational Statistics (COMPSTAT'2010), Paris, [71] R. Bekkerman, M. Bilenko und J. Langford, Scaling up Machine Learning, Cambridge: Cambridge University Press, [72] X. Meng, Sparse data support in MLlib, in Spark Summit 2014, San Francisco, XI

120 Literaturverzeichnis [73] M. Zaharia, M. Chowhury, M. J. Frankling, S. Shenker und I. Stoica, Spark: Cluster computing with working sets, in Proceedings of the 2nd USENIX conference on Hot Topics in Cloud Computing, Berkeley, [74] S. Matsumoto, H. Takamura und M. Okumura, Sentiment Classification Using Word Subsequences and Dependency Sub-trees, in Advances in Knowledge Discovery and Data Mining, Heidelberg, Springer, 2005, pp [75] H. Karau, A. Konwinski, P. Wendell und M. Zaharia, Learning Spark, Sebastpol: O'Reilly Media Inc, [76] J. McAuley und J. Leskovc, Hidden Factors and Hidden Topics: Understanding Rating Dimensions with Review Text, in Proceedings of the 7th ACM conference on Recommender systems, New York, [77] P. Wendell, Understanding the Performance of Spark Applications, 12 Dezember [Online]. Available: https://www.youtube.com/watch?v=nxp3ojhnm7e. [Zugriff am 13 März 2015]. [78] M. Zaharia, The State of Spark, and Where We're Going Next, 12 Dezember [Online]. Available: https://www.youtube.com/watch?v=nu6vo2ejab4. [Zugriff am 05 März 2015]. [79] A. Davidson, A Deeper Understanding of Spark Internals, 17 Juli [Online]. Available: https://www.youtube.com/watch?v=dml0n3qfsc8. [Zugriff am 13 März 2015]. [80] S. Ryza, Apache Spark Resource Management and YARN App Models, 30 Mai [Online]. Available: [Zugriff am 25 Februar 2015]. [81] Apache Spark Foundation, Spark Programming Guide, [Online]. Available: [Zugriff am 25 Februar 2015]. [82] C. D. Manning, P. Raghavan und H. Schütze, An Introduction to Information Retrieval, Cambrigde: Cambridge Universitry Press, XII

121 Anhang Anhang A Code der Spark Sentiment Klassifikation XIII

Sentiment Analysis (SA) Robert Bärhold & Mario Sänger Text Analytics WS 2012/13 Prof. Leser

Sentiment Analysis (SA) Robert Bärhold & Mario Sänger Text Analytics WS 2012/13 Prof. Leser Sentiment Analysis (SA) Robert Bärhold & Mario Sänger Text Analytics WS 2012/13 Prof. Leser Gliederung Einleitung Problemstellungen Ansätze & Herangehensweisen Anwendungsbeispiele Zusammenfassung 2 Gliederung

Mehr

Proseminar - Data Mining

Proseminar - Data Mining Proseminar - Data Mining SCCS, Fakultät für Informatik Technische Universität München SS 2012, SS 2012 1 Data Mining Pipeline Planung Aufbereitung Modellbildung Auswertung Wir wollen nützliches Wissen

Mehr

Proseminar - Data Mining

Proseminar - Data Mining Proseminar - Data Mining SCCS, Fakultät für Informatik Technische Universität München SS 2014, SS 2014 1 Data Mining: Beispiele (1) Hausnummererkennung (Klassifikation) Source: http://arxiv.org/abs/1312.6082,

Mehr

Text Mining Praktikum. Durchführung: Andreas Niekler Email: aniekler@informatik.uni-leipzig.de Zimmer: Paulinum (P) 818

Text Mining Praktikum. Durchführung: Andreas Niekler Email: aniekler@informatik.uni-leipzig.de Zimmer: Paulinum (P) 818 Text Mining Praktikum Durchführung: Andreas Niekler Email: aniekler@informatik.uni-leipzig.de Zimmer: Paulinum (P) 818 Rahmenbedingungen Gruppen von 2- (max)4 Personen Jede Gruppe erhält eine Aufgabe Die

Mehr

Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1.

Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1. Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1. Zusammengefasst aus Ihren Beiträgen Wie bewerten sie das System ingesamt? Das Watson System verdeutlicht den Fortschritt der Künstlichen Intelligenz Forschung/Computerlinguistik/Informatik

Mehr

Sentiment Analysis. Eine Einführung. Robert Remus 1 rremus@informatik.uni-leipzig.de. Fakultät für Mathematik und Informatik Universität Leipzig

Sentiment Analysis. Eine Einführung. Robert Remus 1 rremus@informatik.uni-leipzig.de. Fakultät für Mathematik und Informatik Universität Leipzig Sentiment Analysis Eine Einführung Robert Remus 1 rremus@informatik.uni-leipzig.de 1 Abteilung Automatische Sprachverarbeitung Fakultät für Mathematik und Informatik Universität Leipzig Seminar Anwendungen

Mehr

Mit KI gegen SPAM. Proseminar Künstliche Intelligenz

Mit KI gegen SPAM. Proseminar Künstliche Intelligenz Mit KI gegen SPAM Proseminar Künstliche Intelligenz SS 2006 Florian Laib Ausblick Was ist SPAM? Warum SPAM-Filter? Naive Bayes-Verfahren Fallbasiertes Schließen Fallbasierte Filter TiMBL Vergleich der

Mehr

Proseminar - Data Mining

Proseminar - Data Mining Vorbesprechung Proseminar - Data Mining SCCS, Fakultät für Informatik Technische Universität München SS 2015 Vorbesprechung, SS 2015 1 Data Mining: Beispiele (1) Hausnummererkennung (Klassifikation) Source:

Mehr

Befragung und empirische Einschätzung der Praxisrelevanz

Befragung und empirische Einschätzung der Praxisrelevanz Befragung und empirische Einschätzung der Praxisrelevanz eines Vorgehensmodells zur Auswahl von CRM-Systemen D I P L O M A R B E I T zur Erlangung des Grades eines Diplom-Ökonomen der Wirtschaftswissenschaftlichen

Mehr

Ausarbeitung Twitter as a Corpus for Sentiment Analysis and Opinion Mining

Ausarbeitung Twitter as a Corpus for Sentiment Analysis and Opinion Mining Ausarbeitung Twitter as a Corpus for Sentiment Analysis and Opinion Mining Wissenschaftliches Arbeiten (2014) Aufgabe 5 Kai Kühne 798797 Beuth Hochschule für Technik Berlin Fachbereich VI Informatik und

Mehr

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector 7.4 Analyse anhand der SQL-Trace 337 7.3.5 Vorabanalyse mit dem Code Inspector Der Code Inspector (SCI) wurde in den vorangegangenen Kapiteln immer wieder erwähnt. Er stellt ein paar nützliche Prüfungen

Mehr

Data Mining-Modelle und -Algorithmen

Data Mining-Modelle und -Algorithmen Data Mining-Modelle und -Algorithmen Data Mining-Modelle und -Algorithmen Data Mining ist ein Prozess, bei dem mehrere Komponenten i n- teragieren. Sie greifen auf Datenquellen, um diese zum Training,

Mehr

Textmining Klassifikation von Texten Teil 1: Naive Bayes

Textmining Klassifikation von Texten Teil 1: Naive Bayes Textmining Klassifikation von Texten Teil 1: Naive Bayes Dept. Informatik 8 (Künstliche Intelligenz) Friedrich-Alexander-Universität Erlangen-Nürnberg (Informatik 8) Klassifikation von Texten 1: Naive

Mehr

Sentiment Analysis und Ontologien

Sentiment Analysis und Ontologien Sentiment Analysis und Ontologien Universität zu Köln Sprachliche Informationsverarbeitung Künstliche Intelligenz Dozent: C. Neuefeind 13.06.2012 Linus Franzke und Carina Berning Inhalt Was ist Sentiment

Mehr

Risiken bei der Analyse sehr großer Datenmengen. Dr. Thomas Hoppe

Risiken bei der Analyse sehr großer Datenmengen. Dr. Thomas Hoppe Risiken bei der Analyse sehr großer Datenmengen Dr. Thomas Hoppe Datenaufbereitung Datenanalyse Data Mining Data Science Big Data Risiken der Analyse Sammlung Integration Transformation Fehlerbereinigung

Mehr

Data Mining Bericht. Analyse der Lebenssituation der Studenten. der Hochschule Wismar. Zur Veranstaltung. Business Intelligence

Data Mining Bericht. Analyse der Lebenssituation der Studenten. der Hochschule Wismar. Zur Veranstaltung. Business Intelligence Data Mining Bericht Analyse der Lebenssituation der Studenten der Hochschule Wismar Zur Veranstaltung Business Intelligence Eingereicht von: Mohamed Oukettou 108 208 Maxim Beifert 118 231 Vorgelegt von:

Mehr

Bachelorarbeit. Tobias Eichler. Sentiment-Analysis durch überwachtes Lernen: Vergleich und Bewertung von Konzepten zur Vorverarbeitung

Bachelorarbeit. Tobias Eichler. Sentiment-Analysis durch überwachtes Lernen: Vergleich und Bewertung von Konzepten zur Vorverarbeitung Bachelorarbeit Tobias Eichler Sentiment-Analysis durch überwachtes Lernen: Vergleich und Bewertung von Konzepten zur Vorverarbeitung Fakultät Technik und Informatik Studiendepartment Informatik Faculty

Mehr

Social Software im Change Management. Bachelorarbeit

Social Software im Change Management. Bachelorarbeit Social Software im Change Management Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft der Wirtschaftswissenschaftlichen Fakultät der

Mehr

Map Reduce on Hadoop Seminar SS09. Similarity Join. Tim Felgentreff, Andrina Mascher

Map Reduce on Hadoop Seminar SS09. Similarity Join. Tim Felgentreff, Andrina Mascher Map Reduce on Hadoop Seminar SS09 Similarity Join Tim Felgentreff, Andrina Mascher Gliederung 2!! Aufgabe!! Demo!! Algorithmus!! Performance!! Veränderte Aufgabenstellung:!! Vergleich mit 1 Seite!! Ausblick!!

Mehr

Opinion Spam Detection

Opinion Spam Detection Emotion Mining in Images and Text Opinion Spam Detection Tobias Goldbach S. 1 Motivation S. 2 Motivation Problem Keine Qualitätskontrolle vorhanden Folge: Opinion Spam Aufdeckung durch Menschen kaum möglich

Mehr

The integration of business intelligence and knowledge management

The integration of business intelligence and knowledge management The integration of business intelligence and knowledge management Seminar: Business Intelligence Ketevan Karbelashvili Master IE, 3. Semester Universität Konstanz Inhalt Knowledge Management Business intelligence

Mehr

Finaler Testbericht. Finaler Testbericht. 1 Einführung 2. 1.1 Warum Softwaretests?... 2

Finaler Testbericht. Finaler Testbericht. 1 Einführung 2. 1.1 Warum Softwaretests?... 2 Inhaltsverzeichnis 1 Einführung 2 1.1 Warum Softwaretests?.................................... 2 2 Durchgeführte Tests 2 2.1 Test: allgemeine Funktionalität............................... 2 2.1.1 Beschreibung.....................................

Mehr

Perzentile mit Hadoop ermitteln

Perzentile mit Hadoop ermitteln Perzentile mit Hadoop ermitteln Ausgangspunkt Ziel dieses Projektes war, einen Hadoop Job zu entwickeln, der mit Hilfe gegebener Parameter Simulationen durchführt und aus den Ergebnissen die Perzentile

Mehr

Analysen sind nur so gut wie die Datenbasis

Analysen sind nur so gut wie die Datenbasis Analysen sind nur so gut wie die Datenbasis Datenaufbereitung und Sicherung der Datenqualität durch den kontextbasierten MIOsoft Ansatz. Daten gelten längst als wichtiger Produktionsfaktor in allen Industriebereichen.

Mehr

Prozessoptimierung in der Markt- und Medienforschung bei der Deutschen Welle (DW) mit Big Data Technologien. Berlin, Mai 2013

Prozessoptimierung in der Markt- und Medienforschung bei der Deutschen Welle (DW) mit Big Data Technologien. Berlin, Mai 2013 Prozessoptimierung in der Markt- und Medienforschung bei der Deutschen Welle (DW) mit Big Data Technologien Berlin, Mai 2013 The unbelievable Machine Company? 06.05.13 The unbelievable Machine Company

Mehr

Motivation. Themenblock: Klassifikation. Binäre Entscheidungsbäume. Ansätze. Praktikum: Data Warehousing und Data Mining.

Motivation. Themenblock: Klassifikation. Binäre Entscheidungsbäume. Ansätze. Praktikum: Data Warehousing und Data Mining. Motivation Themenblock: Klassifikation Praktikum: Data Warehousing und Data Mining Ziel Item hat mehrere Attribute Anhand von n Attributen wird (n+)-tes vorhergesagt. Zusätzliches Attribut erst später

Mehr

Ermittlung von Assoziationsregeln aus großen Datenmengen. Zielsetzung

Ermittlung von Assoziationsregeln aus großen Datenmengen. Zielsetzung Ermittlung von Assoziationsregeln aus großen Datenmengen Zielsetzung Entscheidungsträger verwenden heutzutage immer häufiger moderne Technologien zur Lösung betriebswirtschaftlicher Problemstellungen.

Mehr

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org Apache Lucene Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org 1 Apache Apache Software Foundation Software free of charge Apache Software

Mehr

Repeatable Benchmarking Mahout

Repeatable Benchmarking Mahout Studienarbeitsexposé Repeatable Benchmarking Mahout Entwicklung eines Lasttest-Rahmenwerkes für Apache Mahout von: Oliver Fischer Institut für Informatik Humbold-Universität zu Berlin Matrikelnummer: 19

Mehr

Sentiment Classification

Sentiment Classification Universität Duisburg-Essen, SS 2008 Seminar Soziales Retrieval im Web 2.0 Dozent: Prof. Dr.-Ing. Norbert Fuhr Betreuer: Ingo Frommholz Sentiment Classification Daniel Jansen 04. Oktober 2008 Institut für

Mehr

Big Data: Definition, Einführung und Live Democase [C1] Arne Weitzel Uetliberg, 16.09.2014 www.boak.ch

Big Data: Definition, Einführung und Live Democase [C1] Arne Weitzel Uetliberg, 16.09.2014 www.boak.ch Big Data: Definition, Einführung und Live Democase [C1] Arne Weitzel Uetliberg, 16.09.2014 www.boak.ch Unstrukturierte Daten spielen eine immer bedeutender Rolle in Big Data-Projekten. Zunächst gilt es

Mehr

Die Wahl der Suchbegriffe

Die Wahl der Suchbegriffe Die Wahl der Suchbegriffe Der erste wichtige Schritt für eine effektive Literaturrecherche ist die Wahl der Suchbegriffe. Auf der Suche nach Literatur kommt es häufig vor, dass man keine oder nur sehr

Mehr

Cloud Computing in Industrie 4.0 Anwendungen: Potentiale und Herausforderungen

Cloud Computing in Industrie 4.0 Anwendungen: Potentiale und Herausforderungen Cloud Computing in Industrie 4.0 Anwendungen: Potentiale und Herausforderungen Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftsingenieur der Fakultät

Mehr

Review Freelancer-Workshop: Fit für Big Data. Mittwoch, 29.04.2015 in Hamburg

Review Freelancer-Workshop: Fit für Big Data. Mittwoch, 29.04.2015 in Hamburg Review Freelancer-Workshop: Fit für Big Data Mittwoch, 29.04.2015 in Hamburg Am Mittwoch, den 29.04.2015, hatten wir von productive-data in Zusammenarbeit mit unserem langjährigen Partner Informatica zu

Mehr

Sentimentanalyse von Tweets mit Methoden des SemEval 2013/2014. Bachelorarbeit

Sentimentanalyse von Tweets mit Methoden des SemEval 2013/2014. Bachelorarbeit Bauhaus-Universität Weimar Fakultät Medien Studiengang Mediensysteme Sentimentanalyse von Tweets mit Methoden des SemEval 2013/2014 Bachelorarbeit Michel Büchner Matrikelnummer 80030 geb. am: 13.05.1988

Mehr

Big-Data-Technologien - Überblick - Prof. Dr. Jens Albrecht

Big-Data-Technologien - Überblick - Prof. Dr. Jens Albrecht Big-Data-Technologien - Überblick - Quelle: http://www.ingenieur.de/panorama/fussball-wm-in-brasilien/elektronischer-fussball-smartphone-app-helfen-training Big-Data-Anwendungen im Unternehmen Logistik

Mehr

Mining top-k frequent itemsets from data streams

Mining top-k frequent itemsets from data streams Seminar: Maschinelles Lernen Mining top-k frequent itemsets from data streams R.C.-W. Wong A.W.-C. Fu 1 Gliederung 1. Einleitung 2. Chernoff-basierter Algorithmus 3. top-k lossy counting Algorithmus 4.

Mehr

DduP - Towards a Deduplication Framework utilising Apache Spark

DduP - Towards a Deduplication Framework utilising Apache Spark - Towards a Deduplication Framework utilising Apache Spark utilising Apache Spark Universität Hamburg, Fachbereich Informatik Gliederung 1 Duplikaterkennung 2 Apache Spark 3 - Interactive Big Data Deduplication

Mehr

1 Einleitung. 1.1 Caching von Webanwendungen. 1.1.1 Clientseites Caching

1 Einleitung. 1.1 Caching von Webanwendungen. 1.1.1 Clientseites Caching 1.1 Caching von Webanwendungen In den vergangenen Jahren hat sich das Webumfeld sehr verändert. Nicht nur eine zunehmend größere Zahl an Benutzern sondern auch die Anforderungen in Bezug auf dynamischere

Mehr

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup 975357 eingeschlossen:

Für AX 4.0, den letzten Hotfix rollup einspielen. Der Hotfix wurde das erste Mal im Hotfix rollup 975357 eingeschlossen: I. DOCTYPE-Deklaration Die INDEX.XML-Datei, die beim GDPdU-Export erstellt wird, beinhaltet eine DOCTYPE-Deklaration, die inkorrekterweise als Kommentar herausgegeben wird:

Mehr

Exploration und Klassifikation von BigData

Exploration und Klassifikation von BigData Exploration und Klassifikation von BigData Inhalt Einführung Daten Data Mining: Vorbereitungen Clustering Konvexe Hülle Fragen Google: Riesige Datenmengen (2009: Prozessieren von 24 Petabytes pro Tag)

Mehr

Analyse Mobiler Applikationen zur Patientenbetreuung in Krankenhäusern. Bachelorarbeit

Analyse Mobiler Applikationen zur Patientenbetreuung in Krankenhäusern. Bachelorarbeit Analyse Mobiler Applikationen zur Patientenbetreuung in Krankenhäusern Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft der Wirtschaftswissenschaftlichen

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

Forschunsprojekte und Independent Coursework. Prof. Dr. Christian Herta 29. Januar 2013

Forschunsprojekte und Independent Coursework. Prof. Dr. Christian Herta 29. Januar 2013 Forschunsprojekte und Independent Coursework Prof. Dr. Christian Herta 29. Januar 2013 Forschungsgebiete Suchtechnologie, Text- und Webmining Verarbeitung unstrukturierter Daten, insbesondere Text Large

Mehr

Einleitung. Was ist das Wesen von Scrum? Die Ursprünge dieses Buches

Einleitung. Was ist das Wesen von Scrum? Die Ursprünge dieses Buches Dieses Buch beschreibt das Wesen von Scrum die Dinge, die Sie wissen müssen, wenn Sie Scrum erfolgreich einsetzen wollen, um innovative Produkte und Dienstleistungen bereitzustellen. Was ist das Wesen

Mehr

Ideen der Informatik. Maschinelles Lernen. Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik

Ideen der Informatik. Maschinelles Lernen. Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik Ideen der Informatik Maschinelles Lernen Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik Übersicht Lernen: Begriff Beispiele für den Stand der Kunst Spamerkennung Handschriftenerkennung

Mehr

Opinion Mining. Herausforderungen und Anwendung in der Politik

Opinion Mining. Herausforderungen und Anwendung in der Politik Opinion Mining Herausforderungen und Anwendung in der Politik S e m i n a r a r b e i t an der Otto-Friedrich-Universität Bamberg Professur für Angewandte Informatik insb. Kognitive Systeme Fakultät Wirtschaftsinformatik

Mehr

Web Data Mining. Alexander Hinneburg Sommersemester 2007

Web Data Mining. Alexander Hinneburg Sommersemester 2007 Web Data Mining Alexander Hinneburg Sommersemester 2007 Termine Vorlesung Mi. 10:00-11:30 Raum?? Übung Mi. 11:45-13:15 Raum?? Klausuren Mittwoch, 23. Mai Donnerstag, 12. Juli Buch Bing Liu: Web Data Mining

Mehr

design kommunikation development

design kommunikation development http://www.dkd.de dkd design kommunikation development Apache Solr - A deeper look Stefan Sprenger, Developer dkd Olivier Dobberkau, Geschäftsführer dkd Agenda Einführung Boosting Empfehlungen Ausblick

Mehr

DISKUSSIONSBEITRÄGE DER FAKULTÄT FÜR BETRIEBSWIRTSCHAFTSLEHRE MERCATOR SCHOOL OF MANAGEMENT UNIVERSITÄT DUISBURG-ESSEN. Nr. 374

DISKUSSIONSBEITRÄGE DER FAKULTÄT FÜR BETRIEBSWIRTSCHAFTSLEHRE MERCATOR SCHOOL OF MANAGEMENT UNIVERSITÄT DUISBURG-ESSEN. Nr. 374 DISKUSSIONSBEITRÄGE DER FAKULTÄT FÜR BETRIEBSWIRTSCHAFTSLEHRE MERCATOR SCHOOL OF MANAGEMENT UNIVERSITÄT DUISBURG-ESSEN Nr. 374 Eignung von Verfahren der Mustererkennung im Process Mining Sabrina Kohne

Mehr

Business Intelligence. Data Warehouse / Analyse Sven Elvers 2005-07-06

Business Intelligence. Data Warehouse / Analyse Sven Elvers 2005-07-06 Business Intelligence Data Warehouse / Analyse Sven Elvers 2005-07-06 Einleitung Dieses Dokument beschreibt einen für das Verständnis relevanten Teil der Präsentation. Business Intelligence Motivation

Mehr

Einführung in die Wissensverarbeitung und Data Mining

Einführung in die Wissensverarbeitung und Data Mining Einführung in die Wissensverarbeitung und Data Mining Peter Becker FH Bonn-Rhein-Sieg Fachbereich Angewandte Informatik!" $# Vorlesung Wintersemester 2001/02 1. Einführung Vorbemerkungen 1 Einführung Vorbemerkungen

Mehr

Begriffsbestimmung CRISP-DM-Modell Betriebswirtschaftliche Einsatzgebiete des Data Mining Web Mining und Text Mining

Begriffsbestimmung CRISP-DM-Modell Betriebswirtschaftliche Einsatzgebiete des Data Mining Web Mining und Text Mining Gliederung 1. Einführung 2. Grundlagen Data Mining Begriffsbestimmung CRISP-DM-Modell Betriebswirtschaftliche Einsatzgebiete des Data Mining Web Mining und Text Mining 3. Ausgewählte Methoden des Data

Mehr

9 Resümee. Resümee 216

9 Resümee. Resümee 216 Resümee 216 9 Resümee In der vorliegenden Arbeit werden verschiedene Methoden der Datenreduktion auf ihre Leistungsfähigkeit im sozialwissenschaftlichstatistischen Umfeld anhand eines konkreten Anwendungsfalls

Mehr

PPC und Data Mining. Seminar aus Informatik LV-911.039. Michael Brugger. Fachbereich der Angewandten Informatik Universität Salzburg. 28.

PPC und Data Mining. Seminar aus Informatik LV-911.039. Michael Brugger. Fachbereich der Angewandten Informatik Universität Salzburg. 28. PPC und Data Mining Seminar aus Informatik LV-911.039 Michael Brugger Fachbereich der Angewandten Informatik Universität Salzburg 28. Mai 2010 M. Brugger () PPC und Data Mining 28. Mai 2010 1 / 14 Inhalt

Mehr

Data Mining Anwendungen und Techniken

Data Mining Anwendungen und Techniken Data Mining Anwendungen und Techniken Knut Hinkelmann DFKI GmbH Entdecken von Wissen in banken Wissen Unternehmen sammeln ungeheure mengen enthalten wettbewerbsrelevantes Wissen Ziel: Entdecken dieses

Mehr

A) Durchsuchen von Datenbanken im Internet durch Endnote

A) Durchsuchen von Datenbanken im Internet durch Endnote EINLEITUNG/ANWEISUNGEN ZU DIESEM TEXT Wir werden die obere Liste (File/ Edit usw.) benutzen, obwohl die meisten Funktionen auch möglich mit rechtem Mausklick, mit Kombinationen der Tastatur oder mit den

Mehr

Universität Passau. Betriebswirtschaftslehre mit Schwerpunkt Internationales Management Prof. Dr. Carola Jungwirth. Masterarbeit

Universität Passau. Betriebswirtschaftslehre mit Schwerpunkt Internationales Management Prof. Dr. Carola Jungwirth. Masterarbeit Universität Passau Betriebswirtschaftslehre mit Schwerpunkt Internationales Management Prof. Dr. Carola Jungwirth Masterarbeit "Identifikation von Erfolgsfaktoren für eine Facebook- Recruiting-Strategie"

Mehr

Data Mining - Clustering. Sven Elvers

Data Mining - Clustering. Sven Elvers Agenda Data Mining Clustering Aktuelle Arbeiten Thesis Outline 2 Agenda Data Mining Clustering Aktuelle Arbeiten Thesis Outline 3 Data Mining Entdecken versteckter Informationen, Muster und Zusammenhänge

Mehr

Data-Mining: Ausgewählte Verfahren und Werkzeuge

Data-Mining: Ausgewählte Verfahren und Werkzeuge Fakultät Informatik Institut für Angewandte Informatik Lehrstuhl Technische Informationssysteme Data-Mining: Ausgewählte Verfahren und Vortragender: Jia Mu Betreuer: Dipl.-Inf. Denis Stein Dresden, den

Mehr

Personalisierung. Der Personalisierungsprozess Nutzerdaten erheben aufbereiten auswerten Personalisierung. Data Mining.

Personalisierung. Der Personalisierungsprozess Nutzerdaten erheben aufbereiten auswerten Personalisierung. Data Mining. Personalisierung Personalisierung Thomas Mandl Der Personalisierungsprozess Nutzerdaten erheben aufbereiten auswerten Personalisierung Klassifikation Die Nutzer werden in vorab bestimmte Klassen/Nutzerprofilen

Mehr

Automatische Mustererkennung zur Klassifikation von Konsumentenverhalten am Beispiel der Kreditwürdigkeitsprüfung

Automatische Mustererkennung zur Klassifikation von Konsumentenverhalten am Beispiel der Kreditwürdigkeitsprüfung Prof. Dr. Gerhard Arminger Dipl.-Ök. Alexandra Schwarz Bergische Universität Wuppertal Fachbereich Wirtschaftswissenschaft Fach Statistik Automatische Mustererkennung zur Klassifikation von Konsumentenverhalten

Mehr

Data Mining und Knowledge Discovery in Databases

Data Mining und Knowledge Discovery in Databases Data Mining und Knowledge Discovery in Databases Begriffsabgrenzungen... Phasen der KDD...3 3 Datenvorverarbeitung...4 3. Datenproblematik...4 3. Möglichkeiten der Datenvorverarbeitung...4 4 Data Mining

Mehr

Anfrage Erweiterung 03.11.2011 Jan Schrader

Anfrage Erweiterung 03.11.2011 Jan Schrader Anfrage Erweiterung 03.11.2011 Jan Schrader Vocabulary Mismatch Problem Anfrage und Dokument passen nicht zusammen obwohl Dokument zur Anfrage relevant Grund: Synonymproblem verschiedene Menschen benennen

Mehr

IT-Sicherheit mobiler Applikationen zur Unterstützung von Geschäftsprozessen. Bachelorarbeit

IT-Sicherheit mobiler Applikationen zur Unterstützung von Geschäftsprozessen. Bachelorarbeit IT-Sicherheit mobiler Applikationen zur Unterstützung von Geschäftsprozessen Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft der

Mehr

LiLa Portal Leitfaden für Dozierende

LiLa Portal Leitfaden für Dozierende Library of Labs Lecturer s Guide LiLa Portal Leitfaden für Dozierende Meist werden Dozierende die Lerninhalte ihrer Studierenden festlegen und aus der großen Auswahl von LiLa Experimenten diejenigen auswählen,

Mehr

(Thema) Realisierung eines kennzahlenbasierten Steuerungskonzepts für das Change Management. Bachelorarbeit

(Thema) Realisierung eines kennzahlenbasierten Steuerungskonzepts für das Change Management. Bachelorarbeit (Thema) Realisierung eines kennzahlenbasierten Steuerungskonzepts für das Change Management Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft

Mehr

1 Einleitung. 1.1 Unser Ziel

1 Einleitung. 1.1 Unser Ziel 1 Dieses Buch wendet sich an alle, die sich für agile Softwareentwicklung interessieren. Einleitend möchten wir unser mit diesem Buch verbundenes Ziel, unseren Erfahrungshintergrund, das dem Buch zugrunde

Mehr

Towards Automated Analysis of Business Processes for Financial Audits

Towards Automated Analysis of Business Processes for Financial Audits Towards Automated Analysis of Business Processes for Financial Audits Michael Werner Universität Hamburg michael.werner@wiso.uni hamburg.de Max Brauer Allee 60 22765 Hamburg StB Prof. Dr. Nick Gehrke Nordakademie

Mehr

Conversion Attribution

Conversion Attribution Conversion Attribution Eines der Trendthemen über das zurzeit jeder spricht ist Attribution. Das heißt allerdings nicht, dass auch jeder weiß was genau Attribution ist, was man damit machen kann und für

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Enterprise Social Networking: Ein Framework und ein Fachkonzept für ein Industrieunternehmen

Enterprise Social Networking: Ein Framework und ein Fachkonzept für ein Industrieunternehmen Enterprise Social Networking: Ein Framework und ein Fachkonzept für ein Industrieunternehmen Bachelorarbeit zur Erlangung des akademischen Grades Bachelor auf Science (B.Sc.) im Studiengang Wirtschaftswissenschaft

Mehr

Software EMEA Performance Tour 2013. 17.-19 Juni, Berlin

Software EMEA Performance Tour 2013. 17.-19 Juni, Berlin Software EMEA Performance Tour 2013 17.-19 Juni, Berlin HP Autonomy Information Governance Strategie: Die Kontrolle über die Informationsflut Petra Berneaud - Account Manager Autonomy Status in vielen

Mehr

Analyse von Diskursen in Social Media Ein Werkstattbericht

Analyse von Diskursen in Social Media Ein Werkstattbericht Analyse von Diskursen in Social Media Ein Werkstattbericht Ausgangspunkt in der Kommunikationswissenschaft Bisherige Öffentlichkeit: Journalisten als zentrale Vermittler von Themen und Meinungen ( Gatekeeper

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Rainer Klapper QS solutions GmbH

Rainer Klapper QS solutions GmbH Rainer Klapper QS solutions GmbH Der Handlungsbedarf Die CRM-Welt ist umgeben von Social Media Foren Communities Netzwerke CRM Blogs Fehlende Prozessintegration wird zunehmend zum Problem Wir bauen Brücken

Mehr

Session Storage im Zend Server Cluster Manager

Session Storage im Zend Server Cluster Manager Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies Agenda Einführung in Zend Server und ZSCM Überblick über PHP Sessions Zend Session Clustering Session Hochverfügbarkeit

Mehr

Effizientes Änderungsmanagement in Outsourcing- Projekten

Effizientes Änderungsmanagement in Outsourcing- Projekten Effizientes Änderungsmanagement in Outsourcing- Projekten Dr. Henning Sternkicker Rational Software IBM Deutschland GmbH Sittarder Straße 31 52078 Aachen henning.sternkicker@de.ibm.com Abstract: Es werden

Mehr

Kritische Erfolgsfaktoren für die Akzeptanzverbesserung von. E-Learning Angeboten für Finance. Masterarbeit

Kritische Erfolgsfaktoren für die Akzeptanzverbesserung von. E-Learning Angeboten für Finance. Masterarbeit Kritische Erfolgsfaktoren für die Akzeptanzverbesserung von E-Learning Angeboten für Finance Masterarbeit Zur Erlangung des akademischen Grades Master of Science (M.Sc.) im Studiengang Wirtschaftswissenschaft

Mehr

Ziele und Herausforderungen

Ziele und Herausforderungen Ziele und Herausforderungen Text soll automatisch aus einer Quellsprache in eine Zielsprache übertragen werden Dabei soll die Funktion des Textes erhalten bleiben Es werden sowohl computerlinguistische

Mehr

IT-basierte Erstellung von Nachhaltigkeitsberichten. Diplomarbeit

IT-basierte Erstellung von Nachhaltigkeitsberichten. Diplomarbeit IT-basierte Erstellung von Nachhaltigkeitsberichten Diplomarbeit zur Erlangung des Grades eines Diplom-Ökonomen der Wirtschaftswissenschaftlichen Fakultät der Leibniz Universität Hannover vorgelegt von

Mehr

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2 Seminar Cloud Data Management WS09/10 Tabelle1 Tabelle2 1 Einführung DBMS in der Cloud Vergleich verschiedener DBMS Beispiele Microsoft Azure Amazon RDS Amazon EC2 Relational Databases AMIs Was gibt es

Mehr

Visendo Fax Printer Troubleshooting

Visendo Fax Printer Troubleshooting Visendo Fax Server und Windows TIFF IFilter Volltextsuche in TIFF-Bildern Mit dem TIFF IFilter stellt Windows ein Instrument zur Verfügung, das die Suche nach TIFF- Dokumenten basierend auf dem Textinhalt

Mehr

Optimieren von Requirements Management & Engineering

Optimieren von Requirements Management & Engineering Xpert.press Optimieren von Requirements Management & Engineering Mit dem HOOD Capability Model Bearbeitet von Colin Hood, Rupert Wiebel 1. Auflage 2005. Buch. xii, 245 S. Hardcover ISBN 978 3 540 21178

Mehr

TEXTKLASSIFIKATION. WS 2011/12 Computerlinguistik I Deasy Sukarya & Tania Bellini

TEXTKLASSIFIKATION. WS 2011/12 Computerlinguistik I Deasy Sukarya & Tania Bellini TEXTKLASSIFIKATION WS 2011/12 Computerlinguistik I Deasy Sukarya & Tania Bellini GLIEDERUNG 1. Allgemeines Was ist Textklassifikation? 2. Aufbau eines Textklassifikationssystems 3. Arten von Textklassifikationssystemen

Mehr

Informationsflut bewältigen - Textmining in der Praxis

Informationsflut bewältigen - Textmining in der Praxis Informationsflut bewältigen - Textmining in der Praxis Christiane Theusinger Business Unit Data Mining & CRM Solutions SAS Deutschland Ulrich Reincke Manager Business Data Mining Solutions SAS Deutschland

Mehr

Webergänzung zu Kapitel 10

Webergänzung zu Kapitel 10 Webergänzung zu Kapitel 10 10.1.4 Varianzanalyse (ANOVA: analysis of variance) Im Kapitel 10 haben wir uns hauptsächlich mit Forschungsbeispielen beschäftigt, die nur zwei Ergebnissätze hatten (entweder

Mehr

Was ist DITA und was bringt es? www.ditaworks.com

Was ist DITA und was bringt es? www.ditaworks.com www.ditaworks.com Wir leben im Informationszeitalter und sind einem exponentiellen Anstieg neuer Daten und Informationen ausgesetzt. Nach neusten Studien können wir davon ausgehen, dass 90% aller verfügbaren

Mehr

Erkennen Sie die Rollen der Personen auf dem Team Management Rad anhand der kurzen Beschreibungen?

Erkennen Sie die Rollen der Personen auf dem Team Management Rad anhand der kurzen Beschreibungen? Wer bin ich? Erkennen Sie die Rollen der Personen auf dem Team Management Rad anhand der kurzen Beschreibungen? René Ich habe ein sehr schlechtes Gefühl bei dem Projekt, dass wir jetzt gestartet haben.

Mehr

Data Mining und maschinelles Lernen

Data Mining und maschinelles Lernen Data Mining und maschinelles Lernen Einführung und Anwendung mit WEKA Caren Brinckmann 16. August 2000 http://www.coli.uni-sb.de/~cabr/vortraege/ml.pdf http://www.cs.waikato.ac.nz/ml/weka/ Inhalt Einführung:

Mehr

Es ist ratsam vor den ersten Versuchen mit der Extension stets eine Sicherungskopie des Projekts anzulegen.

Es ist ratsam vor den ersten Versuchen mit der Extension stets eine Sicherungskopie des Projekts anzulegen. GB2UTM Tools Einführung Die ArcView 3-Extension GB2UTM Tools soll im Rahmen des Projekts GB2UTM dem GIS- Anwender bei der Umstellung seiner ArcView 3-Projekte ein Hilfsmittel darstellen. Es ist ratsam

Mehr

Social Monitoring. HAW Hamburg Hochschule für Angewandte Wissenschaften University of Applied Sciences Master Informatik - Anwendungen 1 WS 2013/2014

Social Monitoring. HAW Hamburg Hochschule für Angewandte Wissenschaften University of Applied Sciences Master Informatik - Anwendungen 1 WS 2013/2014 HAW Hamburg Hochschule für Angewandte Wissenschaften University of Applied Sciences Master Informatik - Anwendungen 1 WS 2013/2014 Abdul-Wahed Haiderzadah abdul-wahed.haiderzadah@haw-hamburg.de Betreuer:

Mehr

Big Data und Social Media Analyse. Baden, 11.06.2013 Arne Weitzel, Senior Solution Architect Samuel Rentsch, CEO Julian Götz, Head of Sales

Big Data und Social Media Analyse. Baden, 11.06.2013 Arne Weitzel, Senior Solution Architect Samuel Rentsch, CEO Julian Götz, Head of Sales Big Data und Social Media Analyse Baden, 11.06.2013 Arne Weitzel, Senior Solution Architect Samuel Rentsch, CEO Julian Götz, Head of Sales Big Data & Social Media Analyse werden in Zukunft zentrale Business

Mehr

Verwendung der Support Webseite

Verwendung der Support Webseite amasol Dokumentation Verwendung der Support Webseite Autor: Michael Bauer, amasol AG Datum: 19.03.2015 Version: 3.2 amasol AG Campus Neue Balan Claudius-Keller-Straße 3 B 81669 München Telefon: +49 (0)89

Mehr

Codierungstheorie Rudolf Scharlau, SoSe 2006 9

Codierungstheorie Rudolf Scharlau, SoSe 2006 9 Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets

Mehr

Social Media Monitoring Den Kunden zuhören. Teil I

Social Media Monitoring Den Kunden zuhören. Teil I Social Media Monitoring Den Kunden zuhören Teil I DVR: 0438804 Juli 2015 Social Media Monitoring bezeichnet die systematische, kontinuierliche und themenspezifische Suche, Erhebung, Aufbereitung, Analyse,

Mehr

Vergleich verschiedener Optimierungsansätze

Vergleich verschiedener Optimierungsansätze Vergleich verschiedener Optimierungsansätze Inhaltsverzeichnis 1 Einleitung... 2 2 Welchen Nutzen schafft munio?... 3 3 Analysen... 3 3.1 Schritt 1: Optimierung anhand von Indizes... 3 3.2 Schritt 2: Manuell

Mehr

Integration Services - Dienstarchitektur

Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Dieser Artikel solle dabei unterstützen, Integration Services in Microsoft SQL Server be sser zu verstehen und damit die

Mehr

Neuerungen Analysis Services

Neuerungen Analysis Services Neuerungen Analysis Services Neuerungen Analysis Services Analysis Services ermöglicht Ihnen das Entwerfen, Erstellen und Visualisieren von Data Mining-Modellen. Diese Mining-Modelle können aus anderen

Mehr

Text Mining und CRM. Hans Hermann Weber Univ. Erlangen IMMD 8, den 12.09.03

Text Mining und CRM. Hans Hermann Weber Univ. Erlangen IMMD 8, den 12.09.03 Text Mining und CRM Hans Hermann Weber Univ. Erlangen IMMD 8, den 12.09.03 Was ist Textmining Unstrukturierte Daten (Text) anreichern mit Strukturinformation: Metadaten hinzufügen Struktur (Segmentinformation)

Mehr