Maison > Article > développement back-end > Tutoriel sur la façon de générer un nuage de mots en utilisant Python
J'ai été occupé avec la révision finale et j'ai passé du temps à écrire un framework Scrapy. Aujourd'hui, je vais vous présenter comment utiliser Python pour générer des nuages de mots. Bien qu'il existe de nombreux outils de génération de nuages de mots sur Internet, il serait plus satisfaisant de le faire. écrivez-le vous-même en python.
Ce que nous allons générer aujourd'hui est un nuage de mots de chansons inspirantes. Nous avons trouvé environ 20 chansons dans la bibliothèque Baidu, telles que "Stubborn", "The Sea and the Sky", etc. tout le monde.
Les bibliothèques python à utiliser incluent jieba (une bibliothèque de segmentation de mots chinois), wordcould, matplotlib, PIL et numpy.
La première chose que nous devons faire est de lire les paroles. J'ai enregistré les paroles dans le texte de la chanson inspirante dans le répertoire de fichiers.
Lisons-le maintenant
#encoding=gbklyric= ''f=open('./励志歌曲歌词.txt','r')for i in f: lyric+=f.read()
#encoding=gbk est ajouté pour empêcher les opérations ultérieures de signaler SyntaxError : code non UTF-8 commençant par 'xc0'
Ensuite, nous utilisons la segmentation des mots jieba pour segmenter les chansons et extraire les mots à haute fréquence
import jieba.analyse result=jieba.analyse.textrank(lyric,topK=50,withWeight=True) keywords = dict()for i in result: keywords[i[0]]=i[1]print(keywords)
Le résultat est :
Ensuite, nous pouvons générer des nuages de mots grâce à des bibliothèques telles que wrodcloud
Trouvez d'abord une image à utiliser comme forme du nuage de mots
from PIL import Image,ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom wordcloud import WordCloud,ImageColorGenerator image= Image.open('./tim.jpg') graph = np.array(image) wc = WordCloud(font_path='./fonts/simhei.ttf',background_color='White',max_words=50,mask=graph) wc.generate_from_frequencies(keywords) image_color = ImageColorGenerator(graph) plt.imshow(wc) plt.imshow(wc.recolor(color_func=image_color)) plt.axis("off") plt.show()
Enregistrer l'image générée
wc.to_file('dream.png')
Code complet :
#encoding=gbkimport jieba.analysefrom PIL import Image,ImageSequenceimport numpy as npimport matplotlib.pyplot as pltfrom wordcloud import WordCloud,ImageColorGenerator lyric= ''f=open('./励志歌曲歌词.txt','r')for i in f: lyric+=f.read() result=jieba.analyse.textrank(lyric,topK=50,withWeight=True) keywords = dict()for i in result: keywords[i[0]]=i[1]print(keywords) image= Image.open('./tim.jpg') graph = np.array(image) wc = WordCloud(font_path='./fonts/simhei.ttf',background_color='White',max_words=50,mask=graph) wc.generate_from_frequencies(keywords) image_color = ImageColorGenerator(graph) plt.imshow(wc) plt.imshow(wc.recolor(color_func=image_color)) plt.axis("off") plt.show() wc.to_file('dream.png')
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!