Textanalyse mit UIMA und Hadoop

Preview:

Citation preview

Textanalyse mit UIMA und Hadoop

!!

Hans-Peter Zorn data2day, Karlsruhe, 27.11.2014

2

Über mich

‣ seit 2014: Big Data Scientist @ Inovex ‣ 2011-2013: TU Darmstadt, UKP Lab

‣ Etablierung der Hadoop-Infrastruktur ‣ Unterstützung der Forscher bei Textanalyse auf großen Datenmengen ‣ Entwicklung dkpro-bigdata zur Ausführung von UIMA auf Hadoop

‣ 2005-2011: European Media Lab, Heidelberg ‣ u.a. Entwicklung eines Frameworks für Speech Analytics (Textanalyse auf

den Ergebnissen von automatischer Spracherkennung)

3

Die drei V’s in heutigen BigData Architekturen

Volume Hadoop, NoSQL, HDFS,…

Velocity Storm, Spark, Kafka, …

Variety Clickstream, Clickstream, Clickstream ?

4

Mehr als Weblogs:

Strukturiert

Semistrukturiert

Unstrukturiert

MailsVideoclips

TVMitschnitte

Social Media

WebXMLTransaktionale

DatenLogdaten

Stammdaten

DWH

‣ Motivation: Textanalyse & Machine Learning ‣ Pipelines mit Apache UIMA ‣ Skalierung von UIMA Pipelines ‣ Tools ‣ Best Practices und Alternativen

5

Agenda

6

Textanalyse

Klassifikation

Informations-Extraktion

Exploration

Sentiment Analyse, Spamdetection, Mailpriorisierung

Verschlagwortung, Zusammenfassung, Zuordnung von Worten zu Konzepten

Visualisierung, Suche, Trendanalyse

7

Welche Mail möchte ich sehen?

The health test result for NAME_NODE_WEB_METRIC_COLLECTION has become bad: The Cloudera Manager Agent is not able to communicate with this role's web server.

Dear Sir, !I am requesting for your help, to assist me in getting £42,000,000.00 to your account. please do indicate your interest for more information's. !Yours Truly, !From Daniel Klimowicz

8

Maschinelles Lernen

Apotheke SPAM

Einladung CLEAN

31

20

billig

SPAM

CLEAN

40

10

CLEAN

SPAM

Apotheke 5CLEAN

35 71

9

Vorverarbeitung

Tokenisierung Chunking

Stemming Lemmatis- ierung

Part-of-Speech

Satz

Guten Tag

Satz

Mein Name ist

ADJ PRP

Guten Tag Mein Name ist

gut Tag Mein Name sein

Guten Tag Mein Name ist

N N V

‣ Entwickelt von IBM ‣ Der Apache Foundation gespendet

(in 2006) ‣ OASIS Standard ‣ Technologie „DeepQA“ hinter IBM’s

Watson („Jeopardy“)

10

Apache UIMA

Type System

11

UIMA Komponenten

Collection Reader

Analysis Engine

CAS Consumer

• Typesystem • Interoperabilität

• CAS • Common Annotation

Structure • Collection Reader

• XML, PDF etc • Analysis Engine

• Chunker • Parser • Sentiment-Analyse

• CAS Consumer • File • Webservice • Datenbank

CAS

CAS

‣ Konfiguration von Komponenten ‣ Per XML: Component Descriptor !!!!!

‣ Programmatisch: UIMAFit ‣ nutzt z.t. Spring ‣ Automatische Erzeugung von

Deskriptoren aus Java-Annotationen.

12

von Komponenten zur Pipeline

JCas jCas = JCasFactory.createJCas(); jCas.setDocumentText("some text"); AnalysisEngine tokenizer = createEngine(MyTokenizer.class); !AnalysisEngine tagger = createEngine(MyTagger.class); !runPipeline(jCas, tokenizer, tagger); !for(Token token : iterate(jCas, Token.class)) System.out.println(token.getTag());

13

Skalierung: UIMA on Hadoop

Collection Reader

Corpus

Writer

Results

NLP Pipeline

