Exercícios da Apostila 1
Ver também
Apostila 1 Exercitando 01
Execute o que se pede. Logo após, cole a solução do exercício neste documento. Lembre-se de salvar seu programa, para estudos posteriores.
Imprima as palavras dos documentos neg/cv002_tok-3321.txt
e
pos/cv003_tok-8338.txt
Implementado em textanalysis.booklet.booklet1.Ex01.words()
1 def words(self, fileid: str, category: Optional[str] = None) -> iter[str]:
2 """Iterador das palavras do corpus com ID ``fileid``
3
4 :param fileid: ID desejado
5 :type fileid: str
6
7 :param category: Categoria desejada
8 :type category: str
9
10 :return: Iterador de string
11 """
12 for fid in self.findid(fileid, category):
13 for word in self.corpus.wordlist(fid):
14 yield word
Apostila 1 Exercitando 02
Execute o que se pede. Logo após, cole a solução do exercício neste documento. Lembre-se de salvar seu programa, para estudos posteriores.
Utilize o arquivo Noticia_1
disponível na pasta de dados da
turma e liste os 50 bigramas e trigramas mais frequentes obtidos do texto.
Implementado em textanalysis.booklet.booklet1.Ex02.top_bigrams()
1 def top_bigrams(self, top: Optional[int] = 20) -> iter[BiGramFreq]:
2 """
3
4 :param top:
5 :type top: int
6
7 :return: Iterador de tupla
8 """
9 for obj, freq in nltk.FreqDist(self.bigrams).most_common(top):
10 yield obj, freq
Implementado em textanalysis.booklet.booklet1.Ex02.top_trigrams()
1 def top_trigrams(self, top: Optional[int] = 20) -> iter[TriGramFreq]:
2 """
3
4 :param top:
5 :type top: int
6
7 :return: Iterador de tupla
8 """
9 for obj, freq in nltk.FreqDist(self.trigrams).most_common(top):
10 yield obj, freq
Apostila 1 Exercitando 03
Execute o que se pede. Logo após, cole a solução do exercício neste documento. Lembre-se de salvar seu programa, para estudos posteriores.
Analise a frequência das palavras ['the', 'that']
no arquivo
singles.txt
e, depois, no arquivo pirates.txt
.
Implementado em textanalysis.booklet.booklet1.Ex03.tokens_freq()
1 @property
2 def tokens_freq(self) -> nltk.FreqDist:
3 return nltk.FreqDist(self.tokens)
Inclua a geração do gráfico de frequência.
Implementado em textanalysis.booklet.booklet1.Ex03.tokens_freq_plot()
1 def tokens_freq_plot(self) -> str:
2 out = dsutils.datadir.join(self.file.split('.')[0] + '.png')
3
4 fig = pyplot.figure(figsize=(10, 4))
5 pyplot.ion()
6 self.tokens_freq.plot(50, cumulative=False)
7 fig.savefig(out, bbox_inches="tight")
8 pyplot.ioff()
9
10 return out
Gere a lista dos 15 bigramas mais frequentes do texto.
Implementado em textanalysis.booklet.booklet1.Ex03.top_bigrams()
1 @property
2 def top_bigrams(self) -> list[BiGramFreq]:
3 return nltk.FreqDist(self.bigrams).most_common(15)
Gere a lista dos 20 quadrigramas gramas mais frequentes que possuam a
palavra life
.
Implementado em textanalysis.booklet.booklet1.Ex03.top_life_quadrigrams()
1 @property
2 def top_life_quadrigrams(self) -> list[QuadriGramFreq]:
3 return nltk.FreqDist(self.quadrigrams('life')).most_common(20)
Apostila 1 Exercitando 04
Execute o que se pede. Logo após, cole a solução do exercício neste documento. Lembre-se de salvar seu programa, para estudos posteriores.
O NLTK possui um corpus com as obras de Machado de Assis
(from nltk.corpus import machado
):
Execute
print(machado.readme())
para conhecer melhor o corpusUtilizando o corpus machado, elabore um programa que atenda aos requisitos:
Quais são as categorias presentes no corpus?
Quais são os documentos dentro desse corpus?
Imprima o conteúdo do arquivo do documento que contem a obra Memórias Postumas de Braz Cubas.
Analise a frequência das palavras
['olhos', 'estado']
em Memórias Postumas de Bras Cubas.Quantas palavras há no texto? Use
len(texto)
.Quantas palavras distintas há na obra?
Qual é o vocabulário (palavras) presentes na obra?
Quais são os 15 termos mais repetidos no texto de Machado de Assis?
Tabular a frequência de palavras.
Gerar um gráfico com os 15 termos mais repetidos.
Remova os termos indesejados e repita as questões
h
aj
.Obter a lista de todos os trigramas do texto.
Obter a lista dos 15 bigramas que contenham a palavra
olhos
.Gerar o gráfico dos bigramas com a palavra
olhos
.
Implementado na função textanalysis.booklet.booklet1.ex04()
1def ex04():
2 # Execute print(machado.readme()) para conhecer melhor o corpus
3 print(machado.readme())
4
5 # Utilizando o corpus machado, elabore um programa que atenda aos
6 # requisitos:
7
8 # a. Quais são as categorias presentes no corpus?
9 print('Categorias: {}'.format(machado.categories()))
10
11 # b. Quais são os documentos dentro desse corpus?
12 print('Documentos: {}'.format(machado.fileids()))
13
14 # c. Imprima o conteúdo do arquivo do documento que contem a obra
15 # Memórias Postumas de Braz Cubas
16 book_fileid = 'romance/marm05.txt'
17 print(machado.raw(book_fileid))
18
19 # d. Analise a frequência das palavras [‘olhos’,’estado’] em
20 # Memórias Postumas de Bras Cubas
21 book_text = machado.raw(book_fileid)
22 book_tokens = tokenize.word_tokenize(book_text)
23 book_freq = nltk.FreqDist(book_tokens)
24
25 for w in ['olhos', 'estado']:
26 print('Frequência da palavra {:>8s} : {:03}'.format(w, book_freq[w]))
27
28 # e. Quantas palavras há no texto? Use len(texto)
29 print('Total de palavras: {}'.format(len(book_text)))
30
31 # f. Quantas palavras distintas há na obra?
32 print('Total de palavras distintas: {}'.format(len(book_freq)))
33
34 # g. Qual é o vocabulário (palavras) presentes na obra?
35 print('Vocabulário: {}'.format(book_freq.keys()))
36
37 # h. Quais são os 15 termos mais repetidos no texto de Machado de Assis?
38 print('\n{:25s} {}'.format('Top 15', 'Frequência'))
39 for w, f in book_freq.most_common(15):
40 print('{:25s} {:03}'.format(w, f))
41
42 # i. Tabular a frequência de palavras
43 print('\n')
44 book_freq.tabulate(15, cumulative=False)
45
46 # j. Gerar um gráfico com os 15 termos mais repetidos
47 book_freq.plot(15, title='Top 15 words', cumulative=False)
48
49 # k. Remova os termos indesejados e repita as questões 'h' a 'j'
50 book_stopwords = stopwords.wordlist('portuguese')
51 book_stopwords += ['\x97', '...', 'd.']
52 book_stopwords += [p for p in string.punctuation]
53 book_tokens = [t.lower() for t in book_tokens
54 if t.lower() not in book_stopwords]
55 book_freq = nltk.FreqDist(book_tokens)
56
57 print('\n{:25s} {}'.format('Top 15', 'Frequência'))
58 for w, f in book_freq.most_common(15):
59 print('{:25s} {:03}'.format(w, f))
60
61 print('\n')
62 book_freq.tabulate(15, cumulative=False)
63
64 book_freq.plot(15, title='Top 15 words', cumulative=False)
65
66 # l. Obter a lista de todos os trigramas do texto
67 for trigram in ngrams(book_tokens, 3):
68 print('{:35s}'.format(str(trigram)))
69
70 # m. Obter a lista dos 15 bigramas que contenham a palavra 'olhos'
71 olhos_bigram = [ng for ng in ngrams(book_tokens, 2) if 'olhos' in ng]
72 olhos_freq = nltk.FreqDist(olhos_bigram)
73 print('\n{:30s} {}'.format('Top 15 Olhos', 'Frequência'))
74 for b, f in olhos_freq.most_common(15):
75 print('{:30s} {:03}'.format(str(b), f))
76
77 # n. Gerar o gráfico dos bigramas com a palavra 'olhos'
78 olhos_freq.plot(15, cumulative=True)