Как Python генерирует облака слов (подробный анализ)

задняя часть Python WeChat PyCharm

предисловие

Сегодня я научу вас использовать модуль wrodcloud для создания облаков слов. Я прочитал роман и сгенерировал облако слов. Давайте сначала посмотрим на рендеринг:

Эффект изображения один:

image

Изображение эффекта два:

image

Согласно анализу визуализаций, это относительно точно.Главный герой в романе «Чэн Ли», поэтому он появляется чаще всего. В картинке есть два режима, один режим по умолчанию, а другой - добавить картинку самому в качестве фона. Далее я покажу вам, как создавать облака слов!

установка вордклауд

Для новичков установка модуля wordcloud является большим шагом.Мы обычно устанавливаем его через Pycharm или PIP, но при установке wordcloud будет выдано сообщение об ошибке, как показано ниже:

image

Мое решение состоит в том, чтобы напрямую перейти по следующему URL-адресу и загрузить соответствующий файл whl в соответствии с вашим компьютером и версией py.

https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

image

После завершения загрузки поместите файл whl в путь pip, введите следующий код, помните, что имя файла whl кода должно быть подходящим для вас именем файла, я просто привожу пример:


pip install wordcloud-1.4.1-cp36-cp36m-win32.whl

После запуска он покажет, что установка прошла успешно

Простое использование wordcloud

Основной метод wordcloud см. исходный код следующим образом:

Вы должны понимать каждый параметр с первого взгляда.Кроме того, wordcloud имеет несколько других методов, таких как fit_words, generate(text), to_file(filename) и т. д., которые очень просты для понимания.

wordcloud генерирует облако слов

Код рендеринга 1:


from wordcloud import WordCloud
import matplotlib.pyplot as plt  #绘制图像的模块
import  jieba                    #jieba分词

path_txt='C://Users/Administrator/Desktop/all.txt'
f = open(path_txt,'r',encoding='UTF-8').read()

# 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
cut_text = " ".join(jieba.cut(f))

wordcloud = WordCloud(
   #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
   font_path="C:/Windows/Fonts/simfang.ttf",
   #设置了背景,宽高
   background_color="white",width=1000,height=880).generate(cut_text)

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

После запуска:

Эффект изображения 2, добавление фона изображения к облаку слов, код выглядит следующим образом:


from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import numpy as np
import  jieba
def GetWordCloud():
   path_txt = 'C://Users/Administrator/Desktop/all.txt'
   path_img = "C://Users/Administrator/Desktop/timg.jpg"
   f = open(path_txt, 'r', encoding='UTF-8').read()
   background_image = np.array(Image.open(path_img))
   # 结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云,感兴趣的朋友可以去查一下,有多种分词模式
   #Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
   cut_text = " ".join(jieba.cut(f))

   wordcloud = WordCloud(
       # 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
       font_path="C:/Windows/Fonts/simfang.ttf",
       background_color="white",
       # mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
       mask=background_image).generate(cut_text)
   # 生成颜色值
   image_colors = ImageColorGenerator(background_image)
   # 下面代码表示显示图片
   plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
   plt.axis("off")
   plt.show()

if __name__ == '__main__':
   GetWordCloud()

После запуска:

image

Я надеюсь быть полезным!

Вы можете следить за моей публичной учетной записью WeChat: «Цинь Цзышуай» — это публичная учетная запись с качеством и отношением!