【Python】聊天记录词云图

1.安装Anaconda和pycharm,并完成相关配置。

参考教程:https://blog.csdn.net/tang_chuanlin/article/details/79793654

配置之后需要在settings界面安装jieba等相关包。点击下图绿色+图标,搜索出包后点击左下侧安装即可。但是在安装wordcloud包时可能会出现错误,解决办法为手动下载whl文件进行安装。

下载界面:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

打开cmd->在Anaconda相关安装目录下找到pip.exe文件将其拖入->空一格输入“install whl文件的完整安装路径”,按下空格键安装完成。

2.词云图的实现

参考教程:https://blog.csdn.net/Tang_Chuanlin/article/details/79862505

3.注意

(1)f_stop = open(path.join(d, stop_name), encoding="utf8")

无法打开文件,将分词的文件另存为utf8编码文件格式即可。

(2)停用词表去掉聊天日期、网名、数字、链接、自动回复语言、系统提示语、文字显示的表情包。优化:如何自动去掉文本中的链接?

(3)修改词云的形状需要在参数mask内设置

完整代码如下:


import jieba

from os import path                            # 获取文档的路径

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

from wordcloud import WordCloud, ImageColorGenerator

import matplotlib.font_manager as fm


bg = np.array(Image.open("princess.png"))       # 背景图

d = path.dirname(__file__)       # 获取当前的项目文件夹的路径

stop_name = 'stopwords.txt'     # 读取停用词表,jieba.add_word("叶文洁")可添加自定义分词

data_name = "20170520-20180113.txt"    # 文本路径

data = open(path.join(d, data_name), encoding="utf8").read()  # 读取要分析的文本,读取格式


def separate(text_data):       # 定义函数用于分词

    word_list = []                     # 定义一个空的列表,保存分词

    seg_list = jieba.cut(text_data, cut_all=False)  # false精准分词模式,试试True??

    list_str = ','.join(seg_list)              # 将分词用,连接起来

    # 打开停用词表

    f_stop = open(path.join(d, stop_name), encoding="utf8")

    try:

        f_stop_text = f_stop.read()

    finally:

        f_stop.close()                          # 关闭资源

    f_stop_seg_list = f_stop_text.split("\n")       # 将停用词格式化,用\n分开,返回一个列表

    # 对默认模式(精准)分词结果进行遍历,去除停用词

    for my_word in list_str.split(','):

        if not(my_word in f_stop_seg_list) and not my_word.isdigit() and len(my_word.strip()) > 1:

            word_list.append(my_word)

    return ' '.join(word_list)


result = separate(data)

# 生成词云图

wc = WordCloud(

        background_color="white",     # 设置背景为白色,默认为黑色

        mask=bg,                                # 设置词云形状

        width=990,                              # 设置图片的宽度

        height=440,                            # 设置图片的高度

        margin=10,                             # 设置图片的边缘

        max_font_size=50,                 # 设置最大字体

        random_state=30,

        font_path='C:/Windows/Fonts/simfang.ttf'  # 中文处理,用系统自带的字体

    ).generate(result)

my_font = fm.FontProperties(fname='C:/Windows/Fonts/simfang.ttf')  # 为图片设置字体

image_colors = ImageColorGenerator(bg)    # 产生背景图片,基于彩色图像的颜色生成器

plt.imshow(wc, interpolation="bilinear")     # 开始画图

plt.axis("off")    # 为云图去掉坐标轴

wc.to_file("公主图案.png")    # 保存云图

4.效果图

【Python】聊天记录词云图_第1张图片

你可能感兴趣的:(【Python】聊天记录词云图)