Python可视化词云图
发布时间
阅读量:
阅读量
一、绘制词云时常用库及函数的意义
1、dir库
1)查看函数的用法
print(dir(函数))
2、os库:对文件和目录进行操作,重命名文件,添加,删除,复制目录以及文件等。
1)获得当前路径
os.getcwd()
2)修改当前脚本所在的路径
os.chdir('要去的路径')
3、wordcloud库:可以根据文本中词语出现的频率等参数绘制词云
(1)向WordCloud对象中加载文本txt
WordCloud.generate(txt)
Pyplot 是 matplotlib 的一个子库,在数据可视化领域非常常用。它提供了一套简便的界面让用户生成二维图表。当需要绘图时,默认导入 matplotlib.pyplot 并将其命名为 plt
(1)作图
plt.imshow('变量')
(2)显示出做好的图
plt.show()
(3)坐标轴的显示与否
plt.axis('on/off')
二、绘制词云的步骤以及可能的报错
Step1 :建立txt文档,并导入需要生成词云的文章
Step2 :检查python环境中有无wordcloud包
from wordcloud import WordCloud
text=open('China145.txt','r').read()
可能报错:意思是没有wordcloud包
ModuleNotFoundError: No module named 'wordcloud
Step3 :下载wordcloud包
pip install wordcloud
Step4 :转换到txt文件所在路径
import os
os.chdir('txt文件所在路径')
print(os.getcwd())
可能报错:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
原因是:文件路径要用“/”或者“\ ”分隔开,不可以用“\”
Step5 :绘图
import matplotlib.pyplot as plt
from wordcloud import WordCloud
text=open('txt文件名','r',encoding='utf-8').read()
w=WordCloud().generate(text)
plt.imshow(w)
plt.show()
出现问题:没有设置字体,显示不出来
解决办法:加上一段代码
w=WordCloud(font_path=font).generate(text)
font='找到系统自带的字体的路径,选择要用的字体名并加上后缀'
(例如:'c:\Windows\Fonts\AdobeHeitiStd-Regular.otf')
Step6 :修饰词云图

三、使用jieba库进行分词并统计有用词的词频
1、jieba三种模式:有什么区别?
import jieba
words = "他来到了网易大厦。"
print("/".join(jieba.cut(words))) # 精简模式,返回一个列表类型的结果
print("/".join(jieba.cut(words, cut_all=True))) # 全模式,使用 'cut_all=True' 指定
print("/".join(jieba.cut(words, cut_all=False))) #精确模式
print("/".join(jieba.cut_for_search(words))) # 搜索引擎模式
join():用于将序列中的元素以指定的字符连接成新的字符串
2、jieba.posseg():用于查看分词词性
import jieba.possey as pseg
words=pseg.cut('中国国家领导人在开会')
for key in words:
print(key.word,key.flag)
3、jieba.load_userdict('文件名'):用于添加指定文件名的词典
Step1 :分词并统计词数
import jieba
with open('文件名','r') as f:
renmin=f.read()
jieba.load_userdict('本地词典')
seg_list=jieba.cut(renmin.cut_all=False) #精确分词
tf={}
for seg in seg_list:
if seg in tf:
tf[seg]+=1
else:
tf[seg]=1 #将分词表放入字典里计数
ci=list(tf.keys())
print(len(ci))
Step2 :删掉停用词,并统计剩下的词与其词频
with open('停用词表','r',encoding='utf-8') as ft:
stopword=ft.read()
for seg in ci:
if 不要词的条件1 or 不要词的条件2:
tf.pop(seg)
print(tf)
print(len(tf))
Step3 :将词与词频从字典中调换位置
倒数第二排没看懂,是怎么换的键和值的顺序
ci,num,data=list(tf.keys()),list(tf.values()),[]
for i in range(len(tf)):
data.append((num[i],ci[i]))
data.sort() #sort()默认按升序排列,若按降序,括号里加上reverse=False
tf_sorted={}
for i in range(len(data)):
tf_sorted[data[i][1]]=data[i][0]
print(tf_sorted)
全部评论 (0)
还没有任何评论哟~
