python中只用jieba和wordcloud库不导入其他库制作停用表和字典的异型图词云图
时间: 2024-02-18 17:05:11 浏览: 74
基于jieba & wordcloud的词云生成(完整源代码等)
5星 · 资源好评率100%
好的,以下是一个Python代码示例,使用jieba和wordcloud库不导入其他库制作停用表和字典的异型词云图:
```python
import jieba
from collections import Counter
import base64
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
from wordcloud import WordCloud
# 读取文本文件
text = open('your_text_file.txt', 'r').read()
# 读取图像文件
with open('your_image_file.png', 'rb') as f:
image_data = f.read()
mask = np.array(Image.open(BytesIO(base64.b64decode(image_data))))
# 使用jieba进行分词
word_list = jieba.cut(text)
# 设置停用词列表
stopwords = {'的', '了', '和', '是', '在', '有', '人', '就', '不', '也', '都', '这', '我', '你', '他', '她', '我们', '你们', '他们', '她们'}
# 设置字典
word_dict = {'Python': 10, '机器学习': 8, '数据分析': 6, '编程': 4, '算法': 3, '人工智能': 2, '深度学习': 1}
# 计算词频并根据停用词和字典过滤
word_count = Counter()
for word in word_list:
if word not in stopwords:
if word in word_dict:
word_count[word] += word_dict[word]
else:
word_count[word] += 1
# 生成词云图
wc = WordCloud(background_color="white", max_words=2000, mask=mask, contour_width=3, contour_color='steelblue')
# 构造词云图所需的文本和权重列表
words = [(word, count) for word, count in word_count.items()]
wordcloud = wc.fit_words(dict(words))
# 生成图片
image = Image.new('RGB', (mask.shape[1], mask.shape[0]), (255, 255, 255))
draw = ImageDraw.Draw(image)
draw.mask((Image.fromarray(mask)))
image_color = np.array(image)
image_color[wordcloud.to_array() == 0] = 255
# 显示词云图
import matplotlib.pyplot as plt
plt.imshow(image_color, interpolation="bilinear")
plt.axis('off')
plt.show()
```
上述代码中,我们使用了jieba库进行中文分词,并设置了停用词列表和字典。在分词结果中,如果分词不在停用词列表中,就根据字典中对应的权重重复该词语。接着使用collections库的Counter函数计算词频,并将结果存储在字典word_count中。最后使用WordCloud库生成异型词云图,将词频字典转换为词语和权重列表,然后使用fit_words方法生成词云图。最后使用PIL库生成图片,并将图片显示出来。
阅读全文