SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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
!
!
!
!
!

Weitere ähnliche Inhalte

Ähnlich wie Textanalyse mit UIMA und Hadoop

Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache SparkJens Albrecht
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafkagedoplan
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connectioninovex GmbH
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connectionvesparun
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenChristian Münch
 
Webinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit HadoopWebinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit Hadoopfun communications GmbH
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaGeorg Knon
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunk
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunk
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
Wie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopWie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopGerd König
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesQAware GmbH
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortragRamon Wartala
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platformredsys
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenMagnus Pfeffer
 

Ähnlich wie Textanalyse mit UIMA und Hadoop (20)

Einfuehrung in Apache Spark
Einfuehrung in Apache SparkEinfuehrung in Apache Spark
Einfuehrung in Apache Spark
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Node.js
Node.jsNode.js
Node.js
 
The Hadoop Connection
The Hadoop ConnectionThe Hadoop Connection
The Hadoop Connection
 
MapRecude: The Hadoop Connection
MapRecude: The Hadoop ConnectionMapRecude: The Hadoop Connection
MapRecude: The Hadoop Connection
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Webinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit HadoopWebinar Big Data - Enterprise Readiness mit Hadoop
Webinar Big Data - Enterprise Readiness mit Hadoop
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
SplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use CaseSplunkLive! Frankfurt 2016 - Helvetia Use Case
SplunkLive! Frankfurt 2016 - Helvetia Use Case
 
SplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case HelvetiaSplunkLive! Zürich 2016 - Use Case Helvetia
SplunkLive! Zürich 2016 - Use Case Helvetia
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
Wie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis HadoopWie baue ich ein DataWarehouse auf Basis Hadoop
Wie baue ich ein DataWarehouse auf Basis Hadoop
 
Dataservices - Data Processing mit Microservices
Dataservices - Data Processing mit MicroservicesDataservices - Data Processing mit Microservices
Dataservices - Data Processing mit Microservices
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
DSpace as publication platform
DSpace as publication platformDSpace as publication platform
DSpace as publication platform
 
Zeitreihen in Apache Cassandra
Zeitreihen in Apache CassandraZeitreihen in Apache Cassandra
Zeitreihen in Apache Cassandra
 
Cloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von MetadatenCloud Computing für die Verarbeitung von Metadaten
Cloud Computing für die Verarbeitung von Metadaten
 

Mehr von inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Mehr von inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Textanalyse mit UIMA und Hadoop

  • 1. Textanalyse mit UIMA und Hadoop ! ! Hans-Peter Zorn data2day, Karlsruhe, 27.11.2014
  • 2. 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. 3 Die drei V’s in heutigen BigData Architekturen Volume Hadoop, NoSQL, HDFS,… Velocity Storm, Spark, Kafka, … Variety Clickstream, Clickstream, Clickstream ?
  • 5. ‣ Motivation: Textanalyse & Machine Learning ‣ Pipelines mit Apache UIMA ‣ Skalierung von UIMA Pipelines ‣ Tools ‣ Best Practices und Alternativen 5 Agenda
  • 7. 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. 8 Maschinelles Lernen Apotheke SPAM Einladung CLEAN 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 Name ist ADJ PRP Guten Tag Mein Name ist gut Tag Mein Name sein Guten Tag Mein Name ist N N V
  • 10. ‣ Entwickelt von IBM ‣ 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 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
  • 12. ‣ 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. 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. 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. 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
  • 16. ‣ Ä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. 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. 18 Tools: CAS Editor und 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 ! ‣ 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
  • 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ö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. 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. 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. 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 ! ! ! ! !