def ciyun(txt,k):
words = open(txt, 'r', encoding='UTF-8').read()
wordstr = " ".join(words)
c = Counter(wordstr)
common_c = c.most_common(100)#前一百的关键词
mask = np.array(Image.open('message.jpg'))
wc = WordCloud(
font_path='simhei.ttf', # 设置字体格式
mask=mask,
max_words=200,
max_font_size=100,
stopwords=sw,
scale=4,
).generate(common_c)
# 显示词云图
plt.imshow(wc)
plt.axis("off")
plt.show()
# 保存词云图
wc.to_file(k+'.jpg')
with open('分词结果.txt',encoding='utf-8') as fn:
string_data = fn.read()
ciyun(string_data,'评价词云图')
请问有没有大佬明白这个是什么情况,感觉是文本读取方面出现了问题,但是换了几个用法还是同样的bug
错误在函数ciyun(txt,k)开头的四行代码:
1.变量txt是以文本内容而不是路径字符串传入的,你把它作为文件路径使用了。文本内容已经传入,不需要再读取文件,把函数里的第一行删除,并先对文本分割获得词列表。
2.获得的前一百个关键词是元组列表形式的,不能被generate函数调用,要处理成字符串。
相应的代码修改如下:
words = txt.split()
#wordstr = " ".join(words)
c = Counter(words)
common_c = ' '.join([x[0] for x in c.most_common(100)])