用jieba进行中文分词并统计中文词频
安装jieba
pip install jieba
2种:
1.统计三国演义排前20的词频(去掉部分不想要的词)
2.统计自行指定的三国演义人物的出场次数
import jieba
# 统计三国演义排前20的词频(去掉部分不想要的词)
# 打开读取文件名为threekingdoms.txt的三国演义文档
txt = open('threekingdoms.txt','r', encoding = 'utf-8').read()
# jieba.lcut() 精确模式切分中文
txt = jieba.lcut(txt)
counts = {}
new = {}
excludes = {'将军','却说','荆州','二人','不可','不能','如此','今日','次日','于是','如何','主公','一人','不敢','大喜','陛下','不知','汉中','只见','都督','后主'}
# string.format() 格式化
print('统计三国演义排前20的词频:')
for word in txt:
# 去标点符号
if len(word) == 1:
continue
elif word == '孟德' or word == '丞相':
rword = '曹操'
elif word == '玄德' or word == '玄德曰':
rword = '刘备'
elif word == '孔明' or word == '孔明曰':
rword = '诸葛亮'
elif word == '关公' or word == '云长':
rword = '关羽'
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for rword in excludes:
del counts[rword]
li = list(counts.items())
# 由大到小排序
li.sort(key=lambda x:x[1], reverse=True)
for i in range(1,21):
key,value = li[i]
print('{:<3}{:<6}{:>5}'.format(i,key,value))
结果:
统计三国演义排前20的词频:
1 诸葛亮 1383
2 刘备 1252
3 关羽 784
4 张飞 358
5 商议 344
6 军士 317
7 吕布 300
8 左右 294
9 军马 293
10 赵云 278
11 引兵 276
12 孙权 264
13 天下 255
14 东吴 251
15 魏兵 233
16 司马懿 221
17 人马 220
18 周瑜 217
19 众将 207
20 袁绍 191
import jieba
# 统计指定三国演义人物的出场次数
# 打开读取文件名为threekingdoms.txt的三国演义文档
txt = open('threekingdoms.txt','r', encoding = 'utf-8').read()
# jieba.lcut() 精确模式切分中文
txt = jieba.lcut(txt)
counts = {}
cha = ['曹操','诸葛亮','刘备','关羽','张飞','吕布','赵云','姜维','马岱','庞德','周瑜','袁绍','马超','孙权','司马懿','魏延','黄忠','孟获','刘表','夏侯惇','刘禅']
new = {}
# string.format() 格式化
print('我喜欢的{}个三国演义人物出场统计:'.format(len(cha)))
for word in txt:
# 去标点符号
if len(word) == 1:
continue
elif word == '孟德' or word == '丞相':
rword = '曹操'
elif word == '玄德' or word == '玄德曰':
rword = '刘备'
elif word == '孔明' or word == '孔明曰':
rword = '诸葛亮'
elif word == '关公' or word == '云长':
rword = '关羽'
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for key,value in counts.items():
if key in cha:
new[key] = value
li = list(new.items())
# 由大到小排序
li.sort(key=lambda x:x[1], reverse=True)
for i in range(1,len(cha)+1):
key,value = li[i-1]
print('{:<3}{:<6}{:>5}'.format(i,key,value))
结果:
我喜欢的21个三国演义人物出场统计:
1 曹操 1451
2 诸葛亮 1383
3 刘备 1252
4 关羽 784
5 张飞 358
6 吕布 300
7 赵云 278
8 孙权 264
9 司马懿 221
10 周瑜 217
11 袁绍 191
12 马超 185
13 魏延 180
14 黄忠 168
15 姜维 151
16 马岱 127
17 庞德 122
18 孟获 122
19 刘表 120
20 夏侯惇 116
21 刘禅 16