python 三国演义人物出场词频统计


from jieba import lcut
file=open('three kindom.txt','rt',encoding='utf-8').read()
wordlist=lcut(file)
excludes={'将军','却说','荆州','二人','不可','不能','如此','商议','如何','军士','左右','军马','引兵','次日','大喜','天下','东吴','于是','今日','不敢','魏兵','一人','只见','不知','人马','汉中','众将','后主','蜀兵','上马','大叫','太守','此人'}
count={}
for word in wordlist:
    if word=='孔明曰' or word=='诸葛亮':
        rword='孔明'
    elif word=='关公' or word=='云长':
        rword='关羽'
    elif word=='玄德'or word=='玄德曰' or word=='主公':
        rword='刘备'
    elif word=='孟德' or word=='丞相' or word=='陛下':
        rword='曹操'
    elif word=='都督':
        rword='周瑜'
    else:
        rword=word
    if len(rword)<=1 or len(rword)>3:
        continue
    else:
        count[rword]=count.get(rword,0)+1
rank=sorted(count.items(),key=lambda x:x[1],reverse=True)
for i in range(15+len(excludes)):
    if rank[i][0] not in excludes:
        print('{:<5s}  {:>4d}'.format(rank[i][0],rank[i][1]),end='\n')

经过几次优化,前15名结果如下:

曹操     1674
刘备     1583
孔明     1383
关羽      784
周瑜      438
张飞      358
吕布      300
赵云      278
孙权      264
司马懿     221
袁绍      191
马超      185
魏延      180
夫人      173
先主      173

你可能感兴趣的:(python,开发语言)