|
|
|
import jieba
|
|
|
|
from matplotlib import pyplot as plt
|
|
|
|
from wordcloud import WordCloud
|
|
|
|
from PIL import Image
|
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
def predeal(txt):
|
|
|
|
cut = jieba.cut(txt) # 分词
|
|
|
|
string = ' '.join(cut)
|
|
|
|
return string
|
|
|
|
|
|
|
|
def drawcloud(imgpath, stopword, string, savepath):
|
|
|
|
try:
|
|
|
|
img = Image.open(imgpath) # 打开图片
|
|
|
|
except IOError as e:
|
|
|
|
print(f"打开图片时出错:{e}")
|
|
|
|
return
|
|
|
|
img_array = np.array(img) # 将图片转换为数组
|
|
|
|
wordcloud = WordCloud(
|
|
|
|
background_color='white',
|
|
|
|
width=1000,
|
|
|
|
height=800,
|
|
|
|
mask=img_array, # 设置背景图片
|
|
|
|
font_path='C:\\Windows\\Fonts\\msyh.ttc', # 电脑自带的字体
|
|
|
|
stopwords=stopword,
|
|
|
|
colormap='plasma'
|
|
|
|
)
|
|
|
|
wordcloud.generate_from_text(string) # 绘制图片
|
|
|
|
plt.imshow(wordcloud)
|
|
|
|
plt.axis('off')
|
|
|
|
wordcloud.to_file(savepath) # 保存图片
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
txtpath = r'd:\学习\软件工程\swork\res\select_ai.txt'
|
|
|
|
imgpath = r'd:\学习\软件工程\swork\tu4.png'
|
|
|
|
savepath = r'd:\学习\软件工程\swork\cloud_ai.png'
|
|
|
|
stopword = ['啊', '的', '是', '视频', '个', '哈', '第', '哈哈哈', '吧', '了', '我', '你','福州大学'] # 不想显示的词
|
|
|
|
try:
|
|
|
|
with open(txtpath, 'r', encoding='utf-8') as file:
|
|
|
|
txt = file.read()
|
|
|
|
except FileNotFoundError as e:
|
|
|
|
print(f"读取文本文件时出错:{e}")
|
|
|
|
else:
|
|
|
|
string = predeal(txt)
|
|
|
|
drawcloud(imgpath, stopword, string, savepath)
|