使用Python制作豆瓣《请回答1988》的评论词云

使用Python制作豆瓣《请回答1988》评论词云

本文是使用Python保存豆瓣《请回答1988》评论的续篇,将上周保存下来的评论内容制作成词云。主要涉及分词和词云制作。

今天的知识点主要涉及两方面:

  • Python
    • jieba库——目前最好的 Python 中文分词组件
    • wordcloud库——wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片

0、编程思路

今天的内容比较简单,主要分为2步:

  • 使用jieba库对保存下来的评论进行分词,并统计输出词频。
  • 使用wordcloud库将词频绘制成词云。

1、Python库安装

jieba库安装:

pip install jieba

如果安装速度较慢可以使用豆瓣的镜像源下载:

pip3 install -i https://pypi.doubanio.com/simple/ jieba

wordcloud库安装:

pip install wordcloud

如果安装速度较慢可以使用豆瓣的镜像源下载:

pip3 install -i https://pypi.doubanio.com/simple/ wordcloud

2、读取评论文件

读取上次保存的评论txt文件,并利用行末结尾的“\n”分割评论,将每条评论作为一个元素保存至列表中

# 从comment.txt文件中读取全部评论信息保存至列表texts中
with open('comment.txt', 'r', encoding='utf-8') as f:
    texts = f.read().split('\n')

3、读取停止词

停止词:文本中出现频率很高,但实际意义又不大的词。这一类主要包括了语气助词、副词、介词、连词等,通常自身并无明确意义,只有将其放入一个完整的句子中才有一定作用的词语。如常见的“的”、“在”、“和”、“接着”之类,比如“网英的日常是原创的技术博客”这句话中的“是”、“的”就是两个停用词。

这是使用了“哈工大停用词表”,百度搜索即可获取,将停止词保存至“stopwords.txt”文件中。

读取停止词文件,将停止词保存至列表stopwords中

# 读取停止词文件,将停止词保存至列表stopwords中
stopwords = open('stopwords.txt', 'r', encoding='utf-8').read().split('\n')

4、统计词频

import jieba

def frequencies(texts, stopwords):

    # 创建词频统计字典
    words_dict = {}

    # 循环统计每个评论
    for text in texts:

        # 将每个评论进行分词
        temp = jieba.cut(text)

        # 统计每个评论中的词语,如果在停止词表中则不统计
        for t in temp:
            if t in stopwords:
                continue
            if t in words_dict.keys():
                words_dict[t] += 1
            else:
                words_dict[t] = 1

    return words_dict

# 统计词频
words_dict = frequencies(texts, stopwords)

5、制作词云

import os
from wordcloud import WordCloud

def generateWordCloud(words, savepath):

    # 词云对象基本设置
    wc = WordCloud(font_path='simkai.ttf', background_color='white', max_words=2000, width=1920, height=1080, margin=5)

    # 生成词云
    wc.generate_from_frequencies(words)

    # 将词云保存为图片
    wc.to_file(os.path.join(savepath, 'commentscloud.jpg'))

# 制作词云图片,保存路径为当前工作路径
generateWordCloud(words_dict, os.getcwd())

6、完整代码

import os
from wordcloud import WordCloud
import jieba

def generateWordCloud(words, savepath):

    # 词云对象基本设置
    wc = WordCloud(font_path='simkai.ttf', background_color='white', max_words=2000, width=1920, height=1080, margin=5)

    # 生成词云
    wc.generate_from_frequencies(words)

    # 将词云保存为图片
    wc.to_file(os.path.join(savepath, 'commentscloud.jpg'))


def frequencies(texts, stopwords):

    # 创建词频统计字典
    words_dict = {}

    # 循环统计每个评论
    for text in texts:

        # 将每个评论进行分词
        temp = jieba.cut(text)

        # 统计每个评论中的词语,如果在停止词表中则不统计
        for t in temp:
            if t in stopwords:
                continue
            if t in words_dict.keys():
                words_dict[t] += 1
            else:
                words_dict[t] = 1

    return words_dict


if __name__ == '__main__':
    # 从comment.txt文件中读取全部评论信息保存至列表texts中
    with open('comment.txt', 'r', encoding='utf-8') as f:
        texts = f.read().split('\n')

    # 读取停止词文件,将停止词保存至列表stopwords中
    stopwords = open('stopwords.txt', 'r', encoding='utf-8').read().split('\n')

    # 统计词频
    words_dict = frequencies(texts, stopwords)

    # 制作词云图片,保存路径为当前工作路径
    generateWordCloud(words_dict, os.getcwd())

7、最后输出结果


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xumeng32@126.com

文章标题:使用Python制作豆瓣《请回答1988》的评论词云

文章字数:1k

本文作者:F_numen

发布时间:2020-04-18, 14:19:06

最后更新:2020-04-18, 14:30:43

原始链接:https://netheroone.cn/archives/2251d0d.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
/*baidu统计*/