首页 > 其他 > 详细

文本词汇频率统计

时间:2019-04-13 21:28:42      阅读:150      评论:0      收藏:0      [点我收藏+]

先在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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!