Nube de palabras en Python | ¿Cómo construir Word Cloud en Python?

Contenidos

Word Clouds resultó ser una técnica de visualización revolucionaria para comprender y determinar patrones y tendencias en evolución. Ya sea para descubrir las agendas políticas de los aspirantes a candidatos electorales de un país o para analizar las opiniones de los clientes sobre el producto lanzado recientemente, se puede obtener una representación visual trazando la nube de palabras.

En las siguientes líneas, aprenderemos sobre las nubes de palabras, sus aplicaciones y cómo construirlas en Python.

Introducción

Word Cloud o Tag Clouds es una técnica de visualización de textos que se utilizan de forma nativa para visualizar las etiquetas o palabras clave de los sitios web. Por lo general, estas palabras clave son palabras individuales que representan el contexto de la página web a partir de la cual se crea la nube de palabras. Estas palabras se agrupan para formar una nube de palabras.

Cada palabra de esta nube tiene un tamaño de fuente y un tono de color variables. Por tanto, esta representación ayuda a determinar palabras destacadas. Un tamaño de fuente más grande de una palabra retrata su prominencia más en relación con otras palabras en el grupo. Word Cloud se puede construir en diferentes formas y tamaños según la visión de los creadores. El número de palabras juega un papel importante al crear una nube de palabras. Una mayor cantidad de palabras no siempre significa una mejor nube de palabras, ya que se vuelve desordenada y difícil de leer. Una nube de palabras siempre debe ser semánticamente significativa y debe representar para qué está destinada.

Aunque, hay diferentes formas en las que se pueden crear nubes de palabras, pero el tipo más utilizado es mediante el uso de Frecuencia de palabras en nuestro corpus. Y así, crearemos nuestra nube de palabras usando el tipo de frecuencia.

33978word-cloud-679937_1280-3645359

Historia

La historia de Word Clouds se remonta a 1976 cuando un psicólogo social estadounidense Stanley Milgram realizó un estudio psicológico y preguntó a la gente sobre los lugares de París. La idea principal era construir un mapa mental de París cuando se preguntaba a la gente sobre la ciudad. Analizó y dibujó un mapa basado en las respuestas recibidas de las personas y mantuvo un tamaño de fuente más grande para las respuestas recibidas con frecuencia.

Las nubes de etiquetas se convirtieron en el centro de atención cuando Flickr, un sitio web para compartir fotos, en 2006 comenzó a usar las nubes de etiquetas para la exploración del sitio. A finales de la primera década del siglo XXI, Word Cloud se convirtió en una herramienta muy popular entre los mineros de texto.

Pero, la tendencia de Tag Cloud sigue vacilando y, finalmente, comenzó a disminuir con el tiempo. Y así, las nubes de palabras se están utilizando popularmente en el mundo actual.

63368word20vs20tag20trend-4852295
Word Cloud vs Tag Cloud Trend de Google Trends (Fuente – Computadora personal)

Aplicaciones

Word Cloud encuentra su camino en numerosas aplicaciones entre varios dominios. Algunas de las aplicaciones populares de Word Clouds son:

1. Comentarios del cliente

Las partes interesadas utilizan ampliamente las nubes de palabras en las industrias para analizar los comentarios recibidos de los usuarios finales. Suponga que una empresa lanza un producto y desea conocer los comentarios de los clientes. Digamos que la empresa recibió 1000 comentarios de diferentes usuarios. Sería muy difícil para las partes interesadas leer y tomar nota de todos los comentarios. Por lo tanto, Word Cloud jugaría un papel clave para obtener las mejores palabras clave entre los comentarios. Esto ayudaría a la empresa a determinar si la retroalimentación es positiva o negativa y sus respectivas áreas de mejora. Por ejemplo, una empresa ‘ABC’ lanzó un nuevo televisor y, en función de los comentarios recibidos, la empresa puede realizar cambios en consecuencia en la próxima serie de televisores.

2. Agenda política de los candidatos

