1
resposta

criando uma função para visualizar a frequência de palavras

import pandas as pd
import nltk
import unidecode
import matplotlib.pyplot as plt
import seaborn as sns
from nltk import tokenize

nltk.download('stopwords')

# 1. Carregar dados
url = 'https://raw.githubusercontent.com/alura-cursos/nlp_analise_sentimento/refs/heads/main/Dados/dataset_avaliacoes.csv'
df = pd.read_csv(url)

# 2. Pré-processamento básico (tratamento_4)
stopwords = nltk.corpus.stopwords.words('portuguese')
stopwords_sem_acento = [unidecode.unidecode(p) for p in stopwords]
token_pontuacao = tokenize.WordPunctTokenizer()

trat4 = []
for opiniao in df["avaliacao"]:
    tokens = token_pontuacao.tokenize(opiniao)
    frase = [p.lower() for p in tokens if p.isalpha()]
    frase = [unidecode.unidecode(p) for p in frase]
    frase = [p for p in frase if p not in stopwords_sem_acento]
    trat4.append(" ".join(frase))

df["tratamento_4"] = trat4

# 3. Função para gráfico de frequência
def grafico_frequencia(texto, coluna_texto, quantidade):
    # juntar textos
    todas_palavras = ' '.join(texto[coluna_texto])

    # tokenizar e contar frequência
    token_espaco = tokenize.WhitespaceTokenizer()
    tokens = token_espaco.tokenize(todas_palavras)
    frequencia = nltk.FreqDist(tokens)

    # criar DataFrame
    df_freq = pd.DataFrame({
        "Palavra": list(frequencia.keys()),
        "Frequência": list(frequencia.values())
    })

    # selecionar mais frequentes
    df_freq = df_freq.nlargest(quantidade, "Frequência")

    # plotar gráfico
    plt.figure(figsize=(12,5))
    sns.barplot(data=df_freq, x="Palavra", y="Frequência", color="gray")
    plt.xticks(rotation=45)
    plt.title("Palavras mais frequentes")
    plt.show()

# 4. Executar função
grafico_frequencia(df, "tratamento_4", 20)
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso do NLTK para realizar tokenização e remoção de stopwords com Python, utilizou muito bem o Seaborn para gerar gráficos de frequência e ainda compreendeu a importância do pré-processamento de texto para análises mais consistentes em processamento de linguagem natural.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!