查看原文
其他

《金瓶梅》怎么样,Python词云分析告诉您?

柯广 大数据技术派 2022-10-15


《金瓶梅》书名是由小说三个女主人公潘金莲、李瓶儿、庞春梅各取一字合成的。

《金瓶梅》,中国古代长篇白话世情小说,一般认为是中国第一部文人独立创作的章回体长篇小说。其成书时间约在明朝隆庆至万历年间,作者署名兰陵笑笑生。


小说题材由《水浒传》中武松杀嫂一段演化而来,通过对兼有官僚、恶霸、富商三种身份的市侩势力的代表人物西门庆及其家庭罪恶生活的描述,体现当时民间生活的面貌,描绘了一个上至朝廷内擅权专政的太师,下至地方官僚恶霸乃至市井间的地痞、流氓、宦官、帮闲所构成的鬼蜮世界,揭露了明代中叶社会的黑暗和腐败,具有较深刻的认识价值。被列为明代“四大奇书”之首。

很多同学只是听过《金瓶梅》这本书,而没有看过,小编表示也没有看过。今天就用Python快速帮我们了解这本奇书里的内容,找回自信。


安装wordcloud包

如果有同学像我一样,安装了Python2和3双版本的话,执行命令需要指明要执行的环境版本号。安装命令很简单:

pip3 install wordcloud

这就完成了安装。

做词云

首先读入小说文件,然后传入WordCloud即可。

from wordcloud import WordCloud as WC

# 读取小说内容
file = 'C:/Users/26015/Desktop/金瓶梅/金瓶梅.txt'
with open(file, 'r', encoding='utf-8'as f:
    content = f.read()

# 产生词云
wordcloud = WC(
    font_path='C:/Windows/Fonts/simkai.ttf'
    , width=1400
    , height=700
).generate(content)

# 保存图片
wordcloud.to_file("金瓶梅.jpg")

参数说明:

  • font_path:中文字体路径,windows自带有,在C:\Windows\Fonts下有很多字体,根据自己的喜好选择,这个网站也能免费下载各种特色字体;

  • width:图片宽度;

  • height:图片高度;

是不是很简单,核心代码就2行,生成的词云图片是这样。

西门庆在这个小说中戏份最多了,其次就是月娘、妇人、金莲等人了。


结合jieba分词

可以看到,上面使用wordcloud的分词效果不好,”西门庆道“应该被分成2个词:西门庆、道,这里使用著名的中文分词引擎:结巴分词,安装也很简单:

pip3 install jieba

即可完成安装。

Python代码如下:

from wordcloud import WordCloud as WC
import jieba

# 读取小说内容
    file = 'C:/Users/26015/Desktop/金瓶梅/金瓶梅.txt'
    with open(file, 'r', encoding='utf-8'as f:
        content = f.read()

    cut_content = jieba.cut(content.strip())

    # 读取停用词
    stopwords = stopwordslist('stopwords.txt')

    outstr = ''
    for word in cut_content:
        if word not in stopwords and word != '\t':
            outstr = outstr + word + " "

    # 产生词云
    wordcloud = WC(
        font_path='C:/Windows/Fonts/simkai.ttf'
        , width=1400
        , height=700
    ).generate(outstr)
    # 保存图片
    wordcloud.to_file("金瓶梅2.jpg")

这里分词效果好了,引入了停用词,把一些不重要的词去掉,词云图更好了。


jieba分词用法可以看前面一篇文章:

小结:jieba分词的Python与R语言基础用法介绍


代码已经上传至Github,点击阅读原文即可访问。


猜你可能喜欢

Python装饰器讲解通俗易懂

Python的Flask模块开发一个web入门项目

几种经典的排序算法,你都能写出来吗?

程序员必备的一些数学基础知识


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存