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
Mails
Videoclips
TV
Mitschnitte
Social Media
Web
XMLTransaktionale

Daten
Logdaten
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
TypeSystem
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
Mapper
NLP
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 UIMA
UIMA
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
!
!
!
!
!

Textanalyse mit UIMA und Hadoop

  • 1.
    Textanalyse mit UIMAund Hadoop ! ! Hans-Peter Zorn data2day, Karlsruhe, 27.11.2014
  • 2.
    2 Über mich ‣ seit2014: 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.
    3 Die drei V’sin heutigen BigData Architekturen Volume Hadoop, NoSQL, HDFS,… Velocity Storm, Spark, Kafka, … Variety Clickstream, Clickstream, Clickstream ?
  • 4.
  • 5.
    ‣ Motivation: Textanalyse& Machine Learning ‣ Pipelines mit Apache UIMA ‣ Skalierung von UIMA Pipelines ‣ Tools ‣ Best Practices und Alternativen 5 Agenda
  • 6.
  • 7.
    7 Welche Mail möchteich 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.
    8 Maschinelles Lernen Apotheke SPAM EinladungCLEAN 31 20 billig SPAM CLEAN 40 10 CLEAN SPAM Apotheke 5CLEAN 35 71
  • 9.
    9 Vorverarbeitung Tokenisierung Chunking Stemming Lemmatis- ierung Part-of- Speech Satz Guten Tag Satz Mein Nameist ADJ PRP Guten Tag Mein Name ist gut Tag Mein Name sein Guten Tag Mein Name ist N N V
  • 10.
    ‣ Entwickelt vonIBM ‣ Der Apache Foundation gespendet (in 2006) ‣ OASIS Standard ‣ Technologie „DeepQA“ hinter IBM’s Watson („Jeopardy“) 10 Apache UIMA
  • 11.
    TypeSystem 11 UIMA Komponenten Collection Reader AnalysisEngine 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
  • 12.
    ‣ Konfiguration vonKomponenten ‣ 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.
    13 Skalierung: UIMA onHadoop Collection Reader Corpus Writer Results NLP Pipeline Workstation UIMA HDFS Collection Reader with HDFSResourceLocator Corpus HDFSWriter Results NLP Pipeline Workstation
  • 14.
    14 Sklalierung: UIMA onHadoop Corpus Collection Reader NLP Pipeline Writer Mapper HDFS NLP Pipeline Writer Mapper NLP Pipeline Writer Mapper Results Cluster Workstation
  • 15.
    15 Skalierung: UIMA AS/DUCC POS Tagger QA1 Collection Reader QA2 ! Verschiedene Resultate werden parallelerzeugt UIMA AS:
 Asyncronous Scaleout - Verteilt CAS per Message Queue an Workernodes ! DUCC ist ein Cluster-Manager für UIMA AS
  • 16.
    ‣ Ähnlich einerLambda-Architektur 16 Batch/Realtime kombiniert Frage UIMA UIMA UIMA Batch Realtime Wiki- pedia Web UIMA UIMA MR HDFS UIMA MR HDFS UIMA MR HDFS Antwort Cache
  • 17.
    17 Verfügbare Komponenten UIMA ComponentsDictionary 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.
    18 Tools: CAS Editorund Eclipse Plugin
  • 19.
    ‣ NLTK ‣ Python ! ‣Lucene ‣ besitzt einige Analyzer, wird beispielsweise von Mahout genutzt ! ‣ GATE ‣ Ähnlich zu UIMA ‣ Eher akademisches Umfeld 19 Alternativen
  • 20.
    ‣ Multiword-Extraction ! ‣ Beispielsweisefü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
  • 21.
    ‣ 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?
  • 22.
    • Was möchteich 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.
    23 Zusammenfassung • Auch unstrukturierteDaten 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.
    24 Ressourcen UIMA: https://uima.apache.org/ OpenNLP: http://opennlp.apache.org/ DKProCore: https://code.google.com/p/dkpro-core-asl/ DKPro BigData: https://code.google.com/p/dkpro-bigdata/
  • 25.
    25 Vielen Dank fürIhre Aufmerksamkeit Kontakt ! Hans-Peter Zorn Big Data Solutions ! inovex GmbH Office Karlsruhe Ludwig-Erhard-Allee 6 D-76131 Karlsruhe ! hzorn@inovex.de ! ! ! ! !