A menudo, los candidatos a las elecciones mantienen una lista de verificación de la agenda para hablar durante las campañas. Por lo tanto, el equipo de apoyo del candidato analizaría el discurso del candidato y crearía una nube de palabras para seleccionar palabras para el próximo discurso para mantener un equilibrio en la lista de verificación de la agenda. Los analistas a menudo crean una nube de palabras de los discursos de los candidatos de diferentes partidos para analizar y producir resultados para que la gente sepa qué candidato se está enfocando en qué áreas de improvisación. Por ejemplo, en las elecciones estadounidenses de 2021, los analistas pudieron acceder fácilmente a la palabra Nubes de los discursos de los candidatos del Partido Republicano y del Partido Demócrata para que la gente decida.

3. Temas de actualidad

Las agencias de publicidad a menudo necesitarían saber cuáles son las tendencias para crear el próximo anuncio en contexto con los temas de tendencia. Por ejemplo, Amul crea un anuncio creativo basado en el tema o tendencia actual.

Cómo crear una nube de palabras en Python

Se puede crear una nube de palabras en Python en los siguientes pasos:

1. Importe las bibliotecas necesarias

Importe las siguientes bibliotecas que son necesarias para crear una nube de palabras

import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud

2. Seleccionar el conjunto de datos

Para este ejemplo, estamos usando Popular Dataset Los mejores juegos en Google Play Store de Kaggle.

Descargue el conjunto de datos y guárdelo en su directorio de trabajo actual para una implementación de código sin problemas.

Importe el conjunto de datos en una variable de su elección. Aquí nuestros datos se importan a variable df.

No es necesario que el texto de la nube de palabras sea de un conjunto de datos. Para obtener un texto significativo con menos esfuerzos, usamos el conjunto de datos para nuestro ejemplo.

df = pd.read_csv("android-games.csv")

3. Seleccionar el texto y la cantidad de texto para Word Cloud

Seleccionar texto para crear una nube de palabras es una tarea importante. Se deben verificar varios factores para la selección de Texto, tales como:

  • ¿Tenemos una declaración del problema?
  • ¿Tiene significado el texto seleccionado?
  • ¿Podemos concluir la nube de palabras creada?
  • ¿Nuestro texto tiene una cantidad adecuada de texto?

Word Cloud requiere texto en una cantidad adecuada. Una gran cantidad de palabras dificultaría la apariencia visual de Word Cloud y una menor cantidad de palabras no tendría sentido.

Podemos usar el método .head () de DataFrame para verificar las Columnas y el tipo de datos presentes en ellas. En nuestro ejemplo, hemos tomado la columna categoría como texto.

Dado que la categoría de columnas tiene un prefijo de JUEGO antes de cada juego de categoría, nuestra nube de palabras terminaría creando JUEGO ya que la palabra más frecuente y Word Cloud no tendrá significado en int. Por lo tanto, realizaremos un filtrado mientras agregamos el categoría columna al Texto.

4. Compruebe los valores NULL

Es necesario verificar los valores nulos en nuestro conjunto de datos, ya que al crear la nube de palabras, no aceptaría texto con yaya valores.

df.isna().sum()

Si nuestro conjunto de datos tenía valores de NaN, debemos tratar los valores perdidos en consecuencia. Afortunadamente, este conjunto de datos no tiene valores de NaN, por lo que podemos pasar al siguiente paso.

Si hay muy pocos valores de NaN, siempre es aconsejable eliminar esas filas, ya que no afectaría a Word Cloud en mayor medida.

4. Agregar texto a una variable

Según los parámetros del paso 3, agregue los datos de texto a una variable de su elección. Aquí, estamos agregando los datos a la variable texto.

text = " ".join(cat.split()[1] for cat in df.category)

Dado que necesitamos filtrar el JUEGO de la categoría, hemos dividido el valor de cada fila y hemos tomado el segundo elemento, es decir, el nombre de la categoría del categoría columna.

