前言
善始者繁多,克终者盖寡。
问题描述:我们已经通过爬虫获取到了大量的课程评论信息,有没有一种直观形象的方法来判断学习者对这门课程的态度呢?
答案是有的,我们可以通过词云图来从整体上粗略的判断学习者们的整体态度!!!
一、python实现
“word_filename”表示文本文件的名称;
为了增强程序的复用性,使用配置文件"background_config.txt"定位词云图的背景,该文件在程序文件的同级目录下;
wordcloud.WordCloud定义了词云图的显示,“background_color”属性指定了词云图的背景颜色,根据个人需求也可以更改为"black”等颜色;
w.generate是词云图的核心方法,根据文本中词语出现频次以不同大小和颜色显示;
程序运行后生成一张赋有时间戳的图片。
import cv2
import wordcloud
import time
def get_wordcloud(word_filename):
with open("background_config.txt", "r", encoding="utf-8") as f:
img = f.readline()[6:]
font_path = r"楷体.ttf"
img = cv2.imread(img)
# w = wordcloud.WordCloud(font_path=font_path, background_color="white" \
# , max_words=5000, width=800, height=50000, mask=img)
w = wordcloud.WordCloud(font_path=font_path, background_color="white" \
, max_words=5000, width=800, height=50000, mask=img)
strtext = ""
with open(word_filename, encoding="utf-8") as f:
strtext = str(f.read())
w.generate(strtext)
time_flag = str(time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()))
out_picture = "result\\wordcloud" + time_flag + ".png"
w.to_file(out_picture)
show_img = cv2.imread(out_picture)
cv2.imshow("wordcloud",show_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、程序测试
测试代码为:
if __name__ == '__main__':
word_filename = "result/comment2023_04_01_21_02_45.txt"
get_wordcloud(word_filename=word_filename)
2.1 心形词云图
"background_config.txt"内容如图所示:
使用的背景图片为:
程序运行结果为:
2.2 皮卡丘型词云图
"background_config.txt"内容如图所示:
使用的背景图片为:
程序运行结果为: