微信聊天记录生成词云(二)

在上一篇中,将导出的csv文件中的talkid为微信id的文字内容提取出来,形成txt文件。

一、对文本内容进行清洗

  • 在notepad中打开txt文件,发现聊天记录中,每隔一段会有诸如“wxid_atzmad”的无效字段,影响整体数据的有效性。


    聊天记录截图1.png

    考虑到每个“wxid_atzmad”字段后内容均不一样,若用复制粘贴去替换,几万行聊天记录,光查找就要耗费一定精力。想到学习python时,学过正则表达式,为何不用正则表达式匹配“wxid_atzmad”字段,然后将其替换为空值?如果用正则表达式,速度快,效果应该可以达到。
    启用正则表达式进行替换

    同理,其他无用字段也可以用正则表达式进行匹配删除

数据清洗部分根据个人对数据的需求,进行不断清洗。

二、生成词云图

在jupyter中,导入wordcloud模块(当然,如果anaconda中没有装wordcloud模块的话,可采用conda install wordcloud或者导入相关我回来文件的方式安装),然后编写词云图代码,生成词云。其中,词云背景图需要的照片轮廓可用美图软件进行修饰,以获得更好的效果图。

直接上代码。

#使用空格链接,进行中文分词
wl_space_split=''.join(wordlist)
print wl_space_split

#读取mask/color图片
d=path.dirname(__file__)
nana_coloring=imread(path.join(d,'pic.png')

#对分词后的文本生成词云
my_wordcloud=WordCloud(background_color='white',    #设置背景颜色
                        mask=nana_coloring,         #设置背景图片
                        max_words=2000,             #设置最大显示的字数
                        stopwords=STOPWORDS,        #设置停用词
                        max_font_size=50,           #设置字体最大值
                        random_state=30,            #设置有多少种随机生成状态,即有多少种配色方案
                        )
                        
my_wordcloud.generate(wl_space_split)

#create coloring from image
image_colors=ImageColorGenerator(nana_coloring)

#recolor wordcloud and show 
my_wordcloud.recolor(color_func=image_colors)

#显示词云图
plt.imshow(my_wordcloud)
#是否显示x轴、y轴下标
plt.axis('off')
plt.show()

#save img
my_wordcloud.to_file(path.join(d,'wechat.png')

根据WordCloud的参数,可以自己不断调整参数,获得不同效果的词云图。
最后,附上自己调试出的几个词云图照片。


不断修图和不断调整参数的结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。