Workstation

UIMA

HDFS

Collection Reader with

HDFSResourceLocator

Corpus

HDFSWriter

Results

NLP Pipeline

Workstation

14

Sklalierung: UIMA on Hadoop

Corpus

Collection Reader

NLP Pipeline

Writer

Mapper

HDFS

NLP Pipeline

Writer

MapperNLP

Pipeline

Writer

Mapper

Results

Cluster

Workstation

15

Skalierung: UIMA AS/DUCC

POS Tagger

QA1

Collection Reader

QA2

!Verschiedene Resultate werden parallel erzeugt

UIMA AS:Asyncronous Scaleout - Verteilt CAS per Message Queue an Workernodes !DUCC ist ein Cluster-Manager für UIMA AS

‣ Ähnlich einer Lambda-Architektur

16

Batch/Realtime kombiniert

Frage UIMAUIMA

UIMA

Batch

Realtime

Wiki- pedia

Web

UIMA

UIMA

MR

HDFS

UIMA

MR

HDFS

UIMA

MR

HDFS

Antwort

Cache

17

Verfügbare Komponenten

UIMA Components Dictionary Annotator, Stemmer, Chunker

Grundfunktionalität

UIMA Ruta Regelbasiert Informations-extraktion

DKPro Core Sammlung von NLP Komponenten des UKP Lab der TU Darmstadt

Hauptsächlich Vorverarbeitung

OpenNLP Sammlung von NLP Komponenten - Apache Projekt

18

Tools: CAS Editor und Eclipse Plugin

‣ NLTK ‣ Python !

‣ Lucene ‣ besitzt einige Analyzer, wird

beispielsweise von Mahout genutzt

!‣ GATE

‣ Ähnlich zu UIMA ‣ Eher akademisches Umfeld

19

Alternativen

‣ Multiword-Extraction !

‣ Beispielsweise für automatische Vervollständigung von Suchbegriffen !!

‣ Statistische Signifikanz einer des paarweisen Auftretens !

‣ Word-count, mittels Map/Reduce, Hive, Spark !

‣ Normalisierung, z.b. Tippfehlernormalisierung, Umlaute ist Vorverarbeitung

20

Anwendungsfall: Mehrwort-Ausdrücke

‣ Einfach anfangen! ‣ Regelbasiert, Lexikonbasiert ‣ Wenn ML, vorgefertigte und einfache Algorithmen

‣ Domäne eingrenzen ‣ Offene Domäne (Watson) extrem schwierig, Forschungsgebiet! ‣ Wenige Klassen (Spam/Kein Spam)

‣ Datenanalyse/Annotationsexperiment ‣ Können Menschen diese Aufgabe überhaupt konsistent lösen? !

‣ Trotzdem: steep learning curve, sicher kein Wochenendprojekt.

21

Was ist realistisch? Kann ich das selbst?

• Was möchte ich wissen? !!

• Kenne ich meine Zielklassen? • Habe ich Trainingsdaten? !

• Wie kann ich evaluieren? !!

• In welchem Format liegen meine Eingangsdaten vor? !!

• Wie schnell brauche ich die Resultate?

22

Schritt für Schritt zur Textanalyse

23

Zusammenfassung

• Auch unstrukturierte Daten sind erschließbar • Textanalyse ist oft Maschinelles Lernen • Vorgefertigte Komponenten existieren • Apache UIMA bietet eine Platform um solche

Komponenten zu einer Applikation zu kombinieren • UIMA und Hadoop sind gut integrierbar.

24

Ressourcen

UIMA: https://uima.apache.org/

OpenNLP: http://opennlp.apache.org/

DKPro Core: https://code.google.com/p/dkpro-core-asl/

DKPro BigData: https://code.google.com/p/dkpro-bigdata/

25

Vielen Dank für Ihre Aufmerksamkeit

Kontakt !Hans-Peter Zorn Big Data Solutions !inovex GmbH Office Karlsruhe Ludwig-Erhard-Allee 6 D-76131 Karlsruhe !hzorn@inovex.de !!!!!

Recommended