Procvičení: vizualizace dat
Zkus využít nově nabyté dovednosti a pomocí matplotlib zjistit a zobrazit počet slov na každém řádku skriptu. Skript Monty Python a Svatý Grál je již načtený – stačí použít regex k nalezení slov na každém řádku.
List comprehensions ti výpočty výrazně urychlí. Například: my_lines = [tokenize(l) for l in lines] zavolá funkci tokenize na každý řádek ze seznamu lines a výsledek uloží do proměnné my_lines.
Celý skript máš k dispozici v proměnné holy_grail. Pusť se do toho!
Toto cvičení je součástí kurzu
Úvod do zpracování přirozeného jazyka v Pythonu
Pokyny k cvičení
- Rozděl skript
holy_grailna řádky pomocí znaku nového řádku ('\n'). - Uvnitř list comprehension použij
re.sub()k odstranění poznámek jakoARTHUR:neboSOLDIER #1. Vzor je již připravený. - Pomocí list comprehension tokenizuj
linesfunkcíregexp_tokenize()tak, aby zůstala pouze slova. Vzor pro slova je"\w+". - Pomocí list comprehension vytvoř seznam délek řádků s názvem
line_num_words.- Jako proměnnou iterátoru použij
t_linepro průchod přestokenized_linesa délku každého řádku zjisti pomocí funkcelen().
- Jako proměnnou iterátoru použij
- Vykresli histogram
line_num_wordspomocíplt.hist(). Nezapomeň přidat taképlt.show()pro zobrazení grafu.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
____