美文网首页程序员
python wordcloud分析《共产党宣言》并生成词云

python wordcloud分析《共产党宣言》并生成词云

作者: 月小水长 | 来源:发表于2018-11-30 21:29 被阅读37次

马原老师让我们做一次课外实践,主题是:利用专业所长结合马克思主义原理交一份作业,形式不限。作为IT类专业的学生,最大的技能莫过于编程,该交一份什么样的代码呢。突然,灵感一现,决定用python词云来分析马克思主义原理巨著《共产党宣言》,毕竟马克思主义也承认科学技术是第一生产力啊。

首先准备一张图

mks.jpg

,伟人马克思的照片,后面词云制作的背景图。

下载《共产党宣言》txt文件

下载地址https://github.com/inspurer/PythonLearning/blob/master/python%E5%B0%8F%E9%A1%B9%E7%9B%AE/wordcloud/%E5%85%B1%E4%BA%A7%E5%85%9A%E5%AE%A3%E8%A8%80.txt

安装wordcloud等第三方库

pip install wordcloud
这是最主要的库,但是由于很多原因,我不能确定你的python还缺哪些库,最好的办法是运行代码调试。

如果你在安装wordcloud的过程中遇到了一下问题,请参考一下教程教程
wordcloud安装过程中遇到的问题
python安装whl文件注意点

源代码

import pickle
from os import path,walk
import time
import jieba
import numpy as np
from PIL import Image, ImageSequence
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from matplotlib.font_manager import FontProperties

font_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=15)  # 解决plt.title不能中文

txtList = [];
for root, dirs, files in walk("./"):
    for fn in files:
        if fn.endswith('.txt'):
            txtList.append(fn)
i = 1
ipath = 'mks.jpg'
backgroud_Image = plt.imread(ipath)
print('加载背景图片成功!')
for txt in txtList:
    saveImageName = txt.replace(".txt", ".jpg")
    #print(txt)
    #print(saveImageName)
    text = ''
    print('开始加载文本:',txt)
    fin = open(txt, encoding='utf-8').read()
    wordlist_after_jieba = jieba.cut(fin, cut_all=True)
    text = " ".join(wordlist_after_jieba)
    '''''设置词云样式'''
    wc = WordCloud(
        background_color='white',  # 设置背景颜色,这是设置成和背景图形的背景一样为白色,然后词的颜色就和背景图形的主体颜色一样了
        mask=backgroud_Image,  # 设置背景图片
        font_path='C:\Windows\Fonts\STZHONGS.TTF',  # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
        max_words=2000,  # 设置最大现实的字数
        stopwords=STOPWORDS,  # 设置停用词
        max_font_size=150,  # 设置字体最大值
        random_state=30  # 设置有多少种随机生成状态,即有多少种配色方案
    )
    # 过滤关键词
    key_words = ["他们", "我们", "这种", "已经", "但是", "这个", "一个", "会主", "资产阶级", "无产阶级", "自己"]
    for key in key_words:
        text = text.replace(key, "")
    wc.generate_from_text(text)
    # graph = backgroud_Image
    #  设置字体颜色为随渐变色背景图形渐变
    image = Image.open(ipath)
    graph = np.array(image)
    img_colors = ImageColorGenerator(graph)
    wc.recolor(color_func=img_colors)

    # 显示词云图
    plt.figure(i)
    plt.title(txt, fontproperties=font_set)
    plt.imshow(wc)
    # 是否显示x轴、y轴下标
    plt.axis('off')
    plt.show()
    # time.sleep(3)
    plt.close()

  

    # 获得模块所在的路径的
    d = path.dirname(__file__)
    wc.to_file(path.join(d,saveImageName))
    print('词云已成功保存到:',saveImageName)
print('程序结束')

代码截至2018/11/30测试可用,最新的代码地址在我的github:wordcloud

运行效果

共产党宣言.jpg

如果图片出现中文乱码,请参照以下流程:

把系统自带字库复制到E:\Python\installdirectory\Lib\site-packages\wordcloud里去
同时在该目录下打开worldcloud.py文件
在第28行做如下修改
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))修改DroidSansMono.ttf为你自己的字体文件名

有什么问题欢迎评论,不妨赞赏一下,将鼓励我创作出更多优质内容,谢谢。

相关文章

网友评论

    本文标题:python wordcloud分析《共产党宣言》并生成词云

    本文链接:https://www.haomeiwen.com/subject/irskcqtx.html