Maison  >  Article  >  développement back-end  >  Comment générer un nuage de mots en Python

Comment générer un nuage de mots en Python

不言
不言original
2018-06-02 14:40:283116parcourir

Cet article présente principalement comment générer des nuages ​​de mots en Python. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Avant-propos

Aujourd'hui, je vais vous apprendre à utiliser le module wrodcloud pour générer un nuage de mots. J'ai lu un roman et généré un nuage de mots. Voyons d'abord le rendu :

Rendu 1 :

Rendu 2 :


Selon le rendu, l'analyse est assez précise. Le protagoniste du roman est "Cheng Li", c'est donc lui qui apparaît le plus. Il existe deux modes dans l'image, l'un est le mode par défaut et l'autre consiste à ajouter votre propre image comme arrière-plan. Je vais maintenant vous amener à apprendre à générer un nuage de mots !

Installation de Wordcloud

Pour les nouveaux arrivants, l'installation du module wordcloud est une étape importante. Nous l'installons généralement via Pycharm ou PIP. une erreur sera demandée lors de l'installation de wordcloud, comme suit :

Ma solution consiste à visiter directement l'URL suivante et à télécharger le fichier whl correspondant en fonction de votre ordinateur et de la version de py

Une fois le téléchargement terminé, placez le fichier whl sous le chemin pip, entrez le code suivant, rappelez-vous que le nom de fichier whl du code doit être un nom de fichier qui vous convient , je donne juste un exemple :

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

Après l'exécution, il montrera que l'installation est réussie

wordcloud Utilisation simple de

La méthode de base de wordcloud, voir le code source comme suit :

Vous devez comprendre chaque paramètre en un coup d'œil, et wordcloud Il existe plusieurs autres méthodes, telles que fit_words, generate(text), to_file(filename), etc., qui sont toutes très faciles à comprendre.

wordcloud génère un nuage de mots

Code pour le rendu 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()

Après avoir exécuté :

Rendu 2, ajoutez un fond d'image au nuage de mots, le code est le suivant :

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()

Après l'exécution :

Recommandations associées :


Python génère des nombres aléatoires avec n'importe quel plage et toute précision Comment compter

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn