对于喜欢的书,想更多的了解它。利用Python的jieba库和wordcloud库,可以统计书中的高频词并生成词云,小试了两本书:一本是《百年孤独》,另一本是近期读完的一本《山茶文具店》。

  • 库准备

下载对应python版本及操作系统的安装包,安装好jieba库和wordcloud库,可参考博文。

wordcloud官网,也可参考这篇中文博客。

jieba的github介绍及用例,中文介绍很详尽。

  • Input输入文件准备

为了生成词云,需要先准备好下图中的红字文件(运行本文的代码后将生成绿字文件)。

  1. 小说文本——范晔版百度网盘
  2. 停用词——网络下载指路
  3. 词云字体——使用本机微软字体(C:\Windows\Fonts)
  4. 词云轮廓mask——在线制作工具(选择白背景jpeg格式保存)
  5. 自定义词典(使人名等专有名词不拆分),下附:
梅尔基亚德斯
何塞·阿尔卡蒂奥·布恩迪亚
乌尔苏拉
何塞·阿尔卡蒂奥
奥雷里亚诺·布恩迪亚
阿玛兰妲
丽贝卡
阿尔卡蒂奥
奥雷里亚诺·何塞
奥雷里亚诺·特里斯特
蕾梅黛丝
何塞·阿尔卡蒂奥第二
奥雷里亚诺第二
何塞·阿尔卡蒂奥
雷纳塔·蕾梅黛丝
阿玛兰妲·乌尔苏拉
奥雷里亚诺·巴比洛尼亚
奥雷里亚诺
皮埃特罗·克雷斯皮
费尔南达
赫里内勒多·马尔克斯
马格尼菲科·比斯巴勒
堂阿波利纳尔·摩斯科特
奥雷里托
皮埃特罗·克雷斯皮
佩特拉·科特斯
庇拉尔·特尔内拉
桑塔索菲亚·德拉·彼达
  • 代码实现
#-*- coding: utf-8 -*-
#.py文件名不能和引用的库名重复
"""
Created on Sun Mar  8 11:01:44 2020@author: toto
"""import os,jiebafrom wordcloud import WordCloud
from PIL import Image
import numpy as npcwd = os.getcwd()#当前工作路径#os.path.join(cwd,文件名)== 文件名
jieba.load_userdict("UserDict.txt")#加载自定义词典文本book = "Solitude.txt"#处理的书籍文本,注意检查不要乱码
stop_word = "stop_word.txt"#停用词文本
top_word = "TopWord.txt"#高频词文本type_pic = "Marquez.jpeg"#白背景词云掩膜图片
cloud = "Solitudecloud.png"#词云图##——分词——
#读取txt书籍文件
fb = open(book,'r',encoding='UTF-8')
book_txt = fb.read()#读取txt停用词文件
ff = open(stop_word,'r',encoding='UTF-8')
stop_word_txt = ff.read()#拆分词语存入列表
#jieba.add_word("何塞·阿尔卡蒂奥·布恩迪亚")
word_ls = jieba.lcut(book_txt,cut_all=False,HMM=True) # 精确模式
#print(word_ls)##——统计词频——
word_dict = {}for i in word_ls:if i not in stop_word_txt:word_dict[i] = word_dict.get(i, 0) + 1#print(word_dict)word_ls = sorted(word_dict.items(), key=lambda x: x[1], reverse=True)#变成以(词语,次数)为元组的列表
print(word_ls[0:101])#写入高频词文本
#fw = open(top_word,"wt",encoding="utf-8")
top_word = []
for j in range(200):top_word.append(word_ls[j][0])top_word_txt = " ".join(top_word)     ##——生成词云——
Marquez_mask = np.array(Image.open(type_pic))
wordcloud_Solitude = WordCloud(background_color="white", max_words=200,# 添加遮罩层mask=Marquez_mask,# 生成中文字体font_path = os.path.join(cwd,"SIMKAI.TTF"),contour_width=3,min_font_size=2,#max_font_size=40,)wordcloud_Solitude.generate(top_word_txt)#注意函数参数是列表,不是txt文本
wordcloud_Solitude.to_file(cloud)fb.close()
ff.close()
#拓展——jieba自定义词典正则表达式匹配(如何塞·阿尔卡蒂奥·布恩迪亚)
  • 生成图

  • 拓展

考虑到《百年孤独》中人名的特殊性,重名的阿尔卡蒂奥和奥雷里亚诺们,修改jieba库源码,使包含特殊字符" · "的人名不拆分(如何塞·阿尔卡蒂奥·布恩迪亚),实现jieba自定义词典的正则表达式匹配。

革命尚未成功,同志仍需努力!

Pyhton生成《百年孤独》高频词词云相关推荐

  1. 高频词 词云图 文本重心 聚类

    现有某大闸蟹电商负面评论5000条,txt文本,一行一条,举例如下,任务是要对其进行文本分析.读入所有文档并分词,统计词频,找到高频词,确定特征集,为每一条评论生成向量表示,计算一下不同评论之间的距离 ...

  2. python人物关系可视化百年孤独_百年孤独LDA主题分析

    本文针对百年孤独小说评论的主题分析 词云图 代码: install.packages("jiebaRD") install.packages("jiebaR") ...

  3. ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...

    最近项目需要,实现文本的词频分析,折腾了几天才完成任务,有点成就感,最后整理总结一下这部分的内容,希望更多同僚受益. 一.使用前准备 环境:Python3.6 安装结巴:pip install ji ...

  4. 评论安装_再也不用手动复制粘贴收集Taptap游戏评论了,还可以制作好看的热词词云图~...

    日常工作中会需要对玩家的一些评价进行整理分析,曾经人肉扫.手工采蛮痛苦的,所以,今天TA来了~ 05 目录: 1.引入需要的库 2.评论内容采集 3.热词词云制作 4.程序跑起来 预览 同学们,猜猜以 ...

  5. 孤独来自欲望——《百年孤独》读后感

    最近这段时间终于看完了加西亚·马尔克斯的<百年孤独>,之所以用"终于"这个词,是因为之前不是一次地接触过这本书,第一次是纯粹的听说这本书出名而来,被作者反复使用的人名打 ...

  6. 340亿美元买下红帽!IBM百年以来最大手笔,云市场翻身之战!

    340亿美元买下红帽!IBM百年以来最大手笔,云市场翻身之战! https://mp.weixin.qq.com/s/_soNkAp4kI0beG7N4fZZXw [新智元导读]IBM将以现金收购Re ...

  7. apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS

    背景 阿里云OSS提供了一个Webpack插件,可在Webpack打包结束后将webpack生成的文件自动上传到阿里云OSS中 下面看看在CabloyJS中如何使用该插件 新建项目,并配置MySQL连 ...

  8. 一部《再忆王家沱》讲述百年重庆历史,堪称中国版《百年孤独》

    重庆作为近年来火爆全国的热门旅游城市,吸引了国内外游客纷纷前往打卡.而弹子石老街作为国家AAAA级景区,也凭借重庆独有的"九级坡地"城市地貌和文化领域的大制作,成为游客到渝必游之地 ...

  9. 兔年伊始谈闲书:三体-乌合之众-百年孤独 和《猫城记》(随笔)

     引言  " 各位读者,我们都兔年大吉,新春快乐. 我本想写一篇<公有云换帅转舵后的错误经验和正经歪念>,但刚过年就炮火味十足,觉得有失体面.所以就写了篇读书的散记杂记. 本文和 ...

最新文章

  1. linux下利用openssl来实现证书的颁发(详细步骤)--转载和修改
  2. 这些用来审计 Kubernetes RBAC 策略的方法你都见过吗?
  3. 干货!谷歌推荐的技术能力提升指南
  4. python导入pandas出错_构建d时如何解决python-pandas导入错误
  5. tf.arg_min
  6. tensorflow中的seq2seq例子为什么需要bucket? 有关tensorflow 的sequence2sequence例子,为什么需要用到buckets,rnn不是可以处理任意长度的数据吗
  7. HTTP 错误 500.21 - Internal Server Error(转)
  8. elasticsearch 6.1.1 transport jar
  9. AllTray-将办法最小化到琐细托盘
  10. 本地调试微信接口方法
  11. mariadb mysql 配置文件_Mariadb配置文件优化参数(仅供参考)
  12. [详解]Linux的目录里都装些啥??
  13. js margin作用到父元素_子元素的 margin-top 传递给了父元素
  14. 郝斌——数据结构笔记(数组、链表、栈、队列)(递归)
  15. 饿了么UI组件库中,Upload组件上传闪动的解决
  16. pygame简易超级玛丽制作
  17. 复星联合超越保2020,升级了,但更便宜!
  18. 主机与Dynamips相连的折中解决方法
  19. 页面打印、打印预览、页面设置
  20. 【开源免费】国产10万级etl作业调度软件 taskctl 6.0 永久授权

热门文章

  1. 【开源】F2FS技术拆解
  2. 量子相干和量子纠缠犹如同一硬币的两面般密不可分
  3. 5-基于51单片机步进电机的控制研究(原理图工程+仿真工程+答辩论文+答辩PPT)
  4. 用Java写了一个类QQ界面聊天小项目,可在线聊天(附源码)
  5. 作为程序员,你可以不知道技术网站,但是不能不知道什么是a站、b站、c站、d站、e站、f站、g站、h站…z站?
  6. python之域名证书检测
  7. android 创意app,创意无止境!17款让人脑洞大开的APP推荐
  8. ERP企业资源计划系统,ERP实施进程主要包括哪几个阶段?
  9. java 傅里叶变换 频谱_傅里叶变换分析频谱(FFT)
  10. HTML5 Plus 移动 App开发入门