ss19 praktikum nltk sklearn - julielab.de filepython api python api nltk stellt methoden zur...

20
Software-Praktikum NLTK & sklearn Dr. des. Johannes Hellrich https://julielab.de 20.6.2019

Upload: others

Post on 15-Oct-2019

58 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Software-Praktikum NLTK & sklearnDr. des. Johannes Hellrich

https://julielab.de20.6.2019

Page 2: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTKTextanalyse

sklearnMaschinelles

Lernen

pandasDaten in Tabellen

NumPyRechnen

Komponenten für (modernes) NLP

Page 3: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTKTextanalyse

sklearnMaschinelles

Lernen

pandasDaten in Tabellen

NumPyRechnen

Komponenten für (modernes) NLP

Page 4: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

sklearnMaschinelles

Lernen

pandasDaten in Tabellen

NumPyRechnen

Komponenten für (modernes) NLP

NLTKTextanalyse

Page 5: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTK

• Projekt: http://www.nltk.org• E-Book: http://www.nltk.org/book/• Zur Lehre entwickelt, wird aber auch produktiv

genutzt• Bietet Korpora und Komponenten für Verarbeitung• String-orientiert• Primär für Englisch

Page 6: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTK stellt Korpora & Modelle zur Verfügung• Download in Notebooks mit nltk.download('name‘)• Oder interaktiv per nltk.download()

Page 7: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Interaktion mit KorporaEinfuhrung

Kopora in NLTKUbungsaufgaben

Beispielhafte KorporaPython API

Python API

NLTK stellt Methoden zur Interaktion mit Korpora zur Verfugung:fileids() listet alle Dateien, aus denen das Korpus besteht

raw() bietet den blanken Text

words(),sents(),paras() entsprechend die Worter, Satze und

Paragraphen

bei annotierten Korpora kann uber

tagged words(),tagged sents(),tagged paras() jeweils eine

Liste aus Tupeln (Token, Tag) mit Annotationen ausgegeben

werden

siehe auch http://www.nltk.org/howto/corpus.html furdetaillierte Informationen

Franz Matthies Softwarepraktikum

EinfuhrungKopora in NLTKUbungsaufgaben

Beispielhafte KorporaPython API

Python API

NLTK stellt Methoden zur Interaktion mit Korpora zur Verfugung:fileids() listet alle Dateien, aus denen das Korpus besteht

raw() bietet den blanken Text

words(),sents(),paras() entsprechend die Worter, Satze und

Paragraphen

bei annotierten Korpora kann uber

tagged words(),tagged sents(),tagged paras() jeweils eine

Liste aus Tupeln (Token, Tag) mit Annotationen ausgegeben

werden

siehe auch http://www.nltk.org/howto/corpus.html furdetaillierte Informationen

Franz Matthies Softwarepraktikum

Page 8: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTK Pipelines

Satzerkennung Tokenerkennung POS-Tagger ...

• Zumeist sowohl sehr einfache als auch relativ moderne Lösungen vorhanden

• Segmentierung: http://www.nltk.org/book/ch03.html• Tagging & Co.: http://www.nltk.org/book/ch05.html

Page 9: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Segmentierung

Page 10: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

POS-Tagging

Page 11: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

NLTKTextanalyse

sklearnMaschinelles

Lernen

pandasDaten in Tabellen

NumPyRechnen

Komponenten für (modernes) NLP

Page 12: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

scikit learn / sklearn

• Projekt: https://scikit-learn.org/stable/• Generelles Machine Learning• Zugriff auf mehr und aktuellere Verfahren• Nur sehr eingeschränkt spezifisch für Texte/NLP• Basiert intern auf numerischen Werten

Page 13: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Features -> Numerisch

Page 14: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Klassifikation

Page 15: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Intuition für Verfahrendes maschinellen Lernens

Page 16: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Naive Bayes

Gesucht: p(Klasse | Feature1, Feature2, ...)

Bayes Theorem:p Klasse Features =

𝑝 𝐾𝑙𝑎𝑠𝑠𝑒 𝑝(𝐹𝑒𝑎𝑡𝑢𝑟𝑒𝑠|𝐾𝑙𝑎𝑠𝑠𝑒)𝑝(𝐹𝑒𝑎𝑡𝑢𝑟𝑒𝑠)

Nenner quasi konstant:p Klasse Features = 𝑝 𝐾𝑙𝑎𝑠𝑠𝑒 𝑝(𝐹𝑒𝑎𝑡𝑢𝑟𝑒𝑠|𝐾𝑙𝑎𝑠𝑠𝑒)

Angenommen Features unabhängig:p Klasse Features = 𝑝 𝐾 𝑝(𝐹9|𝐾) 𝑝(𝐹:|𝐾) 𝑝(𝐹;|𝐾)...

Page 17: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Logistische Regression

https://en.wikipedia.org/wiki/Logistic_regression

Page 18: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

SVM I/II

https://www.svm-tutorial.com/2014/11/svm-understanding-math-part-1/

Page 19: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

SVM II/II

https://scikit-learn.org/stable/modules/svm.html#svm-classification

Page 20: ss19 praktikum nltk sklearn - julielab.de filePython API Python API NLTK stellt Methoden zur Interaktion mit Korpora zur Verf¨ugung: fileids() listet alle Dateien, aus denen das Korpus

Faustregeln

• Jeder Algorithmus hat Stärken und Schwächen• i.d.R. liefern SVMs die beste Kombination aus

Geschwindigkeit und Genauigkeit unter den gezeigten Verfahren• Ein Plot der Daten kann sich lohnen, eventuell ist

keine lineare Trennung möglich -> SVM mit Kernel