三国演义人物词频统计-4

题目来源:Python语言程序设计

授课老师: 嵩天、黄天羽、礼欣

hamlet小说下载路径:https://python123.io/resources/pye/threekingdoms.txt

三国演义人物词频统计-3:https://blog.csdn.net/Mzjuser/article/details/82527464

三国演义人物词频统计-2:https://blog.csdn.net/Mzjuser/article/details/82527412

三国演义人物词频统计-1:https://blog.csdn.net/Mzjuser/article/details/82527289


代码

import jieba
path = 'C:\\Users\\Desktop\\三国演义.txt'
text = open(path,'r',encoding='utf-8').read()
#使用结巴的函数对文本进行分词
words = jieba.lcut(text)
#需要排除一些不是人名的单词
excludes = ['将军','却说','二人','不可','荆州','不能','如此','商议','如何'
            ,'军士','左右','天下','次日','大喜','引兵','军马','东吴','于是'
            ,'今日','不敢','魏兵','陛下','一人','人马','汉中','不知','只见',
            '众将','蜀兵','上马','大叫']
#定义字典类型去存储文字和文字出现的次数
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == '诸葛亮'or word == '孔明曰':
        rword = '孔明'
    elif word == '玄德'or word == '玄德曰' or word == '主公':
        rword = '刘备'
    elif word == '孟德'or word == '丞相':
        rword = '曹操'
    elif word == '关公'or word == '云长':
        rword = '关羽'
    elif word == '都督':
        rword = '周瑜'
    elif word == '后主':
        rword = '刘禅'
    elif word == '太守':
        rword = '刘度'
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
#把一些不是人名的词语排除掉
for word in excludes:
    del counts[word]
items = list(counts.items())
#根据iems的第二个值进行从大到小的排序
items.sort(key = lambda x:x[1],reverse=True)
for i in range(15):
    word,count = items[i]
    #左对齐,占位10位,填充字符为空格
    print("{0:<10}{1:>5}".format(word,count))

结果显示


其他解决方案

可以通过人物的名称(需要对三国中的人物有详细的了解)对人物出现的次数进行统计,然后在进行排序。

猜你喜欢

转载自blog.csdn.net/Mzjuser/article/details/82527865