Não basta apenas gerar uma nuvem de palavras, ela precisa ser bonita, organizada e visualmente atraente para quem irá analisá-la. Nesse sentido, Python combinado com Stylecloud é, na minha opinião, a melhor dupla para criar word clouds impactantes.
Gerar nuvens de palavras é apenas uma das possibilidades do universo da análise de texto. Neste exemplo, trabalharemos com respostas de uma pesquisa NPS, aquela famosa escala de 0 a 10 que mede a satisfação e lealdade dos clientes.

Base de dados: Respostas de pesquisa NPS
Temos a seguinte base de dados:

Basicamente, nosso foco será a coluna Comentário. Usaremos Python e algumas bibliotecas para ler o arquivo .csv, manipular o texto, remover stopwords (palavras que não tem valor na análise, como “o”, “a”, “ou”, etc).
DICA: Existe a possibilidade de ler esses dados diretamente no Google Sheets, mas baixaremos o arquivo .csv e enviaremos para os arquivos do Google Colab.

Ambiente de execução
Como dito acima, para esse passo a passo, vamos utilizar o Google Colab. Com isso, não precisaremos instalar nada em nossa máquina.
Instalando as dependências
O primeiro passo é reservar uma célula para importar e instalar as dependências. A única que necessita de instalação será o stylecloud e unidecode, todas as demais já estão disponíveis para importação direta.
!pip install stylecloud unidecode &> /dev/null
import pandas as pd
import re
from unidecode import unidecode
import stylecloudRelembrando o papel de cada dependência:
- Pandas: será o responsável por ler o .csv e manipular os dados do arquivo.
- RE (Regex): Expressões regulares. Usaremos para limpar o texto.
- Unidecode: Também será usado para limpar o texto, trocando palavras com acento, etc.
- Stylecloud: A biblioteca milagrosa que fará o trabalho final, gerar nossas nuvens de palavras.
Removendo stopwords PT-BR
Como havia comentado, stopwords são palavras que não vão agregar na sua análise. Isso vai depender do contexto de negócio, mas algumas palavras podem fazer sentido em um ambiente e em outros não.
Por isso, cheque se listas prontas de stopwords em português disponíveis na internet te atendem. Se não, construa uma própria. No meu GitHub Gist, tem uma lista de palavras que você poderia considerar utilizar:
Para esse exemplo, criaremos uma pequena lista diretamente no nosso código.
# Stopwords em português
STOPWORDS_PT = set([
"de","da","do","dos","das","em","no","na","nos","nas","a","o","e","que",
"um","uma","uns","umas","para","por","com","como","mais","muito","ou","se",
"nao","meu","minha","meus","minhas","seu","sua","seus","suas","ao",
"as","pelo","pela","pelos","pelas","entre","ate","apos","sob","sobre",
"sem","todas","ser", "so", "foi", "mas"
])Outras limpezas no texto
Além da remoção de stopwords, vamos criar uma função para utilizar o Unidecode. Essa função vai receber um texto e vai devolver ele processado e em letras minúsculas. Esse último ponto também é muito importante, visto que “Mas” pode ser diferente de “mas” na hora de lidar com dados.
def clean_text(text):
"""Converte para minúsculas e remove acentos"""
return unidecode(str(text).lower())Como já definimos a nossa lista de stopwords, hora de criar uma função para aplicá-la:
def remove_stopwords(text):
"""Remove stopwords do texto"""
words = re.findall(r'\w+', text)
filtered = [w for w in words if w not in STOPWORDS_PT]
return " ".join(filtered)Lendo os dados e fazendo a limpeza
Já podemos fazer a leitura dos dados com o Pandas e aplicar a função clean_text. Para isso:
# Leitura do CSV e limpeza
df = pd.read_csv("nps_respostas.csv")
df["Comentario_clean"] = df["Comentário"].apply(clean_text)Função para gerar as word clouds
Depois de criar todas as etapas de limpeza de texto, vamos construir a função que irá aplicar a remoção de stopwords e gerar de fato a imagem com a nuvem de palavras.
def generate_wordcloud(df, nps_condition, icon_name, palette, output_name):
"""Gera a word cloud a partir do dataframe, filtrando por NPS"""
# Seleciona e limpa os comentários
text = " ".join(df[nps_condition]["Comentario_clean"])
text = remove_stopwords(text)
# Gera a word cloud
stylecloud.gen_stylecloud(
text=text,
icon_name=icon_name,
gradient='vertical',
palette=palette,
background_color='white',
output_name=output_name
)
return Image(output_name)Essa função recebe os seguintes parâmetros:
- df: Esse é o nosso dataframe, aqui terá os dados que fizemos a leitura na etapa “Lendo os dados e fazendo a limpeza“.
- nps_condition: Usaremos como filtro para segregar avaliações promotoras, neutras e detratores.
- icon_name: Para não deixar a imagem gerada como uma nuvem padrão, usaremos emojis como máscaras. Isso significa que nossa word cloud para promotores terá uma carinha feliz.
- palette: Define o esquema de cores a ser usado. Leia a documentação do Stylecloud para mais informações: https://jiffyclub.github.io/palettable/
- output_name: Nome do arquivo de imagem a ser gerado.
Gerando as imagens com as word clouds
Depois de todas as etapas, vamos finalmente gerar as nuvens de palavras. Como já temos tudo arquitetado, basta usarmos display para renderizar a imagem no output e chamar a função generate_wordcloud.
Para promotores, pesquisas onde a nota dada foi 9 ou 10, usamos assim:
display(generate_wordcloud(
df, # dataframe do .csv lido pelo Pandas
df["NPS"] >= 9, # filtro de promotores pela nota igual ou maior a 9
icon_name='fas fa-grin-alt', # ícone usado como mask
palette='colorbrewer.sequential.Greens_5', # paleta de cores
output_name='promotores.png' # arquivo de saída
))Neutros:
display(generate_wordcloud(
df,
(df["NPS"] >= 7) & (df["NPS"] <= 8),
icon_name='far fa-meh',
palette='colorbrewer.sequential.YlOrBr_5',
output_name='neutros.png'
))Detratores:
display(generate_wordcloud(
df,
df["NPS"] <= 6,
icon_name='fas fa-angry',
palette='colorbrewer.sequential.Reds_5',
output_name='detratores.png'
))Com isso, teremos imagens como essas:

Acesso ao drive com dados + script .py
Muito massa visualizar comentários dessa forma, não é mesmo? Caso queira treinar ou reutilizar o que mostramos, use o link abaixo para obter acesso ao Drive com os dados de exemplo e o script no Google Colab.
Conclusão
Com stylecloud e Python, transformar dados textuais em insights visuais fica fácil e elegante. Essa técnica ajuda a entender o feedback do cliente de forma rápida, usando cores e emojis para identificar o sentimento. Junto a esse tipo de nuvem de palavras, você pode destacar ainda mais suas apresentações trazendo também um top 5 palavras mais frequentes.
Caso tenha tido alguma dúvida, use nossa seção de comentários aqui abaixo. Participe também do nosso grupo 100% gratuito no WhatsApp.




