Como criar incríveis WordClouds usando apenas Python!
Olá , bem vind@s a mais um artigo meu! Hoje quero ensiná-los a como criar WordClouds usando python!
Este artigo é um espécie de completo a outro artigo escrito por mim mesmo: “Criando um modelo de NLP do zero com python” , você pode acessá-lo clicando aqui.
O que você vai encontrar aqui?
- O que são WordClouds?;
- Por que usar WordClouds?;
- Criando um WordCloud do zero a partir de dados textuais;
O que são WordClouds?
É interessante começa definindo o que elas são. Como o próprio nome já sugere , WordClouds são basicamente nuvens de palavras! Nela podemos criar uma imagem contendo palavras que , de acordo com o tamanho , são entendidas como muito presentes em um conjunto de dados textuais.
Veja alguns exemplos:
fontes : (imagem 1) | (Imagem 2)
Por que usar WordClouds ?
WordCloud trás consigo uma ampla gama de usabilidades , dependendo de cada ocasião , claro.
Além de ser uma forma diferente de visualização de dados textuais , ela fica bem bonita na mão de bons designs.
A partir de WordClouds podemos encontrar insights de termos muito usados em determinadas circunstâncias e ocasiões!
Imagine poder visualizar uma WordCloud que destaque as principais reclamações de seus clientes e partir disso melhorar seu atendimento?
Criando um WordCloud do zero a partir de dados textuais
Chegou a hora de começar a trabalhar!
Como dito anteriormente , este é um artigo complementar a outro que eu escrevi , mas não há obrigatoriedade de você lê-lo antes de vim para esse. Fique a vontade para acessar clicando aqui.
A primeira coisa que devemos fazer é importar as bibliotecas que serão usadas, a principal delas é a wordcloud . Além dela usaremos as bibliotecas do matplotlib e PIL para visualizar nossa imagem.
from PIL import Imagefrom wordcloud import WordCloud, STOPWORDS, ImageColorGeneratorimport matplotlib.pyplot as plt
Com nossas bibliotecas importadas , vamos iniciar nossa WordCloud.
A primeira coisa que temos que manter em mente é que para criar essa temos de juntar nossos textos. Para isso vamos usar o seguinte comando:
text = df_baixas["Review Text"]text_join = " ".join(s for s in text)
Na variável “text” temos um dataframe pandas que contêm todos os nossos dados textuais, com o método “join” estamos unindo todos os textos com um espaço entre eles e armazenando na variável “text_join”.
Agora vamos para o próximo passo, criar a WordCloud em sí:
# Criando a WordCloud:
wordcloud = WordCloud(background_color="white",width=1600 ,height=800,max_words=200).generate(text_join)# mostrar a imagem finalfig, ax = plt.subplots(figsize=(16,10))ax.imshow(wordcloud, interpolation='bilinear')ax.set_axis_off()
Com o método WordCloud podemos fazer diversos experimentos , aumentar ou diminuir o máximo de palavras mostradas com o parâmetro “max_words” , assim como alterar o background com o parâmetro “background”. Com o atributo “generate” criamos a WordCloud em si e passamos o nosso conjunto de textos.
O que acha de personalizar um pouco mais nossa WordCloud? Vamos adicionar uma “máscara” a nossa imagem , mudando a forma dela:
my_mask_path = np.array(Image.open(path_mask))# Criando a WordCloud com máscara:
wordcloud = WordCloud(background_color="white",width=1600, height=800,max_words=200 , mask = my_mask_path).generate(text)# mostrar a imagem final:fig, ax = plt.subplots(figsize=(12,8))ax.imshow(wordcloud, interpolation='bilinear')ax.set_axis_off()
Para este caso apenas adicionei o parâmetro “mask” e passei o caminho da imagem e com isso obtivemos o seguinte resultado:
Podemos notar que a forma da nossa WordCloud mudou ligeiramente! Agora , caso não tenha percebido , usei a imagem de uma mulher de perfil, mais precisamente esta imagem aqui:
Perceba que ao criar essa “mask” você deve ter em mente que na região com a cor preta será onde teremos nossas palavras , já a região na cor branca não será mostrado nada. Apensas tome estes cuidados ao criar a máscara.
Caso tenha surgido alguma dúvida , fique a vontade para visualizar toda as linhas de código no GoogleColaboratory clicando aqui , lá você terá todos os códigos usados aqui e mais. Caso persista alguma dúvida , deixe aqui seu comentário que o mais rapidamente irei responder!