Einführung NLTK - ASV, Uni Leipzig

Werbung
Python
NLTK
Einführung in das Natural Language Toolkit
Markus Ackermann
<mam05ehm{at}studserver.uni-leipzig.de>
Abteilung für Automatische Sprachverarbeitung (Universität Leipzig)
11. Mai 2011
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Kurzeinführung
nützliche Sprachelemente
Python - Allgemeine Merkmale der Sprache
I
dynamisch typisierte, interpretierte Sprache
I
I
Typ einer Varialbe kann durch Zuweisung geändert werden
interaktives Ausführen und Ausprobieren von Programmteilen
einfach möglich
I
Typen, Funktionen und Klassen sind ’first-class’ objects
⇒ werden ebenso referenziert und behandelt werden wie alle
übliche Objekte
I
multi-paradigmatisch: prozedural, objektorientiert und alle
elementaren Merkmale funktionaler Programmierung
I
klare, einfache, knappe Syntax
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Erstes Beispiel
# ! / usr / bin / python
# coding : utf -8
import nltk # Laden eines Moduls
def let t e r _ p u z z l e _solver ( puzzle_letters ): # Funktionsdef .
obligatory _letter = puzzle_letters [0] # string slicing
puzzle_letters = nltk . FreqDist ( puzzle_letters )
# dynamische Typen von Variablen
wordlist = nltk . corpus . words . words ()
return [ w for w in wordlist if len ( w ) >= 6 # list - compr .
and obligatory_letter in w # oper . - overload
and nltk . FreqDist ( w ) <= puzzle_letters ]
if __name__ == " __main__ " : # eigenst ä ndig ausgef ü hrt ?
letters = raw_input ( " Buchstaben des R ä tsels : " )
print " L ö sungsw ö rter : " , " , " . join (
let t e r _ p u z z l e _solver ( letters ))
Python
NLTK
Kurzeinführung
nützliche Sprachelemente
Einstieg in Python
1. Ganz kurzes Tutorial zum kennenlernen:
http://docs.python.org/tutorial/introduction.html
2. Austoben mit dem interaktiven Interpreter
$ python
3. umfassenders Tutorial mit wichtigen Grundlagen:
http://docs.python.org/tutorial/
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Kurzeinführung
nützliche Sprachelemente
Sequenzen und slicing
I
Liste [0,1,2]==range(3) (veränderlich)
I
Tupel (’eins’,’zwei’) (unveränderlich)
I
String "Zwei Worte"
spruch = [ " Wochenend " , " und " , " Sonnenschein " , " ! " ]
print spruch [0]+ spruch [3] , spruch [2]+ spruch [ -1]
# = > Wochenend ! Sonnenschein !
w = " spliceofspam "
w [0] , w [ -2] , w [0:6] , w [ -4:]
# = > ( ’ s ’, ’a ’, ’ splice ’, ’ spam ’)
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Kurzeinführung
nützliche Sprachelemente
list comprehensions
[ len ( w ) for w in [ " NLP " ," with " ," Python " ]]
# = > [3 , 4 , 6]
[ w * i for i in [2 ,3] for w in [ " hey " , " ho " ]] # Schachtelung
# = > [ ’ heyhey ’, ’ hoho ’, ’ heyheyhey ’, ’ hohoho ’]
[ w . upper () for w in [ " Sch ö ne " , " Neue " , " Welt " ]
if len ( w )==4] # Bedingungen
# = > [ ’ NEUE ’, ’ WELT ’]
" " . join ( w [ i ] for w , i in # Was kommt hier raus ?
zip ([ " coal " , " goal " , " gods " , " made " ] , range (4)))
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Übersicht
Was ist das NLTK?
I
I
Sammlung von Programmbibliotheken, Sprachdaten (Corpora
und Sprachmodelle) und Schnittstellen für Sprach- und
Textverabeitung in Python
vorgefertigte Lösungen für häufige Standardaufgaben des
NLP:
I
I
I
I
I
I
I
I
Zugriff auf Corpora
Sprachstatistik
Tokenisierung, Chunking, Stemming
Tagging und Parsing
Klassifikation und Clustering
Information Extraction, Names Entity Recognition
sem. Analysen und Extraktion sem. Relationen
didaktische orientiert, vornehmlich für Lehre
I
I
passendes Lernmaterial integraler Teil des Projekts
im Code: Klarheit über Performance
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Übersicht
Beschaffung und Installation
I
Installtionsanweisungen: http://www.nltk.org/download
I
benötigte Programme/Pakete: Python (mind. 2.4.*),
PyYAML,NumPY, Matplotlib
I
nachträgliches Laden von Korpora und Daten von
Sprachmodellen:
import nltk
nltk . download ()
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Übersicht
Informationsquellen
I
Homepage: www.nltk.org
I
Bücher
Steven Bird, Ewan Klein, and Edward Loper (2009):
Natural Language Processing with Python; O’Reilly Publishing (kostenlos
online verfügbar: www.nltk.org/book)
Jacob Perkins (2011): Python Text Processing with NLTK 2.0
Cookbook; PACKT Publishing
I
Source-Code-Browser:
http://code.google.com/p/nltk/source/browse/trunk/nltk
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Übersicht
Hilfe
I
interaktiv:
import nltk
help ( nltk ) # f ü r NLTK - Komponenten
help ( nltk . corpus . reader )
help ( print ) # auch f ü r Python selbst
I
Forum (englisch):
http://groups.google.com/group/nltk-users/topics
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Python
NLTK
Übersicht
Dialogsysteme im NLTK
I
einfacher Aufbau, Prinzipien von Eliza direkt übernommen
⇒ Matching von Eingabemustern und elementare
morphologische Transformationen durch Ersetzten
I
vorhandene Chatbots: eliza, iesha (Anime-Teenspeak), rude,
suntsu (Chinesische Weisheiten), zen (therapeutische
Zen-Sprüche)
I
alle Chatbots werden als Instanzen von
nltk.chat.util.Chat erstellt
M. Ackermann (ASV Universität Leipzig)
NLTK-Einführung
Herunterladen