Textanalyse mit UIMA und Hadoop Hans-Peter Zorn data2day, Karlsruhe, 27.11.2014
Ü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) 2
Die drei V s in heutigen BigData Architekturen Volume Hadoop, NoSQL, HDFS, Velocity Storm, Spark, Kafka, Variety Clickstream, Clickstream,? Clickstream 3
Mehr als Weblogs: Strukturiert Unstrukturiert Transaktionale Daten Stammdaten DWH Mails Web Videoclips XML TV Logdaten Mitschnitte Social Media Semistrukturiert 4
Agenda Motivation: Textanalyse & Machine Learning Pipelines mit Apache UIMA Skalierung von UIMA Pipelines Tools Best Practices und Alternativen 5
Textanalyse Klassifikation Sentiment Analyse, Spamdetection, Mailpriorisierung Informations- Extraktion Verschlagwortung, Zusammenfassung, Zuordnung von Worten zu Konzepten Exploration Visualisierung, Suche, Trendanalyse 6
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 7
Maschinelles Lernen Apotheke CLEAN 5 Apotheke Einladung SPAM CLEAN 31 20 billig SPAM CLEAN 40 10 CLEAN SPAM 35 71 8
Vorverarbeitung Tokenisierung Chunking Guten Satz Tag Mein Name ist Satz Stemming Lemmatisierung Part-of- Speech Guten Tag Mein Name ist gut Tag Mein Name sein Guten Tag Mein Name ist ADJ N PRP N V 9
Apache UIMA Entwickelt von IBM Der Apache Foundation gespendet (in 2006) OASIS Standard Technologie DeepQA hinter IBM s Watson ( Jeopardy ) 10
UIMA Komponenten Collection Reader CAS Analysis Engine CAS CAS Consumer Type System Typesystem Interoperabilität CAS Common Annotation Structure Collection Reader XML, PDF etc Analysis Engine Chunker Parser Sentiment-Analyse CAS Consumer File Webservice Datenbank 11
von Komponenten zur Pipeline Konfiguration von Komponenten Per XML: Component Descriptor Programmatisch: UIMAFit nutzt z.t. Spring Automatische Erzeugung von Deskriptoren aus Java- Annotationen. 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()); 12
Skalierung: UIMA on Hadoop UIMA Corpus Workstation Results Collection Reader NLP Pipeline Writer Corpus HDFS Results Workstation Collection Reader with HDFSResourceLocator NLP Pipeline HDFSWriter 13
Sklalierung: UIMA on Hadoop Corpus Results Collection Reader Workstation HDFS Mapper NLP Pipeline Writer Mapper NLP Pipeline Writer Mapper NLP Pipeline Writer Cluster 14
Skalierung: UIMA AS/DUCC Collection Reader POS Tagger QA1 Verschiedene Resultate werden parallel erzeugt QA2 UIMA AS: Asyncronous Scaleout - Verteilt CAS per Message Queue an Workernodes DUCC ist ein Cluster-Manager für UIMA AS 15
Batch/Realtime kombiniert Ähnlich einer Lambda-Architektur Batch Web Wikipedia UIMA MR HDFS UIMA MR HDFS UIMA MR HDFS Cache Realtime Frage UIMA UIMA UIMA UIMA Antwort 16
Verfügbare Komponenten UIMA Components Dictionary Annotator, Stemmer, Chunker Grundfunktionalität UIMA Ruta Regelbasiert Informationsextraktion DKPro Core OpenNLP Sammlung von NLP Komponenten des UKP Lab der TU Darmstadt Sammlung von NLP Komponenten - Apache Projekt Hauptsächlich Vorverarbeitung 17
Tools: CAS Editor und Eclipse Plugin 18
Alternativen NLTK Python Lucene besitzt einige Analyzer, wird beispielsweise von Mahout genutzt GATE Ähnlich zu UIMA Eher akademisches Umfeld 19
Anwendungsfall: Mehrwort-Ausdrücke 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
Was ist realistisch? Kann ich das selbst? 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
Schritt für Schritt zur Textanalyse 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
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. 23
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/ 24
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 25