最近学习机器学习课程,学到文本分类就研究了下词云如何处理,写下代码和文件以便帮助更多的人,个人变成基础极其薄弱,如有问题请自行修改相关代码。

准备工作

使用命令安装jieba 分词,这里已经帮大家写好了阿里云的镜像复制使用即可。

pip install jieba -i https://mirrors.aliyun.com/pypi/simple/

另外一个下载下我的文件,我这里使用的是长篇小说《白鹿原》,有需要的可以使用。

文件中包含了:文本(白鹿原.txt)(废都.txt)、jieba自定义词典(dictionary.txt)、调停词4个(cn_stopwords.txt(哈工大)、hit_stopwords.txt、baidu_stopwords.txt、scu_stopwords.txt)、词云背景图(bailuyuan.png)。
https://download.csdn.net/download/microspore/13626754

处理文本

处理文档分文三部分:自定义字典、文本处理、停用词处理。
**自定义字典。**主要是补充jieba的词典,分词时会将自定义词典里的词进行区分开,注意定义时是txt格式单个字占一行,护体详见我文本。
**文本处理。**主要是利用jieba,cut将文本区分开,当然jieba有三种分词方式,具体可以看一些官方文档介绍。
**停用词处理。**停用词处理这里不是在jieba中屏蔽停用词,而是词云中屏蔽停用词。
这里需要注意的是读取文本时,可能有一些编码错误,如果是utf-8,就不需要增加编码了,如果是GBK,就需要了。

报错 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x9c in position 28: illegal multibyte sequence

另外分词时,会分出单个词,很多时候单个词没必要,可以将单个词进行屏蔽。

词云

以下是词云的相关参数,这里说一点如果字体不清晰就调整scale参数。
另外如果提示,则说明可能字体问题,报以下错误

OSError: cannot open resource

以下是词云的相关参数:

这里是引用某位兄台博客 https://blog.csdn.net/kouyi5627/article/details/80530569
font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = ‘黑体.ttf’
width : int (default=400) #输出的画布宽度,默认为400像素
height : int (default=200) #输出的画布高度,默认为200像素
prefer_horizontal : float (default=0.90) #词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )
mask : nd-array or None (default=None) #如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread(‘读取一张图片.png’),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。
scale : float (default=1) #按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍
min_font_size : int (default=4) #显示的最小的字体大小
font_step : int (default=1) #字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差
max_words : number (default=200) #要显示的词的最大个数
stopwords : set of strings or None #设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS
background_color : color value (default=”black”) #背景颜色,如background_color=‘white’,背景颜色为白色
max_font_size : int or None (default=None) #显示的最大的字体大小
mode : string (default=”RGB”) #当参数为“RGBA”并且background_color不为空时,背景为透明
relative_scaling : float (default=.5) #词频和字体大小的关联性
color_func : callable, default=None #生成新颜色的函数,如果为空,则使用 self.color_func
regexp : string or None (optional) #使用正则表达式分隔输入的文本
collocations : bool, default=True #是否包括两个词的搭配
colormap : string or matplotlib colormap, default=”viridis” #给每个单词随机分配颜色,若指定color_func,则忽略该方法
random_state : int or None #为每个单词返回一个PIL

词频统计

遍历所有值进行统计,最后偷懒使用pandas转成txt。

以下为源代码

