Charting Praxis
Nutze deine neuen Fähigkeiten, um die Anzahl der Wörter pro Zeile im Skript mit matplotlib
zu finden und zu berechnen. Das Holy Grail-Skript wird für dich geladen, und du musst Regex verwenden, um die Wörter pro Zeile zu finden.
Die Verwendung von List Comprehensions wird deine Berechnungen beschleunigen. Zum Beispiel: my_lines = [tokenize(l) for l in lines]
ruft in jeder Zeile der Liste lines
eine Funktion tokenize
auf. Die neue transformierte Liste wird in der Variablen my_lines
gespeichert.
Du hast Zugriff auf das gesamte Skript in der Variable holy_grail
. Los geht‘s!
Diese Übung ist Teil des Kurses
Einführung in die natürliche Sprachverarbeitung in Python
Anleitung zur Übung
Teile das Skript
holy_grail
mit dem Zeilenumbruchzeichen ('\n'
) in Zeilen auf.Verwende
re.sub()
in einem Listenverständnis, um die Aufforderungen wieARTHUR:
undSOLDIER #1
zu ersetzen. Das Muster ist für dich geschrieben worden.Verwende ein Listenverständnis, um
lines
mitregexp_tokenize()
zu tokenisieren und nur Wörter zu behalten. Erinnere dich daran, dass das Muster für Wörter"\w+"
ist.Verwende ein Listenverständnis, um eine Liste von Zeilenlängen mit dem Namen
line_num_words
zu erstellen.- Verwende
t_line
als Iteratorvariable, um übertokenized_lines
zu iterieren, und dann die Funktionlen()
, um die Zeilenlängen zu berechnen.
- Verwende
Zeichne ein Histogramm von
line_num_words
mitplt.hist()
. Vergiss nicht, auchplt.show()
zu verwenden, um den Plot anzuzeigen.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# Split the script into lines: lines
lines = ____.____('\n')
# Replace all script lines for speaker
pattern = "[A-Z]{2,}(\s)?(#\d)?([A-Z]{2,})?:"
lines = [re.____(____, '', l) for l in lines]
# Tokenize each line: tokenized_lines
tokenized_lines = [____ for s in lines]
# Make a frequency list of lengths: line_num_words
line_num_words = [____ for t_line in tokenized_lines]
# Plot a histogram of the line lengths
____
# Show the plot
____