用wordcloud来分析QQ群的聊天记录

wrodcloud 基于Python的词云生成类库,这里用来做QQ聊天记录的分析,参考别人的代码做了个demo,安装对应的库后就能执行。QQ聊天记录导出存储为txt格式。

# coding:utf-8
"""
author:@
"""
import re
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud,STOPWORDS
from PIL import Image
import numpy as np
# 词云制作
def get_wordcloud(text_data):
    word_list = [" ".join(jieba.cut(sententce)) for sententce in text_data]
    new_text = ' '.join(word_list)
    # 背景图片的设置,图片有要求,颜色过多的貌似不能生成,我用了一个黑白两色的。
    pic = Image.open('d:\\tmp\\1\\ti.jpg')
    mang_mask = np.array(pic)
    wordcloud = WordCloud(
        background_color="white",
        # width=1928, height=1048,  不用背景图的时候,这里设置词云的宽高
        font_path='C:\\Windows\\Fonts\\STXINWEI.TTF',  #词云字体设置,对中文的支持好像不够,需要自己选择宋体?
        mask=mang_mask,
        stopwords=STOPWORDS, ).generate(new_text)
    plt.imshow(wordcloud)
    plt.axis('off')
    wordcloud.to_file('guanlie.png')
# 匹配文本内容,调用上一个函数
def get_content(data):
    pa = re.compile(r'\d{4}-\d{2}-\d{2}.*?\d+:\d{2}:\d{2}.*?\n(.*?)\n\n', re.DOTALL)
    content = re.findall(pa, data)
    get_wordcloud(content)

def main():
    filename = "d:\\tmp\\guanliqun.txt"
    # encoding一下,防止乱码
    with open(filename, encoding="UTF-8") as f:
        data = f.read()
    get_content(data)
    plt.show()
if __name__ == '__main__':
    main()

生成的结果如下:用wordcloud来分析QQ群的聊天记录_第1张图片

存在的问题:

QQ聊天记录,很多词汇都无实际的意义,所以需要先对文本进行处理后再生成,具体的处理可以根据自己的要求,在生成第一次的时候,看看哪些分词是不需要的,就可以通过脚本进行替换,直到最后得到自己想要的。个人觉得用来分析文档这类的比较好,可以统计文档的侧重点等信息。对文本处理的时候,要注意文本的格式

file = open("d:\\tmp\\luqun.txt",encoding='utf-8', errors='ignore')
file1 = open('d:\\tmp\\lunqun11.txt', 'a',encoding='utf-8')

for value in file.readlines():
        result=value.replace('[图片]','').replace('表情','').replace('这个','')
        file1.write(result)

 

你可能感兴趣的:(python)