Python生成词云的常用库「wordcloud」。安装: pip install wordcloud
wordcloud默认是为了英文文本来做词云的,如果需要制作中文文本词云,就需要先对中文进行分词。这里就需要用到中文分词库「jieba」。安装:pip install jieba
# 功能:生成词云图 from wordcloud import WordCloud import jieba from collections import Counter import numpy as np from PIL import Image from matplotlib import pyplot as plt """ word.txt里的内容为: Python C逆向 C++逆向 C++逆向 C++逆向 C逆向 网络爬虫 数据解析 """ # 读取文件内容 with open('word.txt', 'r', encoding='utf-8') as f: words = f.read() # 增加jieba库词语(一些完整的词可能被分割) jieba.add_word("网络爬虫") jieba.add_word("JS逆向") jieba.add_word("APP逆向") jieba.add_word("C逆向") jieba.add_word("C++逆向") jieba.add_word("网络数据") # 使用jieba进行分词 words_list_jieba = jieba.lcut(words) # ['Python', '\n', 'C逆向', '\n', 'C++逆向', '\n', 'C++逆向', '\n', 'C++逆向', '\n', 'C逆向', '\n', '网络爬虫', '\n', '数据', '解析'] # 定义需要排除的词语集合 excluded_words = ["将", "\n", "地", '小说', '侧', "又", "一雄", "如何", "什么", '可以', '吗', "只是", "他", "本", '们', " ", "…", "把", "人", "很", '那么', '着', '太', '能', '给', '不是', '里', "被", "就是", "一个", "没有", "剧", "让", "/", "而", "与", "一部", "的", "我", "你", "她", "我们", "你们", "他们", "是", "在", "了", "有", "这", "那", "就", "也", "还", "但", "如果", "然后", "因为", "所以", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "百", "千", "万", "个", "这些", "那些", "更", "最", "好", "坏", "大", "小", "高", "低", "长", "短", "新", "旧", "常", "少", "多", "全", "每", "些", "去", "来", "到", "从", "为", "以", "对", "和", "或", "及", "上", "下", "中", "前", "后", "左", "右", "内", "外", "间", "部", "种", "年", "月", "日", "时", "分", "秒", "这个", "那个", "这样", "那样", "一些", "很多", "非常", "可能", "一定", "一直", "经常", "不断", "不只", "不要", "不得", "不能", "无法", "没法", "必须", "应该", "需要", "会", "想", "要", "找", "看", "听", "说", "写", "读", "学", "做", "吃", "喝", "睡", "玩", "工作", "生活", "家庭", "朋友", "嫌", "感觉", "思考", "想法", "方法", "原因", "结果", "可能性", "比较", "不同", "相同", "重要", "容易", "困难", "简单", "复杂", "正确", "错误", ",", "。", "!", "?", ";", ":", "“", "”", "‘", "’", "(", ")", "【", "】", "《", "》", "——", "—", "·", "、", "~", "像"] # 过滤排除的词语 words_list = [x for x in words_list_jieba if x not in excluded_words] # ['Python', 'C逆向', 'C++逆向', 'C++逆向', 'C++逆向', 'C逆向', '网络爬虫', '数据', '解析'] # 使用Counter进行词频统计 word_counter = Counter(words_list) # Counter({'C++逆向': 3, 'C逆向': 2, 'Python': 1, '网络爬虫': 1, '数据': 1, '解析': 1}) sorted_file = word_counter.most_common() #[('C++逆向', 3), ('C逆向', 2), ('Python', 1), ('网络爬虫', 1), ('数据', 1), ('解析', 1)] # 加载图像作为遮罩 mask = np.array(Image.open("1.png")) # 蒙版图片 # 生成词云时指定遮罩 wordcloud = WordCloud( font_path='simhei.ttf', background_color='white', mask=mask).generate_from_frequencies(dict(sorted_file)) # 保存词云图 wordcloud_image_path = 'wordcloud.png' wordcloud.to_file(wordcloud_image_path) # # 生成图片 # image = wordcloud.to_image() # # 展示图片 # image.show() # # 显示词云图 # plt.figure(figsize=(10, 8)) # plt.imshow(wordcloud, interpolation='bilinear') # plt.axis('off') # plt.show()