Prática de gráficos
Tente usar suas novas habilidades para encontrar e representar em gráfico o número de palavras por linha no roteiro usando matplotlib. O roteiro de The Holy Grail já está carregado para você, e você precisará usar regex para encontrar as palavras por linha.
Usar list comprehensions aqui vai acelerar seus cálculos. Por exemplo: my_lines = [tokenize(l) for l in lines] vai chamar a função tokenize em cada linha da lista lines. A nova lista transformada será salva na variável my_lines.
Você tem acesso ao roteiro completo na variável holy_grail. Mãos à obra!
Este exercício faz parte do curso
Introdução ao Processamento de Linguagem Natural em Python
Instruções do exercício
- Divida o roteiro
holy_grailem linhas usando o caractere de nova linha ('\n'). - Use
re.sub()dentro de uma list comprehension para substituir os prompts comoARTHUR:eSOLDIER #1. O padrão já foi escrito para você. - Use uma list comprehension para tokenizar
linescomregexp_tokenize(), mantendo apenas palavras. Lembre-se de que o padrão para palavras é"\w+". - Use uma list comprehension para criar uma lista com os comprimentos das linhas chamada
line_num_words.- Use
t_linecomo sua variável iteradora para percorrertokenized_linese, em seguida, a funçãolen()para calcular os comprimentos das linhas.
- Use
- Faça um histograma de
line_num_wordsusandoplt.hist(). Não se esqueça de usar tambémplt.show()para exibir o gráfico.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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
____