Einführung in Python Ablauf der Übung Python ist eine…

Werbung
Ablauf der Übung
• Klärung von aktuellen Fragen zur
Vorlesung
• Kurze Einführung in Python
• Einrichten einer Python-Umgebung
• Bearbeiten der Programmieraufgabe
Einführung in Python
Übung zur Vorlesung NLP
Beate Krause, Dominik Benz
22.04.2008
23.04.2008
NLP-Übung: Einführung in Python
1
Python ist eine…
•
•
•
•
•
23.04.2008
NLP-Übung: Einführung in Python
2
Zum Programmieren braucht man..
objektorientierte
dynamisch getypte
interpretierte
interaktive
High-Level-Programmiersprache
• Einen Texteditor. Komfortabel:
– Eclipse (http://www.eclipse.org/downloads/moreinfo/classic.php)
Pydev Python Plugin (http://pydev.sourceforge.net/)
• den Python-Interpreter
– http://www.python.org/download/
• für uns zusätzlich: NLTK
– http://nltk.sourceforge.net/
23.04.2008
NLP-Übung: Einführung in Python
3
23.04.2008
NLP-Übung: Einführung in Python
4
Getting started
Variablen
•
• Gut zum „Herumspielen“: Das Interactive
Development Enviroment (IDLE)
Variablennamen: ASCII-Zeichen + Ziffern (erstes Zeichen darf keine Ziffer
sein)
müssen nicht deklariert werden, werden ins Leben gerufen, sobald Wert
zugewiesen wird (aber auch erst dann!)
•
1
1
2
3
4
5
6
7
8
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit
Type "copyright", "credits" or "license()" for more information.
>>> print 3 + 10 * 10
103
>>> "hello,-" + "world"
’hello,-world’
>>> "spam-" * 4
’spam-spam-spam-spam-’
2
3
4
5
NLP-Übung: Einführung in Python
5
7
8
9
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
12
13
14
NLP-Übung: Einführung in Python
NLP-Übung: Einführung in Python
6
kann verschiedene Elemente enthalten (Strings, Integer, andere Listen, …)
sind im Gegensatz zu Strings mutable, d.h. Inhalt kann nach Definition
modifiziert werden
1
>>> msg = ’Hello-World’
>>> msg[0]
’H’
>>> msg[3]
’l’
>>> msg[1:4]
’ell’
>>> len(msg)
11
>>> msg[-1]
’d’
23.04.2008
Traceback (most recent call last):
File "<pyshell\#3>", line 1, in <module>
msg * newNum
NameError: name ’newNum’ is not defined
23.04.2008
•
•
Strings werden als Sequenz von Zeichen aufgefasst, aus denen „slices“
extrahiert werden können
1
newNum
Sequenztyp Liste
Sequenztyp Strings
•
’Hi’
3
num
6
10
23.04.2008
>>> msg =
>>> num =
>>> msg *
’HiHiHi’
>>> msg *
7
>>> numbers = [1, 4, 9, 16]
>>> colors = [’green’, ’blue’, ’red’]
>>> colors[0] * numbers[1]
’greengreengreengreen’
>>> colors[0] = ’black’
>>> numbers[1] = 2
>>> colors[0] * numbers[1]
’blackblack’
>>> name = ’Saulus’
>>> name[0] = ’P’
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
name[0] = ’S’
TypeError: ’str’ object does not support item assignment
23.04.2008
NLP-Übung: Einführung in Python
8
Sequenzen / Strings: nützliche Funktionen
Sequenztypen allgemein
1
•
alle Sequenztypen unterstützen die Operationen
2
3
4
Verkettung "Gambol"+ "putty"== "Gambolputty"
>>>
>>>
>>>
>>>
chomsky = [’colorless’, ’green’, ’ideas’]
chomsky.sort()
# Sortieren
chomsky.reverse() # Reihenfolge umkehren
chomsky.append(’sleep’) # Elemente hinzufuegen
5
Wiederholung: 2 * "spam"== "spamspam"
6
7
Indizierung: "Python"[1] = "y"
8
9
Mitgliedschaftstest: "yth" in "Python"
# Elemente aus Liste in String umwandeln
>>> sent = ’;’.join(chomsky)
>>> sent
’colorless;green;ideas;sleep’
10
Slicing: "Monty-Python’s-Flying-Circus"[6:12] = "Python"
11
12
Iteration: for x in "egg"
23.04.2008
NLP-Übung: Einführung in Python
13
9
# String mittels Delimiter aufteilen
>>> sent.split(;)
[’colorless’, ’green’, ’ideas’, ’sleep’]
23.04.2008
Kontrollstrukturen: if / else
1
2
3
4
5
6
7
NLP-Übung: Einführung in Python
10
Dictionaries
•
•
>>> word = ’Hello-World’
>>> if len(word) < 3:
print ’word-length-is-less-than-three’
elif len(word) == 3:
print ’word-length-is-three’
else:
print ’word-length-is-greater-than-three’
1
2
3
4
5
6
Listen sind immer mit Integers indiziert
Verallgemeinerung („alles mit allem indizieren“): Dictionaries
>>>
>>>
>>>
>>>
>>>
’n’
pos = {}
pos[’colorless’] = ’adv’
pos[’furiously’] = ’adv’
pos[’ideas’] = ’n’
pos[’ideas’]
7
• Gültigkeitsbereich der Schleife durch whitespace festgelegt(!!)
• kein Semikolon am Ende der Zeilen
8
9
10
>>> pos.keys() # all keys (as list)
>>> pos.values() # all values (as list)
>>> pos.items() # all items (as key / value pairs)
11
12
13
23.04.2008
NLP-Übung: Einführung in Python
11
>>> if ’adv’ in pos:
# ACHTUNG: prueft nur Schluesselmenge
23.04.2008
NLP-Übung: Einführung in Python
12
Reguläre Ausdrücke
•
•
1
2
3
4
5
6
Reguläre Ausdrücke ctd.
„Zeichenketten, die der Beschreibung von Mengen beziehungsweise
Untermengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln
dienen“ (Wikipedia)
seehr mächtig & praktisch – aber: learning by doing!!
• Online testen:
http://www.fileformat.info/tool/regex.htm
>>> import nltk
>>> s = ’This-is-a-greeeat-sentence!’
>>> nltk.re_show(’is’, s)
Th{is} {is} a greeeat sentence!
>>> nltk.re_show(’e+’, s)
This is a gr{eee}at s{e}nt{e}nc{e}!
7
8
9
10
11
>>> import re
# alle nicht-Vokal / Vokal-Paare
>>> re.findall(’([^aeiou][aeiou])’, s)
[’hi’, ’-i’, ’-a’, ’re’, ’se’, ’te’, ’ce’]
23.04.2008
NLP-Übung: Einführung in Python
13
Hinweise zur Übung / NLTK
• NLTK bietet recht viele „fertige“ Funktionalität /
Hilfestellung
– z.B. praktisch zum Plotten der Häufigkeiten: nltk.draw.plot
– Stopwortlisten für verschiedene Sprachen verfügbar
– …
• es geistert auch viel fertiger Python-NLP-Code
im Netz herum
– inspirieren OK, kopieren nicht
– Rad nicht 2x erfinden – aber VERSTEHEN!
23.04.2008
NLP-Übung: Einführung in Python
15
23.04.2008
NLP-Übung: Einführung in Python
14
Herunterladen