绘制词云图

当个技术宅其实挺难的,我代码能力太弱了。

需要放在工作路径下的文件有:中文字体文件、背景图片、停用词、语料。

导入需要的库:

import csv
import re, jieba
# 词云生成工具
from wordcloud import WordCloud,ImageColorGenerator
# 对中文进行处理
import matplotlib.font_manager as fm
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']

词云那个库安装应该没什么障碍。

读取语料:

def read_csv(filename):
    text = ''
    # 读取文件内容
    # 编码方式要根据实际情况
    with open(filename, 'r', encoding='gbk', newline='') as file_test:
        reader = csv.reader(file_test)
        i = 0
        for row in reader:
            if i > 0:
                text += row[4] # 里面索引表示要读哪一列
            i += 1
        print('共有:' + str(i - 1) + '条文本')
        return text

读取停用词文件:

# 加载停用词到一个集合
def load_stopword(stopwords_path):
    stopword_set = set()
    with open(stopwords_path, "r", encoding = "utf-8") as stopwords:
        for stopword in stopwords:
            stopword_set.add(stopword.strip('\n'))
    return stopword_set

语料文本预处理:

# 只保留中文字符,分词,去除停用词
# 文件路径要写成/不能是\
def clearText(text, stopword_set):
    # 定义一个空列表,将已经去除了停用词的分词保存
    mywordList=[]
    #text = re.sub('[,.?!:;\'\",。?!:;、‘’“”《》~ \r\n]', '', text)
    # 只保留中文字符
    text = ''.join(re.findall(r'[\u4e00-\u9fa5]', text))
    #进行分词
    seg_list = jieba.lcut(text,cut_all=False)
    #对默认模式分词的结果进行遍历,去除停用词
    for myword in seg_list:
        #去除停用词
        if (myword not in stopword_set) and (len(myword.strip())>1):
            mywordList.append(myword.strip())
    return ' '.join(mywordList)

绘制并保存词云图:

def make_wordcloud(text1):
    # 把不想展示的词语删掉
    text1 = text1.replace("公司", "")
    # 读取词云形状的图片
    bg = plt.imread("bgpic.jpg")
    # 生成
    wc = WordCloud(# FFFAE3
        background_color="white",  # 设置背景为白色,默认为黑色
        width=890,  # 设置图片的宽度
        height=600,  # 设置图片的高度
        mask=bg,
        # margin=10,  # 设置图片的边缘
        max_font_size=150,  # 显示的最大的字体大小
        random_state=50,  # 为每个单词返回一个PIL颜色
        font_path='simkai.ttf'  # 中文处理,用系统自带的字体
    ).generate_from_text(text1)
    # 为图片设置字体
    my_font = fm.FontProperties(fname='simkai.ttf')
    # 图片背景
    bg_color = ImageColorGenerator(bg)
    # 开始画图
    plt.imshow(wc.recolor(color_func=bg_color))
    # 为云图去掉坐标轴
    plt.axis("off")
    # 画云图,显示
    # 保存云图
    wc.to_file("pictures/wordcloud1210.png")

运行:

contents = read_csv("finalrisktext.csv")
stopword_set = load_stopword("stopwords0.txt")
text = clearText(contents, stopword_set)
make_wordcloud(text)

效果:

目前还不清楚怎么把词语搞成彩色的,后面有空再研究研究。

参考资料:https://github.com/XksA-me/spider/blob/master/spider_maoyan/analysis_data.py

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值