Maison  >  Article  >  développement back-end  >  Tutoriel sur la façon de générer un nuage de mots en utilisant Python

Tutoriel sur la façon de générer un nuage de mots en utilisant Python

巴扎黑
巴扎黑original
2017-06-23 15:33:122940parcourir

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!

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