[Xiaobai debe ver] Análisis detallado del generador de nube de palabras de Python e implementación de código

inserte la descripción de la imagen aquí

prefacio

Este artículo describe cómo usar Python para escribir código para generar un mapa de nube de palabras. Antes de generar el mapa de nube de palabras, debemos importar algunas bibliotecas necesarias, incluidas numpy, wordcloud, PIL, matplotlib.pyplot y openpyxl. Entre ellos, numpy se usa para el procesamiento de datos, wordcloud se usa para generar nubes de palabras, PIL se usa para el procesamiento de imágenes, matplotlib.pyplot se usa para mostrar imágenes en cuadernos y openpyxl se usa para leer archivos de Excel de frecuencia de palabras. Además, se debe preparar una imagen de fondo como fondo de la nube de palabras.

Obtenemos todos los archivos en la carpeta leyendo la ruta de la carpeta donde se almacena el archivo Excel de frecuencia de palabra, y concatenamos el nombre del archivo con la ruta y lo almacenamos en una lista. Luego, usamos la función Image.open() en la biblioteca PIL para leer la imagen de fondo y convertirla al formato numpy.array.

Procese cada archivo de Excel de frecuencia de palabra secuencialmente usando un bucle. Primero, use la función load_workbook() para cargar el archivo de Excel de frecuencia de palabras y obtenga la hoja de trabajo activa a través de wb.active. Luego, inicialice un wordFreq de diccionario vacío para almacenar cada palabra y su frecuencia correspondiente. Recorriendo las filas de la hoja activa, obtenga las palabras y las frecuencias y guárdelas en el diccionario wordFreq.

Se define el estilo de la nube de palabras y se genera un mapa de nube de palabras de acuerdo con el diccionario wordFreq. La nube de palabras generada se guardará en la carpeta especificada y se mostrará en el cuaderno.

importar bibliotecas requeridas

inserte la descripción de la imagen aquí

import numpy as np  # numpy数据处理库
import wordcloud  # 词云库
from PIL import Image  # 图像处理库,用于读取背景图片
import matplotlib.pyplot as plt  # 图像展示库,以便在notebook中显示图片
from openpyxl import load_workbook  # 读取词频Excel文件
import os  # 获取词频Excel文件路径
  • numpy: Bibliotecas para trabajar con datos.
  • wordcloud: Una biblioteca para generar nubes de palabras.
  • PIL: una biblioteca para el procesamiento de imágenes, utilizada principalmente aquí para leer imágenes de fondo.
  • matplotlib.pyplot: Se utiliza para mostrar imágenes en el cuaderno.
  • openpyxl: Una biblioteca para leer archivos Excel de frecuencia de palabras.
  • os: La ruta utilizada para obtener el archivo Excel de frecuencia de palabra.

Lea la tabla de frecuencia de palabras de Excel guardada en un diccionario

inserte la descripción de la imagen aquí

path = '词频'  # 文件所在文件夹
files = [path + "/" + i for i in os.listdir(path)]  # 获取文件夹下的文件名,并拼接完整路径
maskImage = np.array(Image.open('background.png'))  # 定义词频背景图
  • path: La ruta de la carpeta que almacena la tabla de frecuencia de palabras de Excel.
  • files: utilice la comprensión de listas para obtener todos los nombres de archivo de la carpeta, concatenar los nombres de archivo y las rutas, y almacenarlos en filesla lista.
  • maskImage: utilice las funciones PILde la biblioteca Image.open()para leer una imagen de fondo y convertirla a numpy.arrayun formato.

Ciclo a través de cada archivo de Excel de frecuencia de palabra

inserte la descripción de la imagen aquí

for file in files:
    wb = load_workbook(file)  # 加载词频Excel文件
    ws = wb.active  # 获取活动工作表
    wordFreq = {
    
    }  # 存储单词和对应的频率的字典
    for i in range(2, ws.max_row + 1):
        word = ws["A" + str(i)].value  # 获取单词
        freq = ws["B" + str(i)].value  # 获取频率
        wordFreq[word] = freq  # 将单词和频率存储到字典中
  • Recorra filescada nombre de archivo en la lista y use load_workbook()la función para cargar el archivo Excel de frecuencia de palabra.
  • Use wb.activeobtener hoja activa.
  • Inicialice un diccionario vacío wordFreqpara almacenar cada palabra y su frecuencia correspondiente.
  • Recorra las filas en la hoja activa (desde la fila 2 hasta la última), obtenga la palabra y la frecuencia por ws["A" + str(i)].valuey respectivamente, y guárdelas en un diccionario.ws["B" + str(i)].valuewordFreq

Defina estilos de nubes de palabras y genere gráficos de nubes de palabras

inserte la descripción de la imagen aquí

wc = wordcloud.WordCloud(
    font_path='../PingFangBold.ttf',  # 设置字体
    mask=maskImage,  # 设置背景图
    max_words=500,  # 最多显示词数
    max_font_size=100  # 字号最大值
)

wc.generate_from_frequencies(wordFreq)  # 根据字典生成词云图
wc.to_file("词云图/{}.png".format(file.split("/")[1][:4]))  # 将词云图保存到指定文件夹
plt.imshow(wc)  # 显示词云图
plt.axis('off')  # 关闭坐标轴
plt.show()  # 显示图像
  • Cree un objeto de nube de palabras wcy configure el estilo de la nube de palabras pasándole parámetros, incluida la fuente, la imagen de fondo, el número máximo de palabras mostradas y el tamaño máximo de fuente, etc.
  • El método de uso es generar un mapa de nube de palabras generate_from_frequencies()basado en el diccionario wordFreq.
  • El to_file()método de uso es guardar la imagen de la nube de palabras en la carpeta especificada, y el nombre del archivo se nombra después de los primeros cuatro caracteres del nombre del archivo original.
  • Úselo plt.imshow()para mostrar una nube de palabras.
  • Usar plt.axis('off')ejes fuera de lugar.
  • Usar plt.show()imagen de visualización.

código completo

import numpy as np # numpy数据处理库
import wordcloud # 词云库
from PIL import Image # 图像处理库,用于读取背景图片
import matplotlib.pyplot as plt # 图像展示库,以便在notebook中显示图片
from openpyxl import load_workbook #读取词频Excel文件
import os #获取词频Excel文件路径

#将存好的Excel词频表读取成字典
path='词频'  #文件所在文件夹
files = [path+"/"+i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径
maskImage = np.array(Image.open('background.png')) # 定义词频背景图

for file in files:
    #将词频Excel文件读取为字典
    wb = load_workbook(file)
    ws = wb.active
    wordFreq = {
    
    }
    for i in range(2,ws.max_row+1):
        word = ws["A"+str(i)].value
        freq = ws["B"+str(i)].value
        wordFreq[word] = freq

    #定义词云样式
    wc = wordcloud.WordCloud(
        font_path='../PingFangBold.ttf', # 设置字体
        mask= maskImage, # 设置背景图
        max_words=500, # 最多显示词数
        max_font_size=100) # 字号最大值

    #生成词云图
    wc.generate_from_frequencies(wordFreq) # 从字典生成词云
    #保存图片到指定文件夹
    wc.to_file("词云图/{}.png".format(file.split("/")[1][:4]))
    #在notebook中显示词云图
    plt.imshow(wc) # 显示词云
    plt.axis('off') # 关闭坐标轴
    plt.show() # 显示图像

Captura de pantalla del efecto de ejecución

inserte la descripción de la imagen aquí

puntos de conocimiento

font_path: ruta de la fuente. El directorio donde se encuentra la fuente, haga clic derecho en la fuente deseada, seleccione "Propiedades" para ver su nombre, luego cópielo junto con la ruta y asígnelo font_path. Por ejemplo, el cuerpo negro utilizado en este ejemplo. Cabe señalar que si se trata de una nube de palabras chinas, se debe seleccionar la fuente de la palabra.

width,height: El ancho y alto del lienzo, en píxeles. Si no maskse establece ningún valor, se utilizará el valor predeterminado de 400*200.
margin: espacio entre palabras.
ranks_only: No indicado en la documentación.
prefer_horizontal: La probabilidad de mostrar palabras horizontalmente (el valor predeterminado es 90 % y la probabilidad de mostrar verticalmente es 10 %) :
maskSe utiliza para establecer la plantilla de dibujo, que debe ser una matriz nd (matriz multidimensional), de modo Image.open()la imagen, necesita Convertir np.arraya una matriz con . Además mask, si se establecen los parámetros, el tamaño del lienzo estará determinado por el tamaño de la imagen de fondo de la frecuencia de palabras. Esto se usa mucho ya que tendemos a preferir las plantillas personalizadas.
scale: Barra de escala, utilizada para ampliar el tamaño del lienzo. Por lo general, utilice el valor predeterminado.
color_func: Función de color, generalmente no se utiliza.
max_words: El número máximo de palabras que se muestran en el gráfico de nube de palabras Establezca un valor para evitar que se muestren aquellas palabras que aparecen muy raramente.
min_font_size: El tamaño de fuente mínimo.
stopwords: establezca las palabras que no desea que se muestren.
random_state: No indicado en la documentación.
background_color: el color de fondo del gráfico de nube de palabras, el valor predeterminado es negro. Se puede ajustar según sea necesario.
max_font_size: Tamaño máximo de fuente.
font_step: tamaño de paso de fuente, generalmente use el valor predeterminado. Cuando es mayor que 1, la velocidad de cálculo se puede mejorar, pero la coincidencia es deficiente.
mode: Cuando se configura en "RGBA" y background_colorse configura en "Ninguno", puede producir un fondo transparente.
relative_scaling: El impacto de la frecuencia de las palabras en el tamaño de fuente, por lo general, utilice el valor predeterminado.
regexp: expresión regular para dividir los caracteres de entrada. Por lo general, se procesa primero antes de que se entregue wordcloud, por lo que básicamente no se usa.
collocations: Si se incluye la colocación de dos palabras, si se utiliza el método, generate_from_frequencieseste parámetro se ignora. Generalmente no se usa.
colormap: El color correspondiente a cada palabra, si se establece color_func, ignore este parámetro.
normalize_plurals: Ya sea para eliminar el final de las palabras en plural en ingléssword, por ejemplo, y se puede wordsconsiderar como una palabra, y la frecuencia de la palabra se cuenta en wordla cabeza. generate_from_frequenciesEste parámetro se ignora si se utiliza el método .
contour_width: si maskse establece y contour_width>0, se dibujará el contorno mask.
contour_color: maskEl color del contorno, el predeterminado es negro.
repeat: Cuando las palabras no son suficientes para cumplir con los requisitos establecidos max_words, ya sea para repetir palabras o frases para que la cantidad de palabras en el mapa de la nube de palabras alcance max_words
include_numbers: si usar números como palabras.
min_word_length: establece el número mínimo de letras que contiene una palabra.
collocation_threshold: Definir bigramas en inglés, no aplicable al chino.

conclusión

Este artículo describe cómo usar Python para escribir código para generar un mapa de nube de palabras. Primero importe las bibliotecas requeridas, luego procese cada archivo Excel de frecuencia de palabra a través de un bucle, leyéndolos en un diccionario. A continuación, defina el estilo de la nube de palabras y genere un mapa de nube de palabras. Finalmente, guarde el mapa de nube de palabras generado en la carpeta especificada y muéstrelo en el cuaderno. A través del estudio de este artículo, podemos usar fácilmente Python para generar mapas de nubes de palabras, a fin de analizar mejor la información de frecuencia de palabras en los datos de texto.


Los recursos involucrados en el código de recurso se pueden descargar en la parte superior del artículo y cargar

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/131978838
Recomendado
Clasificación