5. Creando la nube de palabras

Cree un objeto de la clase WordCloud con el nombre de su elección y llame al método generate (). Aquí hemos creado el objeto con el nombre word_cloud.

WordCloud () toma varios argumentos según la necesidad. Aquí estamos agregando dos argumentos:

1. colocaciones = Falso, que ignorará las palabras de colocación del texto

2. background_color = ‘Blanco’, que hará que las palabras se vean más claras

El método .generate () toma un argumento de la texto creamos. En nuestro caso, daremos la texto variable como argumento para .generate ().

word_cloud = WordCloud(collocations = False, background_color="white").generate(text)

6. Trazando la nube de palabras

Utilizando el .imshow () método de matplotlib.pyplot para mostrar la nube de palabras como una imagen.

.imshow () toma varios argumentos, pero en nuestro ejemplo, tomamos dos argumentos:

1. nube_de_palabras creado en el paso 5

2. interpolación = ‘bilineal’

Dado que estamos creando una imagen con .imshow (), el remuestreo de la imagen se realiza porque el tamaño de píxel de la imagen y la resolución de la pantalla no coinciden. Este remuestreo se controla con el interpolación argumento para producir imágenes más suaves o nítidas según nuestra necesidad. Hay varios tipos de interpolación disponibles, como gaussiana, cuádrica, bicúbica. Aquí estamos usando bilineal interpolación.

Trazando la imagen con el eje desactivado, ya que no queremos marcas de eje en nuestra imagen.

plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

7. El código completo

#Importing Libraries
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from wordcloud import WordCloud
#Importing Dataset
df = pd.read_csv("android-games.csv")
#Checking the Data
df.head()
#Checking for NaN values
df.isna().sum()
#Removing NaN Values
#df.dropna(inplace = True)
#Creating the text variable
text = " ".join(cat.split()[1] for cat in df.category)
# Creating word_cloud with text as argument in .generate() method
word_cloud = WordCloud(collocations = False, background_color="white").generate(text)
# Display the generated Word Cloud
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
711281-8602837

Nube de palabras de categoría columna (Fuente de imagen – Computadora personal) * El tamaño de la imagen adjunta es independiente del tamaño de la imagen de salida

Del mismo modo, creemos Word Cloud para título columna del conjunto de datos importado.

#Importing Libraries

import pandas as pd

import matplotlib.pyplot as plt

%matplotlib inline

from wordcloud import WordCloud

#Importing Dataset

df = pd.read_csv("1.csv")

#Checking the Data

df.head()

#Creating the text variable

text2 = " ".join(title for title in df.title)

# Creating word_cloud with text as argument in .generate() method

word_cloud2 = WordCloud(collocations = False, background_color="white").generate(text2)

# Display the generated Word Cloud

plt.imshow(word_cloud2, interpolation='bilinear')

plt.axis("off")

plt.show()
225102-9751593

Nube de palabras de la columna de título (Fuente de la imagen – Computadora personal) * El tamaño de la imagen adjunta es independiente del tamaño de la imagen de salida

Conclusiones

Las nubes de palabras creadas anteriormente se pueden personalizar aún más agregando funcionalidades avanzadas como enmascaramiento, contorno y ajuste del tamaño de la nube.

Las nubes de palabras se pueden crear no solo con Python, sino también con otras herramientas como Microsoft Word, herramientas de inteligencia empresarial como Tableau. Actualmente, hay numerosas herramientas disponibles en Internet que crean una nube de palabras con solo proporcionar el texto de entrada. Dado que la tendencia de la nube de palabras está aumentando, el número de formas y herramientas también está aumentando.

Word Cloud puede ser engañoso a veces. En algunos escenarios, puede suceder que muchas palabras en nuestra nube de palabras tengan el mismo tamaño, por lo que puede resultar difícil decir cuál de ellas es más frecuente que la otra. Podemos utilizar técnicas más avanzadas para contrarrestar el problema.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.