本文使用的代码和操作都很简单,很适合刚学习Python的小白参考,需要注意的事项都在文章尾部说明了,可以注意一下。
1.词频分析
1)代码:
import jieba
def wordFreq(filepath,text,topn):
words = jieba.lcut(text.strip())
counts = {}
stopwords = {'他','他们','一个','这里','那里','他们','没有','已经','选手','战队','就是','但是','已经','只是','技能','攻击','还是','现在'}
for word in words:
if len(word) == 1:
continue
elif word not in stopwords:
if word == "散人" or word == "大神" or word == "老大" or word == "叶修" or word == "老叶" or word=='君莫笑':
word = "叶秋"
elif word == "沐雨橙风" or word == "枪炮师" or word == "苏沐橙":
word = "沐橙"
elif word == "陈果" or word == "老板娘"or word == "陈姐" or word=='老板':
word = "陈果"
elif word == "孙翔" or word == "翔哥":
word = "孙翔"
elif word == "乔一帆" or word == "一帆" or word == "一寸灰" or word == "小妖" :
word = "乔一帆"
elif word=='包子' or word=='包荣兴':
word=='包荣兴'
elif word=='寒烟柔' or word=='小柔':
word=='唐柔'
counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key = lambda x:x[1], reverse = True)
f = open(filepath[:-4]+'_词频.txt', "w")
for i in range(topn):
word, count = items[i]
f.writelines("{}\t{}\n".format(word, count))
print("{}\t{}\n".format(word, count))
f.close()
text=open(r'C:\Users\Administrator\Desktop\全职高手.txt', encoding='gb18030', errors='ignore').read()
wordFreq(r'C:\Users\Administrator\Desktop\全职高手.txt',text,300)
print('统计结束')
2)结果截图:
(一个是在spyder里面的截图,一个是在桌面生成的词频文档里面的截图)
2.生成词云
1)代码:
import matplotlib.pyplot as plt
import wordcloud
from scipy.misc import imread
bg_pic = imread(r'C:\Users\Administrator\Desktop\1.jpg') # 读入形状图片,图片可以自行在网上下载
f = open(r"C:\Users\Administrator\Desktop\全职高手_词频.txt", encoding='gb18030', errors='ignore')
text = f.read()
f.close()
wcloud=wordcloud.WordCloud(font_path = r'C:\Windows\Fonts\simhei.ttf',
background_color = "black",width=1000,
max_words = 500,
mask = bg_pic, # mask参数设置词云形状
height = 860, margin = 2).generate(text)
wcloud.to_file(r"C:\Users\Administrator\Desktop\q.png") # 保存图片
# 显示词云图片
plt.imshow(wcloud)
plt.axis('off')
plt.show()
生成的词云结果截图:
调整一下可得
注意:1)上述涉及到的路径可以根据自己的电脑路径自行设置更改。 (我的路径都是放桌面上的)
2)生成的词云形状 和自己选择下载的图片里面的内容是一致的,如果没有成功生成相应的形状(默认为矩形),可能是图片读取失败,可以在网上重新换一个图片下载,当然也可以自己画一个。
3)代码里面的'全职高手.txt'是一个包含了小说所有的内容的文本文件,获取的途径可以是在网上直接下载,也可以是自己写个爬虫得到。
4)两段代码开头导入的各个模块都需要自己提前下载好(Anocona以及Pycharm里面都没有自带,需要自己下载,否则会报错,有的像jieba库在Pycharm里导入可能无法成功,可以直接在cmd里面输入命令pip install jieba,系统默认的下载路径为Anacona,然后就可以在Anacona里面使用了)。
5)'全职高手_词频.txt'文档是通过运行代码自动生成的,存放生成路径可以自行更改。