python练习-wordcloud词云

写三个程序,生成三幅词云图:
sgresult1.png        三国演义中的常见词汇分布在“三国"这两个隶书字上,出现频率高的词字体大
sgresult2.png        三国演义中出现频率前十的人名。必须是这十个名字。图片长宽比是2:1
sgresult3.png        三国演义中出现频率前十的人名。必须是这十个名字。名字组成心形。心形图片可以用 love.png

import numpy as np
import pandas
import matplotlib
import wordcloud
import jieba
from PIL import Image
f=open("三国演义utf8.txt","r",encoding="utf-8")
text=f.read()
f.close()
words=jieba.lcut(text)
result={}
for word in words:
    if len(word)==1:
        continue
    elif word in ("诸葛亮","孔明曰"):
        word="孔明"
    elif word in ("关公","云长","关云长"):
        word="关羽"
    elif word in ("玄德","玄德曰"):
        word="刘备"
    elif word in ("孟德","操贼","曹阿瞒"):
        word="曹操"
    result[word]=result.get(word,0)+1

items=list(result.items())
items.sort(key=lambda x:-x[1])
l=len(items)


#三国演义中的常见词汇分布在“三国"这两个隶书字上,出现频率高的词字体大
text=""
for i in range(l):
    text+=(items[i][0]+" ")
img0=Image.open("三国隶书.jpg")
mask=np.array(img0)
wc1=wordcloud.WordCloud(font_path="SIMLI.TTF", mask=mask, background_color='white')
wc1.generate(text)
wc1.to_file("result1.png")

#删除非人名的词语,取前十人名
noneNames=['将军','却说','荆州','二人','不可','不能','如此','丞相','商议','如何','主公',
           '军士','左右','军马','引兵','次日','大喜','天下','东吴','于是','今日','不敢','魏兵','陛下','人马']
newtext=""
n=0
for i in range(l):
    if items[i][0] in noneNames:
        continue
    else:
        newtext+=(items[i][0]+" ")
        n+=1
    if n==10:
        break

#三国演义中出现频率前十的人名。必须是这十个名字。图片长宽比是2:1
wc2=wordcloud.WordCloud(width=1000,height=500,font_path="SIMLI.TTF")
wc2.generate(newtext)
wc2.to_file("result2.png")

#三国演义中出现频率前十的人名。必须是这十个名字。名字组成心形。心形图片可以用 love.png
img=Image.open("love.png")
mask=np.array(img)
wc3=wordcloud.WordCloud(font_path="SIMLI.TTF",mask=mask,background_color='white')
wc3.generate(newtext)
wc3.to_file("result3.png")

 

你可能感兴趣的:(python)