En este artículo, discutiremos cómo crear nubes de palabras de cualquier forma en Python.
El término WordCloud se refiere a una técnica de visualización de datos para mostrar datos de texto en los que el tamaño de cada palabra indica su frecuencia o relevancia. Para crear una nube de palabras de cualquier forma, use los paquetes Matplotlib , nube de palabras, NumPy y PIL de Python .
Implementación paso a paso
Echemos un vistazo a la implementación paso a paso:
Paso 1: Instale los siguientes módulos como se indica a continuación:
pip install matplotlib pip install wordcloud
Paso 2: importe los siguientes módulos como se indica a continuación:
import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS import numpy as np from PIL import Image
Paso 3: Siga los pasos a continuación-
- Proporcione la ruta completa al archivo de texto que desea utilizar.
- En modo lectura, abra el archivo de texto.
- Finalmente, codifíquelo y léalo.
- En este artículo se utilizará el siguiente archivo de texto: Texto
text = open(r'C:\Users\Dell\Desktop\Wordcloud\Text.txt', mode='r', encoding='utf-8').read()
Paso 4: Siga los pasos a continuación-
- Proporcione la ruta de imagen completa que usaremos para obtener nuestra salida en la misma forma.
- Luego, usando la función image.open, abra la imagen.
- Después de eso, usa NumPy para crear la array de la imagen.
- La siguiente imagen se utilizará en este artículo para la forma deseada
mask = np.array(Image.open(r'C:\Users\Dell|Downloads\Garbage\GFG.png'))
Paso 5: Cree una nube de palabras integrando una palabra vacía, una máscara, un color de fondo, el número máximo de palabras en la nube de palabras, la altura de la máscara y el ancho de la máscara.
- stopwords- Se utiliza para evitar caracteres innecesarios como ‘./-[{)*&^%~@!#%^&].
- máscara- La máscara es la forma a la que convertiremos nuestra nube de palabras.
- background_color : podemos usar el color de fondo que queramos, como negro, verde, etc.
- max_words- Es el número máximo de palabras que puede contener una nube de palabras.
- max_font- Es el tamaño máximo de fuente.
- El ancho y el alto de la nube de palabras están representados por Ancho y Alto.
wc = WordCloud(stopwords = STOPWORDS, mask = mask, background_color = "white", max_words = 2000, max_font_size = 500, random_state = 42, width = mask.shape[1], height = mask.shape[0])
Paso 6:
- Ahora, usando la función generar, crearemos una nube de palabras a partir del texto provisto.
- Para mostrar datos de imagen, use la función imshow.
- Intentaremos desviarnos de los ejes x e y.
- Finalmente, mostraremos la nube de palabras generada usando la función show definida dentro de matplotlib.
wc.generate(text) plt.imshow(wc, interpolation="None") plt.axis('off') plt.show()
A continuación se muestra la implementación completa.
Python3
# Python3 program to implement # the above approach # Import the following modules # pip install matplotlib import matplotlib.pyplot as plt # pip install wordcloud from wordcloud import WordCloud, STOPWORDS import numpy as np from PIL import Image # Give the whole path of the text file, # open it, read it, and encode it. text = open(r'C:\Users\Dell\Desktop\Wordcloud\Text.txt', mode = 'r', encoding = 'utf-8').read() # The Image shape in which you wanna convert it to. mask = np.array(Image.open( r'C:\Users\Dell\Downloads\Garbage\GFG.png')) # Now inside the WordCloud, provide some functions: # stopwords - For stopping the unuseful words # like [,?/\"] # font_path - provide the font path to which you # wanna convert it to. # max_words - Maximum number of words in the # output image. Also provide height and width # of the mask wc = WordCloud(stopwords = STOPWORDS, mask = mask, background_color = "white", max_words = 2000, max_font_size = 500, random_state = 42, width = mask.shape[1], height = mask.shape[0]) # Finally generate the wordcloud of the given text wc.generate(text) plt.imshow(wc, interpolation = "None") # Off the x and y axis plt.axis('off') # Now show the output cloud plt.show()
Producción:
Cambia tamaño de fuente
Siga los pasos a continuación para cambiar el tamaño de fuente de las palabras en la nube de palabras:
- Primero, seleccione una fuente de esta colección .
- Descargue el archivo de fuente; verá que está en formato .zip.
- Abra el archivo zip y extraiga el archivo TTF u otf de él.
- Ahora solo proporcione la ruta completa del archivo TTF u otf.
path = r'C:\Users\Dell\Downloads\Garbage\Candy Beans.otf'
Código completo:
Python3
# Python3 program to implement # the above approach # Import the following modules # pip install matplotlib import matplotlib.pyplot as plt # pip install wordcloud from wordcloud import WordCloud, STOPWORDS import numpy as np from PIL import Image # Give the whole path of the text file, # open it, read it, and encode it. text = open(r'C:\Users\Dell\Desktop\Wordcloud\Text.txt', mode = 'r', encoding = 'utf-8').read() # For changing the fonts of wordcloud fonts path = r'C:\Users\Dell\Downloads\Garbage\Candy Beans.otf' # The Image shape in which you wanna convert it to. mask = np.array(Image.open( r'C:\Users\Dell\Downloads\Garbage\GFG.png')) # Now inside the WordCloud, provide some functions: # stopwords - For stopping the unuseful words # like [,?/\"] # font_path - provide the font path to which # you wanna convert it to. # max_words - Maximum number of words in # the output image. # Also provide height and width of the mask wc = WordCloud(stopwords = STOPWORDS, font_path = path, mask = mask, background_color = "white", max_words = 2000, max_font_size = 500, random_state = 42, width = mask.shape[1], height = mask.shape[0]) # Finally generate the wordcloud of the given text wc.generate(text) plt.imshow(wc, interpolation = "None") # Off the x and y axis plt.axis('off') # Now show the output cloud plt.show()
Producción:
Cambiar el color de fuente
Siga los pasos a continuación para cambiar el color de fuente del texto en una nube de palabras:
- Crea una función para cambiar el color de la fuente.
- Debido a que el HSL de cada color es único, simplemente pase el HSL y devuélvalo.
Código completo:
Python3
# Python3 program to implement # the above approach # Import the following modules # pip install matplotlib import matplotlib.pyplot as plt # pip install wordcloud from wordcloud import WordCloud, STOPWORDS import numpy as np from PIL import Image # Function for changing the color of the text def one_color_func(word = None, font_size = None, position = None, orientation = None, font_path = None, random_state = None): # This HSL is for the green color h = 99 s = 62 l = 45 return "hsl({}, {}%, {}%)".format(h, s, l) # Give the whole path of the text file, # open it, read it, and encode it. text = open(r'C:\Users\Dell\Desktop\Text.txt', mode = 'r', encoding = 'utf-8').read() # For changing the fonts of wordcloud fonts path = r'C:\Users\Dell\Downloads\Garbage\Candy Beans.otf' # The Image shape in which you wanna convert it to. mask = np.array(Image.open( r'C:\Users\Dell\Downloads\Garbage\GFG!.png')) # Now inside the WordCloud, provide some functions: # stopwords - For stopping the unuseful words # like [,?/\"] # font_path - provide the font path to which # you wanna convert it to. # max_words - Maximum number of words in # the output image. # Also provide height and width of the mask wc = WordCloud(stopwords = STOPWORDS, font_path = path, mask = mask, background_color = "white", max_words = 2000, max_font_size = 500, random_state = 42, width = mask.shape[1], height = mask.shape[0], color_func = one_color_func) # Finally generate the wordcloud of # the given text wc.generate(text) plt.imshow(wc, interpolation = "None") # Off the x and y axis plt.axis('off') # Now show the output cloud plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por gittysatyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA