Search
Close this search box.
Aprenda a criar nuvens de palavras com Python
Nuvens de palavras (word clouds)

Posts Relacionados:

Uma nuvem de palavras (word cloud) é uma representação visual elegante de textos que pode fazer toda a diferença em apresentações, teses e artigos.

Receba nossa newsletter

O que são nuvens de palavras?

Nuvens de palavras, também conhecidas como nuvens de tags ou nuvens de texto, são representações visuais de dados de texto. Elas destacam palavras que ocorrem com frequência alta, exibindo-as em um tamanho de fonte maior. Palavras menos frequentes aparecem com fontes de menor tamanho. Isso cria uma maneira visualmente interessante de identificar os termos mais proeminentes em um corpus textual. Além do tamanho das fontes, uma nuvem de palavras frequentemente usa cores para adicionar variedade ou representar categorias no texto.

Nuvens de palavras com Python: bibliotecas

A forma mais fácil de criar nuvens de palavras com Python é com o auxílio da biblioteca WordCloud. Ela requer também Matplotlib. Ambas as bibliotecas podem ser instaladas com pip:

				
					pip install wordcloud matplotlib
				
			

Adicionalmente, você pode precisar de bibliotecas de processamento de linguagem natural para realizar o pré-processamento de textos. Embora essa etapa não seja essencial em todos os casos, em muitos contextos ela é necessária para aumentar a qualidade da representação visual. Para esses casos, bibliotecas como NLTK e spaCy são as ferramentas mais indicadas. Leia mais sobre elas aqui e aqui.

Nuvens de palavras em código

A criação de nuvens de palavras é um processo simples. Primeiro, importamos os pacotes necessários em um código Python.

				
					from wordcloud import WordCloud
import matplotlib.pyplot as plt
				
			

Em seguida, realizamos a preparação do texto. Isso pode envolver a leitura de texto de um arquivo, a limpeza e o pré-processamento do texto (por exemplo, a remoção de palavras de parada) ou o simples uso de uma string que contenha o texto. Usaremos essa última opção. Portanto, dando sequência ao nosso código, Python, definimos um texto:

				
					texto = """
O Rio Grande do Sul vive uma de suas piores tragédias climáticas. A chuva que persiste há pelo menos uma semana colocou o estado inteiro em situação de calamidade e deve continuar pelos próximos dias, causando mais estragos. O número de mortos já chega a 32 e dezenas de pessoas estão desaparecidas em meio às cheias.
➡️ Os meteorologistas explicam que a catástrofe é resultado de pelo menos três fenômenos que afetam a região e foram agravados pelas mudanças no clima. E a tendência é de piora por conta da previsão de mais chuva.
A condição começou em 26 de abril, quando o Instituto Nacional de Meteorologia (Inmet), ligado ao governo federal, emitiu um alerta de tempestades para o estado. Naquele dia, a previsão ainda era de chuvas em algumas regiões do estado. Mas o cenário foi se agravando ao longo dos dias.
Segundo os especialistas, a calamidade é efeito da soma de alguns fatores:
Havia um cavado, que é uma corrente intensa de vento, agindo sobre a região, o que fazia com que o tempo ficasse instável;
Isso se somou a um corredor de umidade vindo da Amazônia, que aumentou a força da chuva;
O cenário foi agravado por um bloqueio atmosférico, reflexo da onda de calor, que fez com que o centro do país ficasse seco e quente, deixando a chuva concentrada nos extremos.
O que o meteorologista explica é que o Sul do país tem condições que favorecem tempestades nessa época do ano, mas o que seria um evento isolado se transforma em uma catástrofe.
“O oceano mais quente, como estamos vendo agora, faz com que seja gerada mais energia para a formação das chuvas. Com isso, elas chegam nesses níveis, que nunca vimos antes. A mudança no padrão do clima interfere na atmosfera e muda o ciclo dos fenômenos que aconteciam, deixando-os mais intensos”, afirma Luengo.
"""
				
			

Classe Wordcloud

Depois, usamos a classe WordCloud e o método generate() para criar nossa nuvem.

				
					wordcloud = WordCloud(max_font_size=40, max_words=700, background_color="white", 
                      colormap='jet',
                      collocations=True, scale=5).generate(texto)
				
			

Após esse trecho, a função to_file() é utilizada para salvar a nuvem gerada como figura.

				
					wordcloud.to_file("wordcloud.png")
				
			

Abaixo, veja a nuvem obtida. Ela tem uma randomicidade basal, portanto, cada vez em que ela é gerada, seu resultado é diferente.

wordcloud Python

Como mostrado no exemplo de código acima, você pode personalizar vários parâmetros da nuvem de palavras, como variação de tamanho de fonte, esquema de cores e cor de plano de fundo. Veja outro exemplo onde especificamos o tamanho da imagem em pixeis (width para largura e height para altura) e definimos um esquema de cores (colormap) para as palavras e uma cor diferente para o plano de fundo:

				
					
wordcloud = WordCloud(width = 500, height = 500, background_color='#40E0D0', colormap="Blues",  random_state=10).generate(texto)
wordcloud.to_file("wordcloud_ex2.png")
				
			
Python wordcloud

Para saber mais sobre os esquemas de cores disponíveis, consulte a documentação do Matplotlib.

Nuvem de palavras com formas especiais

Podemos criar nuvens de palavras com formas variadas para enfatizar a mensagem que desejamos transmitir. Para isso, precisamos usar uma máscara, ou seja, uma imagem com a forma que a nuvem de palavras terá. Também precisamos de duas bibliotecas adicionais: NumPy e Pillow. O comando para instalá-las com pip é:

				
					pip install pillow numpy
				
			

Para definir uma máscara, use preferencialmente uma imagem em branco e preto como a mostrada abaixo. Evidentemente, selecione a imagem com a forma que deseja.

wordcloud mask

Num novo código Python, importamos os pacotes e abrimos a imagem que será usada como máscara. A máscara precisa ser aberta com Pillow e convertida em um NumPy array.

				
					from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image

img = Image.open('MINHA_IMAGEM.png') # insira o local e nome corretos da sua imagem aqui
img = np.array(img)

				
			

Em seguida, usamos o comando where do NumPy para converter os pixeis para a intensidade apropriada:

				
					
transformed_img = np.where(img[:,:,:]==0, 0, 255)
				
			

Nesse trecho acima, forçamos os pixeis da imagem a adotarem dois valores (0 ou 255). Depois, criamos a nuvem de palavras como feito anteriormente, mas especificando um novo parâmetro mask. Note que estamos usando a mesma string texto usada do exemplo anterior (linha 3 abaixo).

				
					wordcloud = WordCloud(max_font_size=40, max_words=700, background_color="black", 
                      colormap='jet',
                      collocations=True, scale=1, mask=transformed_img).generate(texto)
wordcloud.to_file("wordcloud_mask.png") # salva imagem, atualize o nome conforme sua necessidade

				
			

Executando esse código, obtemos a nuvem de palavras no formado da máscara usada. Veja o resultado:

wordcloud Python

Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.

Imagem com IA Generativa – Dia 107

IA generativa img 107

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial