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