Crea tu propia nube de palabras (Word Cloud)
Nubes de palabras usando python
Las nubes de palabras (también conocidas como nubes de texto o nubes de etiquetas o en inglés word clouds) funcionan de manera simple: cuanto más aparece una palabra específica en una fuente de datos textuales (como un discurso, publicación de blog o base de datos), más grande y audaz aparece en la nube.
[wp_ad_camp_1]
Afortunadamente, ya existe un paquete de Python para generar nubes de palabras. El paquete, llamado word_cloud, fue desarrollado por Andreas Mueller. Puede obtener más información sobre el paquete siguiendo este enlace.
Usemos este paquete para aprender cómo generar una nube de palabras para un documento de texto dado.
Primero, instalemos el paquete.
Instalando el paquete
# instalar wordcloud !conda install -c conda-forge wordcloud==1.4.1 --yes # importar paquete y el set stopwords from wordcloud import WordCloud, STOPWORDS print ('Wordcloud está instalado e importado!')
Las nubes de palabras se usan comúnmente para realizar análisis de alto nivel y visualización de datos de texto. En consecuencia, trabajemos con un ejemplo que implique el análisis de datos de texto. Intentemos analizar una novela corta escrita por Lewis Carroll titulada Alice's Adventures in Wonderland. Avancemos y descarguemos un archivo .txt de la novela. Puedes descargarlo clickando aquí
[wp_ad_camp_2]
# descargar archivo y guardar como alice_novel.txt !wget --quiet https://gist.github.com/89b87cfdbab308e62748748c66d9ec92 # abrir el archivo y guardarlo en la variable alice_novel alice_novel = open('alice_novel.txt', 'r', encoding='latin-1').read() print ('Archivo descargado y guardado!')
Stopwords
A continuación, usemos stopwords que importamos de word_cloud. Usamos el conjunto de funciones para eliminar stopwords redundantes.
[wp_ad_camp_3]
stopwords = set(STOPWORDS)
Cree un objeto de nube de palabras y genere una nube de palabras. Para simplificar, generemos una nube de palabras utilizando solo las primeras 2000 palabras de la novela.
alice_wc = WordCloud( background_color='white', max_words=274058, stopwords=stopwords ) # generate the word cloud alice_wc.generate(alice_novel)
Graficando la nube
¡Increíble! Ahora que se creó la nube de palabras, visualicémosla.
# graficar la nube de palabras plt.imshow(alice_wc, interpolation='bilinear') plt.axis('off') plt.show()
¡Interesante! Entonces, en las primeras 2000 palabras de la novela, las palabras más comunes son Alice, said, little, Queen, y así sucesivamente. Cambiemos el tamaño de la nube para que podamos ver las palabras menos frecuentes un poco mejor.
[wp_ad_camp_4]
fig = plt.figure() fig.set_figwidth(14) # set width fig.set_figheight(18) # set height # graficar la nube plt.imshow(alice_wc, interpolation='bilinear') plt.axis('off') plt.show()
Limpiando palabras no importantes
¡Mucho mejor! Sin embargo, said no es realmente una palabra importante o informativa. Añádalo a nuestras stopwords y vuelva a generar la nube.
stopwords.add('said') stopwords.add('come') stopwords.add('went') stopwords.add('way') # regenerar la nube alice_wc.generate(alice_novel) # graficar la nube fig = plt.figure() fig.set_figwidth(14) # set width fig.set_figheight(18) # set height plt.imshow(alice_wc, interpolation='bilinear') plt.axis('off') plt.savefig("resultado2.png") plt.show()
Usando máscaras
¡Excelente! ¡Esto se ve realmente interesante! Otra cosa interesante que puede implementar con el paquete word_cloud es superponer las palabras en una máscara de cualquier forma. Usemos una máscara de Alice y su conejo. Ya hemos creado la máscara para usted, así que vamos a descargarla y llamarla alice_mask.png.
[wp_ad_camp_5]
# descargar imagen !wget --quiet https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Images/alice_mask.png # guardar máscara como alice_mask alice_mask = np.array(Image.open('alice_mask.png')) print('Imagen descargada y guardada!')
Para mostrar la imagen
fig = plt.figure() fig.set_figwidth(14) # set width fig.set_figheight(18) # set height plt.imshow(alice_mask, cmap=plt.cm.GnBu, interpolation='bilinear') plt.axis('off') plt.show()
Dar forma a la nube de palabras según la máscara es sencillo con el paquete word_cloud. Para simplificar, continuaremos usando las primeras 2000 palabras de la novela.
# iniciar un objeto de nube de palabras alice_wc = WordCloud(background_color='WHITE', max_words=274058, mask=alice_mask, stopwords=stopwords) # generar la nube de palabras alice_wc.generate(alice_novel) # graficar la nube de palabras fig = plt.figure() fig.set_figwidth(14) # set width fig.set_figheight(18) # set height plt.imshow(alice_wc, interpolation='bilinear') plt.axis('off') plt.savefig("resultado.png") plt.show()
Realmente muy llamativo.
Te invito a que lo pruebes con un libro que te guste y no solo analizando las primeras 2000 palabras sino todo el texto completo, importante que el formato esté en .txt
En la caja de comentarios espero ver los enlaces a sus nubes de palabras. =D
-
Very well done and written mmy friend.
I've just started blogging very recently and realized that lot of writers merely rewoek old ideas but add very little of value.
It's terrific to see a useul article of some true value to myself and your other
followers.
It's on my list of details I need to replicate as a new blogger.
Reader engagement and material value are king.Some fantastic ideas; you'veunquestionably made it on mmy llist of people tto watch!
Continue the exceloent work!
Congratulations,
Shaine
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.
Muito bom suas explicações Antares! Estou na caminhada
para chegar no ouro ainda esse ano. Caminho tá bem longe pois não
sei fazer muito wager num dia k k k