词云图可视化python_python 可视化 词云图
#-*- coding: utf-8 -*-
from pandas importread_csvimportnumpy as npfrom sklearn.datasets.base importBunchimport pickle #导入cPickle包并且取一个别名pickle #持久化类
from sklearn.feature_extraction.text importTfidfVectorizerimportjiebaimport operator #排序用
from sklearn importmetricsfrom sklearn.externals importjoblibimportxlwt#导入wordcloud模块和matplotlib模块
importwordcloudimportmatplotlib.pyplot as pltfrom scipy.misc importimread'''读取停用词'''
def_readfile(path):
with open(path,"rb") as fp:
content=fp.read()returncontent'''读取bunch对象'''
def_readbunchobj(path):
with open(path,"rb") as file_obj:
bunch=pickle.load(file_obj)returnbunch'''写入bunch对象'''
def_writebunchobj(path, bunchobj):
with open(path,"wb") as file_obj:
pickle.dump(bunchobj, file_obj)defbuildtestbunch(bunch_path, art_test):
bunch= Bunch(contents=[])#label=[],#=============================================================================#for item1 in testlabel:#bunch.label.append(item1)#=============================================================================
#testContentdatasave=[] #存储所有训练和测试数据的分词
for item2 inart_test:
item2=str(item2)
item2= item2.replace("\r\n", "")
item2= item2.replace(" ", "")
content_seg=jieba.cut(item2)
save2= ''
for item3 incontent_seg:if len(item3) > 1 and item3 != '\r\n':#testContentdatasave.append(item3)
save2 = save2 + "," +item3
bunch.contents.append(save2)
with open(bunch_path,"wb") as file_obj:
pickle.dump(bunch, file_obj)print("构建测试数据文本对象结束!!!")defvector_space(stopword_path, bunch_path, space_path):
stpwrdlst= _readfile(stopword_path).splitlines() #读取停用词
bunch = _readbunchobj(bunch_path) #导入分词后的词向量bunch对象
#构建tf-idf词向量空间对象
tfidfspace = Bunch(label=bunch.label, tdm=[], vocabulary={})#权重矩阵tdm,其中,权重矩阵是一个二维矩阵,tdm[i][j]表示,第j个词(即词典中的序号)在第i个类别中的IF-IDF值
#使用TfidVectorizer初始化向量空间模型
vectorizer = TfidfVectorizer(stop_words=stpwrdlst, sublinear_tf=True, max_df=0.5, min_df=0.0001, use_idf=True,
max_features=15000)#print(vectorizer)
#文本转为词频矩阵,单独保存字典文件
tfidfspace.tdm =vectorizer.fit_transform(bunch.contents)
tfidfspace.vocabulary=vectorizer.vocabulary_#创建词袋的持久化
_writebunchobj(space_path, tfidfspace)print("if-idf词向量空间实例创建成功!!!")deftestvector_space(stopword_path, bunch_path, space_path, train_tfidf_path):
stpwrdlst= _readfile(stopword_path).splitlines() #把停用词变成列表
bunch =_readbunchobj(bunch_path)
tfidfspace= Bunch(tdm=[], vocabulary={})#label=bunch.label,
#导入训练集的TF-IDF词向量空间 ★★
trainbunch =_readbunchobj(train_tfidf_path)
tfidfspace.vocabulary=trainbunch.vocabulary
vectorizer= TfidfVectorizer(stop_words=stpwrdlst, sublinear_tf=True, max_df=0.7, vocabulary=trainbunch.vocabulary,
min_df=0.001)
tfidfspace.tdm=vectorizer.fit_transform(bunch.contents)
_writebunchobj(space_path, tfidfspace)print("if-idf词向量空间实例创建成功!!!")if __name__=="__main__":
Sdata=[]
art=[]'''============================先导入数据=================================='''file_test= 'F:/goverment/text analyse/type_in.csv'dataset=read_csv(file_test)
Sdata=dataset.values[:, :]
Sdata=Sdata.tolist()for line inSdata:
art.append(line[1])#line[1]为文本
print(len(Sdata))'''==========================================================tf-idf对Bar进行文本特征提取============================================================================'''
#导入分词后的词向量bunch对象
test_bunch_path = "F:/goverment/text analyse/trainbunch.bat"test_space_path= "F:/goverment/text analyse/traintfdifspace.dat"stopword_path= "F:/goverment/text analyse/hlt_stop_words.txt"
'''============================================================tf-idf对Sart进行文本特征提取=============================================================================='''buildtestbunch(test_bunch_path, art)
testvector_space(stopword_path, test_bunch_path, test_space_path, test_space_path)
test_set=_readbunchobj(test_space_path)'''测试数据'''
#获取已知 id 找 文本
txtcut=[] #存放所有词
dic={}for i intest_set.vocabulary.keys():
txtcut.append(i)
dic[test_set.vocabulary[i]]=i#print(dic)
#print(test_set.tdm)
#print(test_set.tdm[0])
#print(dir(test_set))
#print(test_set.vocabulary)
#print(dir(test_set.tdm))
#print(Sdata)
#print(nonzero[1])
'''final里放的是不超过15的词'''
#print(Sdata)
final=[]for k in range(len(Sdata)):#遍历每一条文本
nonzero=test_set.tdm[k].nonzero()
ls=[]
ls.append(Sdata[k][0])
num=0for i in range(len(nonzero[1])):
num=num+1b=test_set.tdm[k, nonzero[1][i]]*100 #test_set.tdm[k, nonzero[1][i]]是第k条文本中,第i个权重非零的词权重
a= dic[nonzero[1][i]] +" "+str(round(b,2))+"%"ls.append(a)if num==15:breakfinal.append(ls)'''画词云图'''fig= plt.figure(figsize = (15,15))
cloud= wordcloud.WordCloud(font_path='STXINGKA.TTF',mask=imread('water3.png'),mode='RGBA',
background_color=None).generate(' '.join(txtcut))
img= imread('water3.png')
cloud_colors=wordcloud.ImageColorGenerator(np.array(img))
cloud.recolor(color_func=cloud_colors)
plt.imshow(cloud)
plt.axis('off')
plt.savefig('watercloud3.png',dpi=400)
plt.show()
myexcel=xlwt.Workbook()
sheet= myexcel.add_sheet("sheet1")
si=-1sj=-1
for line infinal:
si=si+1sj=-1
for i inline:
sj=sj+1sheet.write(si,sj,str(i))
myexcel.save("各条分词.xls")#把id存好
myexcel =xlwt.Workbook()
sheet= myexcel.add_sheet("sheet2")
p=0for i intest_set.vocabulary.keys():
sheet.write(p,0,i)print(i)
sheet.write(p,1,str(test_set.vocabulary[i]))
p=p+1myexcel.save("词汇id.xls")
词云图可视化python_python 可视化 词云图相关推荐
- Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析
Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...
- 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化
目录 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化 安装jieba库 安装wordcloud 打开pycharm 编写代码 利用jieba库和wordcloud库 ...
- python 词云 fontpath_Python酷炫词云图原来可以这么玩?
作者:费弗里 博客地址: https://www.cnblogs.com/feffery/p/11842798.html 说明:本文经作者授权转载,禁止二次转载 本文对应脚本及数据已上传至我的Gith ...
- python 10行代码生成词云图片(基础词云、形状词云)
一.词云简介 词云,也称为文本云或标签云.在词云图片中,关键词在文本中出现的次数越多,则表示该词越重要,其在词云中所占面积区域也越大,出现次数越少,所占面积越小.词云可任意更换背景为白色的图形以改变词 ...
- python 词云_python数据可视化——词云
阅读本文需要4分钟 词云百度百科:"词云"就是对网络文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或"关键词渲 ...
- NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化、过程全记录
NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化 目录 输出结果 代码设计思路 代码运行过程全记录 输出结果 代码设计思路 代码运行过程全记录 3081 or ...
- Python 数据可视化:WordCloud 词云的构建
WordCloud 官方文档:https://amueller.github.io/word_cloud/index.html WordCloud GitHub 地址:https://github.c ...
- Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...
- 基于中文维基百科的词向量构建及可视化
你将使用Gensim和维基百科获得你的第一批中文词向量,并且感受词向量训练的基本过程. 词向量原理详解请参考: 词向量技术原理及应用详解(一) 词向量技术原理及应用详解(二) 词向量技术原理及应用详解 ...
最新文章
- Thymeleaf 常用属性
- 阅读代码和修改别人代码的一些技巧以及注意事项
- Arrays.sort和Collection.sort分别使用什么排序来实现的
- reactjs组件的生命周期
- hosts文件中同一个域名两个IP的解析顺序
- MSSQL中实现多表更新
- mysql赋予权限的时候报错_想要远程连接MySQL,赋予root权限没用啊?一直报语法错误...
- 基于CSS3的3D旋转效果
- PowerDesigner之PDM(物理概念模型)
- 华为核心合作伙伴极力推荐的开源ERP使用教程:Odoo库存管理应用
- 在jmeter中怎么提取数据_Jmeter正则提取请求响应数据
- java调用sqluldr_java 使用 oracle sqluldr2 快速导出数据文件
- 5分钟在大米云上基于WordPress搭建一个博客
- 怎样在服务器找回网站后台密码,宝塔面板忘记后台账号密码怎么找回 一条命令轻松搞定...
- CPN Tools 入门(一)
- PayPal的一些注意事项
- NCNN+Int8+yolov5部署和量化
- 抖音引流必须知道的三个要点!!!!
- js+css+html 抽奖页面
- oracle 导出数据 utl,oracle 使用 UTL_FILE 导出表数据到txt文件
热门文章
- linux上pyenv卸载,Linux环境下的 pyenv的安装
- mysql 6.3 入门_Mysql 入门小练习
- 将文字自动转为banner打印形式的工具
- 达梦数据库操作记录_达梦数据库常用功能及命令记录 -- 持续更新
- 基于php语言的 选课系统,基于C语言实现学生选课系统
- 定义一个圆类java用echo_正则表达式中圆括号的作用
- mysql 执行计划详解_mysql explain执行计划详解
- c# timer 销毁_如果表单应用程序关闭C#,如何防止发生Timer Elapsed事件
- mysql配置参数调优(8GB内存和64GB内存)
- jquery的contains如何实现精准匹配