import  jieba   #jieba分词包
from PIL import Image #图片的处理
import matplotlib.pyplot as plt # 主要进行词云绘图
import numpy as np  #进行转换
import  wordcloud  #词云
import pandas as pd #保存词频
#使用jieba对文本进行处理
#读取自定义词典。
jieba.load_userdict(r"C:\Users\Administrator\Desktop\bailuyaun\dictionary.txt") #读取自定义词典
#进行文本处理
file=open(r"C:\Users\Administrator\Desktop\bailuyaun\白鹿原.txt",encoding ="utf-8")#打开要制作词云的文本
text=file.read()#读取文本
file.close()#关闭文件
wordlist = list(jieba.cut(text)) #进行分词处理,这里使用cut,
print(type(wordlist))
wordlist = [word for word in wordlist if len(word)>1]# 该条主要是为了排除一个字符以下的词,没有这条文本将会分出都是单字。#print(type(wordlist))
word = " ".join(wordlist)#该条将分好的列表词,转为空格分隔的字符串
#print(type(word))#停用词处理
stopfile=open(r"C:\Users\Administrator\Desktop\bailuyaun\cn_stopwords.txt",encoding ="utf-8")#读取停用词
stopword=stopfile.read().split("\n")#读取的停用词都带"\n"需要进行删除
stopfile.close #关闭文档# 词云处理
imgpath=np.array(Image.open( r"C:\Users\Administrator\Desktop\bailuyaun\bailuyuan.png"))#定义下词云背景图片路径
wc = wordcloud.WordCloud( font_path='C:\Windows\Fonts\STSONG.TTF',  #注意不一定有这个字体自己到 fonts下找个即可。background_color='white',mask=imgpath,max_words=200,max_font_size=100,width=900,height=900,scale=17,random_state=5,stopwords=stopword)
wc.generate(word)#传入需画词云图的文本
#对词云进行展示
plt.imshow(wc)plt.axis("off")# 隐藏图像坐标轴
plt.savefig(r"bar_img.png", dpi=400)#保存图片
plt.show()# 展示图片
plt.close()#关闭图片
#词频统计
counts = {} # 新建立一个空的字典
for i in wordlist: # 循环遍历所有的单词counts[i] = counts.get(i,0)+1 # 返回word这个键对应的值,只要是出现的单词都默认值为 1,下次如果再遇到就加一
items = list(counts.items()) # 将字典中的值都放入列表中,这个时候应该是一个元组类型的列表
#对列表大到小排序
items.sort(key=lambda x:x[1],reverse=True) # lambda关键字表示按照后面指定的方式进行排序,这里表示元组中的第二个元素,也就是单词出现的次数
# for i in range(500): # 循环的打印出出现频率最高的前20个单词
#     word,count = items[i]
#     print("{0:<10}{1:>5}".format(word,count))
# print(items)
#使用pandas将表格转为txt
data=pd.DataFrame(items)
data.to_csv(r"C:\Users\Administrator\Desktop\bailuyuanlist.txt",sep='\t',index=0,header=0)

超级详细使用jieba分词用wordcloud制作词云并进行词频统计实例相关推荐

  1. 【数据可视化】利用WordCloud制作词云

    利用wordcloud制作词云 1.jieba分词 链接:https://github.com/fxsjy/jieba "结巴"中文分词是一个使用起来非常方便的 Python 中文 ...

  2. python学习笔记第一篇:Python3使用wordcloud制作词云报错OSError: cannot open resource和制作出的词云图乱码问题

    wordcloud制作词云时有关字体设置参数font_path = ""使用: 1.当使用电脑中不存在的字体时,运行程序会报错OSError: cannot open resour ...

  3. Python 3.6 使用wordcloud制作词云(可设背景图像)

    在python 3.6环境中 使用wordcloud模块制作词云,首先在安装wordcloud模块,安装方法有几个,可参考安装方法与可能会遇到的问题 代码: #!/usr/bin/env python ...

  4. python——读取docx文档wordcloud生成词云并进行词频统计

    文章目录 环境准备 导入库 读取docx并进行分词 词频 词云 设置背景图片(可选) 生成词云 保存词云并显示 环境准备 # 不是docx,是python-docx!!!!!!! pip instal ...

  5. plt图片输出 python_利用Python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  6. 利用python制作漂亮的词云图_利用python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  7. python爬取腾讯视频《斗罗大陆》弹幕并制作词云(WordCloud)

    最近闲来无事,就用前段时间学习的jieba分词和词云WordCloud,以及网上看的python爬虫爬取了<斗罗>最燃的107集弹幕,结合做了词云分析,从这个过程中确实学到了不少技术,下面 ...

  8. python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云

    目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...

  9. python爬取胡歌相关视频弹幕,分析并制作词云

    养成习惯,先赞后看!!! 目录 1.分析网页 2.爬虫+jieba分词+制作词云 2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https:// ...

最新文章

  1. JS 总结之原型继承的几种方式
  2. 对于容斥原理反演的思考和总结
  3. linux错误自动报告工具,linux – 关闭abrt的电子邮件通知(自动错误报告工具)
  4. java回显怎么实现_Java实现简单的server/client回显功能
  5. 设计模式 里氏替换原则
  6. (c语言)求满足表达式1+2+3+.......+n<=1000的最大的n
  7. 用栈实现计算器c语言报告,利用栈实现c语言计算器
  8. 移动HS8545M光猫密码
  9. TI公司电话面试 ---- 问题回忆录 2012年8月20
  10. C++入门经典 Ivor Horton 第3版
  11. ad域时间源配置_Windows Server 2008 R2 域控制器的时间同步配置
  12. 达人评测 i51240p和r55625u哪个好
  13. BlueHost独立服务器受站长欢迎的原因
  14. 计算机后台 鼠标灯不亮,开机一直黑屏键盘鼠标灯不亮
  15. Cron(Crontab)--使用/教程/实例
  16. 集装箱堆场装卸设备安全管理浅谈
  17. 中国大学生编程第一人-楼天城 | 世界顶尖黑客、曾被百度、脸书谷歌青睐
  18. 西门子PLC OPC配置及开发
  19. GO-获取斗鱼弹幕消息
  20. 【案例 6-4】斗地主洗牌发牌

热门文章

  1. MySQL数据库——MySQL LIMIT:限制查询结果的条数
  2. (笔记)Chrome浏览器基于Chromium内核的浏览器 解决卡顿的方法
  3. 常⻅的 ORM 框架有哪些?
  4. 线代[2]|对极易混淆概念的梳理—线性相关与线性无关、极大线性无关部分组与秩与基础解系、向量空间的基与维数
  5. 数学基础task07 多元微分学
  6. 知乎高赞:Java和嵌入式,选哪个?
  7. symbian 模拟器 中文显示
  8. NBIOT模块正常工作模式的三种工作状态(基于BC26)
  9. vue 可拖拽组件的实现
  10. HACK学习黑帽子Python--漏洞检测脚本快速编写