文本词汇频率统计

先在cmd中升级window版本


import jieba
txt = open(r'D:chromeDownload三国演义.txt', 'r', encoding = 'utf -8').read()

words = jieba.lcut(txt)
excludes = {'将军','却说','二人','不可','荆州','不能','如此','商议',
'如何','主公','军士','左右','军马','引兵','次日','大喜','天下',
'东吴','于是','今日','16','不敢','魏兵','陛下','人马','都督','一人',
'不知','汉中','众将','只见','后主','蜀兵','大叫','上马','此人','先主',
'太守','天子','后人','背后','一面','城中','何不','忽报','大军','先生',
'何故','然后','先锋','夫人','不如'}
counts = {}

for word in words:
if len(word) == 1:
continue
elif word == '孔明' or word == '孔明曰':
rword = '诸葛亮'
elif word == '关公' or word == '云长':
rword = '关羽'
elif word == '玄德' or word == '玄德曰':
rword = '张飞'
elif word == '孟德' or word == '丞相' or word == '丞相曰' or word == '曹孟德':
rword = '曹操'
else:
rword = word
counts[rword] = counts.get(rword, 0) + 1


for i in excludes:
del counts[i]

listhills = list(counts.items())
listhills.sort(key=lambda x:x[1], reverse=True)

for k in range(15):
word, counts = listhills[k]
print('{0:<10}{1:>5}'.format(word, counts))

 

结果如下:


曹操 1436
诸葛亮 1373
张飞 1301
关羽 779
吕布 299
刘备 271
孙权 264
赵云 255
司马懿 221
周瑜 217
袁绍 190
马超 185
魏延 177
黄忠 168
姜维 151
 

原文地址:https://www.cnblogs.com/wxyzzj/p/10652488.html