统计《大江大河》中人物出场次数的前30位,再生成人物姓名的词云
一、步骤
1.主程序 程序的介绍-----
2.读取文本 文本的str(ch_f )-----
3.将文本分割成列表 文本list(ls_f)-----
4.获取键为word,值为次数的dict 字典的list形式(items)-----
5.显示次数为前30的word word,count -----
6.将文本列表输出成只有人物姓名的字符串 wc_f-----
7.生成词云
二、程序流程图
程序结构图.png三、编写程序
from wordcloud import WordCloud
import matplotlib.pyplot as plt
def main(): #主程序
print("统计大江大河中人物出场次数前30,并生成所有人物的词云。")
ch_f = getFile()
ls_f = lsFile(ch_f)
name = personName()
items = getWordCount(ls_f,name)
wc_f = wcFile(ls_f,name)
showResult(items)
wordCloud(wc_f) #词云
def getFile(): #获取字符串类型的文本
a = open('D:\\Python练习\\计算机二级教材(python)\\大江大河.txt','r',encoding = 'utf-8')
ch_f = a.read()
a.close()
return ch_f
def lsFile(ch_f): #将str以人物名字分割成list
jieba.load_userdict('D:\\Python练习\\计算机二级教材(python)\\人物名字字典.txt')
ls_f = jieba.lcut(ch_f)
return ls_f
def personName(): #将自定义分词字典中的中文提取到列表,也就是把人物名全部添加到列表
a = open('D:\\Python练习\\计算机二级教材(python)\\人物名字字典.txt','r',encoding = 'utf-8')
b = a.read().split()
a.close()
name = []
for i in b:
if '\u4e00' <= i <= '\u9fff':
name.append(i)
return name
def getWordCount(ls_f,name): #获取指定词名和出现次数,并以降序列表形式输出
counts = {} #创建空字典
for word in ls_f:
for n in name:
if word == n:
counts[word] = counts.get(word,0) + 1
else:
continue
items = list(counts.items()) #将counts字典转换成列表
items.sort(key = lambda x:x[1],reverse = True) #以列表的第二项降序排序
return items
def showResult(items):
for i in range(30):
word,count = items[i]
print("{:<15}{:>10}".format(word,count))
def wcFile(ls_f,name):
f = []
for i in ls_f:
for n in name:
if i == n:
f.append(i)
else:
continue
wc_f = ' '.join(f)
return wc_f
def wordCloud(wc_f):
fontpath = 'STHUPO.TTF'
wc = WordCloud(font_path = fontpath,
scale = 16, #值越大字体越清晰
background_color = 'white', #背景板颜色
random_state = 2, #随机样式,
collocations = False,) #去除重复单词
wc.generate(wc_f)
plt.figure(dpi=100) #通过这里可以放大或缩小
plt.imshow(wc,interpolation='catrom',vmax=1000)
plt.axis("off")
plt.show() #显示图片
main()
输出结果:
宋运辉 470
雷东宝 404
梁思申 250
宋运萍 119
杨巡 83
程开颜 64
寻建祥 51
陈平原 48
水书记 42
四宝 41
老书记 39
东宝 37
雷母 25
韦春红 24
虞山卿 23
徐县长 22
小辉 20
老猢狲 19
宋季山 18
红伟 18
忠富 18
雷士根 13
正明 4
四眼会计 3
雷书记 3
程厂长 2
雷忠富 2
程母 1
士根媳妇 1
雷正明 1
Figure_1.png
网友评论