#-*- 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 可视化 词云图相关推荐

  1. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  2. 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化

    目录 利用jieba库和wordcloud库,进行中文词频统计并利用词云图进行数据可视化 安装jieba库 安装wordcloud 打开pycharm 编写代码 利用jieba库和wordcloud库 ...

  3. python 词云 fontpath_Python酷炫词云图原来可以这么玩?

    作者:费弗里 博客地址: https://www.cnblogs.com/feffery/p/11842798.html 说明:本文经作者授权转载,禁止二次转载 本文对应脚本及数据已上传至我的Gith ...

  4. python 10行代码生成词云图片(基础词云、形状词云)

    一.词云简介 词云,也称为文本云或标签云.在词云图片中,关键词在文本中出现的次数越多,则表示该词越重要,其在词云中所占面积区域也越大,出现次数越少,所占面积越小.词云可任意更换背景为白色的图形以改变词 ...

  5. python 词云_python数据可视化——词云

    阅读本文需要4分钟 词云百度百科:"词云"就是对网络文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或"关键词渲 ...

  6. NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化、过程全记录

    NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化 目录 输出结果 代码设计思路 代码运行过程全记录 输出结果 代码设计思路 代码运行过程全记录 3081 or ...

  7. Python 数据可视化:WordCloud 词云的构建

    WordCloud 官方文档:https://amueller.github.io/word_cloud/index.html WordCloud GitHub 地址:https://github.c ...

  8. Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云

    一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...

  9. 基于中文维基百科的词向量构建及可视化

    你将使用Gensim和维基百科获得你的第一批中文词向量,并且感受词向量训练的基本过程. 词向量原理详解请参考: 词向量技术原理及应用详解(一) 词向量技术原理及应用详解(二) 词向量技术原理及应用详解 ...

最新文章

  1. Thymeleaf 常用属性
  2. 阅读代码和修改别人代码的一些技巧以及注意事项
  3. Arrays.sort和Collection.sort分别使用什么排序来实现的
  4. reactjs组件的生命周期
  5. hosts文件中同一个域名两个IP的解析顺序
  6. MSSQL中实现多表更新
  7. mysql赋予权限的时候报错_想要远程连接MySQL,赋予root权限没用啊?一直报语法错误...
  8. 基于CSS3的3D旋转效果
  9. PowerDesigner之PDM(物理概念模型)
  10. 华为核心合作伙伴极力推荐的开源ERP使用教程:Odoo库存管理应用
  11. 在jmeter中怎么提取数据_Jmeter正则提取请求响应数据
  12. java调用sqluldr_java 使用 oracle sqluldr2 快速导出数据文件
  13. 5分钟在大米云上基于WordPress搭建一个博客
  14. 怎样在服务器找回网站后台密码,宝塔面板忘记后台账号密码怎么找回 一条命令轻松搞定...
  15. CPN Tools 入门(一)
  16. PayPal的一些注意事项
  17. NCNN+Int8+yolov5部署和量化
  18. 抖音引流必须知道的三个要点!!!!
  19. js+css+html 抽奖页面
  20. oracle 导出数据 utl,oracle 使用 UTL_FILE 导出表数据到txt文件

热门文章

  1. linux上pyenv卸载,Linux环境下的 pyenv的安装
  2. mysql 6.3 入门_Mysql 入门小练习
  3. 将文字自动转为banner打印形式的工具
  4. 达梦数据库操作记录_达梦数据库常用功能及命令记录 -- 持续更新
  5. 基于php语言的 选课系统,基于C语言实现学生选课系统
  6. 定义一个圆类java用echo_正则表达式中圆括号的作用
  7. mysql 执行计划详解_mysql explain执行计划详解
  8. c# timer 销毁_如果表单应用程序关闭C#,如何防止发生Timer Elapsed事件
  9. mysql配置参数调优(8GB内存和64GB内存)
  10. jquery的contains如何实现精准匹配