Atividade da Aula
Ver também
Selecione uma notícia completa, copie-a e salve-a em um arquivo de texto. Utilize a notícia baixada e crie um script que realize o que se pede.
Contar o número de palavras no texto
Implementado em textanalysis.classactivity.News.sents_words_len
1 @property
2 def sents_words_len(self) -> int:
3 """Quantidade de tokens
4
5 Contabiliza a quantidade de tokens de todas as sentenças.
6
7 :return: quantidade de tokens em todas as sentaças
8 """
9 return sum([1 for _ in self.sents for _ in _])
1 @property
2 def sents(self) -> Iterator[list[str]]:
3 """Gera a lista de sentenças tokenizada
4
5 Gera um iterador sobre cada sentença encontrada em :attr:`text`. Ao
6 tokenizar (utilizando as funções :func:`nltk.tokenize.sent_tokenize` e
7 :func:`nltk.tokenize.word_tokenize`, a sentença se torna uma lista de
8 tokens.
9
10 :return: iterador de lista de sentenças tokenizadas
11 """
12 for sent in nltk.tokenize.sent_tokenize(self.text):
13 sent = sent.replace('\n', ' ')
14 sent = nltk.tokenize.word_tokenize(sent)
15 yield sent
Imprimir as 10 palavras mais utilizadas
Implementado em textanalysis.classactivity.News.top_words
1 def top_words(self, n: int = 10) -> Iterator[tuple[str, int]]:
2 """Gera as palavras mais frequentes
3
4 Gera as palavras (neste caso, tokens) mais frequentes em :attr:`text`
5 utilizando a classe :class:`nltk.probability.FreqDist`.
6
7 :param n: número de palavras a retornar
8 :type n: int
9 :return: iterador de tupla (palavra, frequência)
10 """
11 freq = nltk.probability.FreqDist(_ for _ in self.sents_clean for _ in _)
12
13 for word, top in freq.most_common(n):
14 yield word, top
1 @property
2 def sents_clean(self) -> Iterator[list[str]]:
3 """Gera a lista de sentenças tokenizadas sem *stopwords*.
4
5 Mesma funcionalidade de :attr:`sents`, porém a sentença não contém
6 tokens definidos em :attr:`stopwords`.
7
8 :return: iterador de lista de sentenças tokenizadas
9 """
10 for sent in self.sents:
11 for word in sent:
12 if word.lower() in self.stopwords:
13 sent.remove(word)
14 for word in sent:
15 if word.lower() in self.stopwords:
16 sent.remove(word)
17 yield sent
Imprimir os 10 bigramas mais utilizados
Implementado em textanalysis.classactivity.News.top_bigram
1 def top_bigram(self, n: int = 10) -> Iterator[tuple[str, int]]:
2 """Gera os bigramas mais frequentes no texto utilizando
3
4 Gera os bigramas de :attr:`text` utilzando a classe
5 :class:`nltk.probability.FreqDist` no resultado da função
6 :func:`nltk.util.ngrams`.
7
8 :param n: número de bigramas a retornar
9 :type n: int
10 :return: iterador de tupla (palavra, frequência)
11 """
12 bigrams = nltk.ngrams([_ for _ in self.sents_clean for _ in _], 2)
13 freq = nltk.probability.FreqDist(bigrams)
14 for bigram, top in freq.most_common(n):
15 yield bigram, top
Contar o número de sentenças no texto
Implementado em textanalysis.classactivity.News.sents_len
1 @property
2 def sents_len(self) -> int:
3 """Quantidade de sentenças
4
5 Retorna o tamanho da lista de sentenças gerado por :attr:`sents`.
6
7 :return: quantidade de sentenças
8 """
9 return sum([1 for _ in self.sents])
Realizar a classificação gramatical (POS e NER)
Implementado em textanalysis.classactivity.News.sents_pos
1 @property
2 def sents_pos(self) -> Iterator[list[tuple[str, str]]]:
3 """Gera a lista de sentenças com tokens POS
4
5 Realiza o tagueamento gramatical das sentenças retornadas por
6 :attr:`sents` utilizando a função :func:`nltk.tag.pos_tag_sents`.
7
8 :return: iterador de lista de tokens POS
9 """
10 for sent in nltk.tag.pos_tag_sents(self.sents):
11 yield sent
1 @property
2 def sents_ner(self) -> Iterator[nltk.tree.Tree]:
3 """Gera a lista de sentenças com tokens NER
4
5 Realiza o reconhecimento de entidades nomeadas (NER) das sentenças
6 retornadas por :attr:`sents` utilizando a função
7 :func:`nltk.chunk.ne_chunk_sents`.
8
9 :return: iterador de lista de tokens NER
10 """
11 for sent in nltk.chunk.ne_chunk_sents(self.sents_pos):
12 yield sent