【jieba库】使用jieba库对《三国演义》全篇进行分词处理,统计《三国演义》中各个人物的出场次数,打印次数排名前五的人物姓名具有排除词库和合并不同称谓功能的Python程序|CSDN创作打卡

程序解决问题描述如下:

使用jieba库,该语句可以分割中文语句中的词汇。同时掌握对txt文档的读写操作,对其中出现的高频词汇进行了统计。建立一个排除词库,用于排除程序对一些无意义的词的计数,使得最终结果为有更大意义的数据。

使用jieba库对《三国演义》全篇的文本文件进行分词处理,然后对分词后的文本进行处理,统计《三国演义》中各个人物的出场次数,然后将出场次数排名前五的名字和出场次数在窗口中打印。

设置排除词库,将《三国演义》中出现次数较多而不是人物姓名的词屏蔽,从而打印出的出现最多的词都是《三国演义》中的人物姓名,同时设置合并程序,将同一个人物的不同称谓进行归一化处理,然后不同的称谓同样在该人物的出场次数上计数,从而实现完整的统计人物的出场次数。

程序代码如下:

import jieba
excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此"}#排除词库
txt = open("三国演义.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)#分词处理
counts = {}
for word in words:
    if len(word) == 1:
        continue
    elif word == "诸葛亮" or word == "孔明曰" or word == "卧龙":#合并不同称谓
        rword = "孔明"
    elif word == "关公" or word == "云长" or word == "美髯公":
        rword = "关羽"
    elif word == "玄德" or word == "玄德曰" or word == "刘皇叔":
        rword = "刘备"
    elif word == "孟德" or word == "丞相" or word == "曹贼":
        rword = "曹操"
    elif word == "翼德" or word == "猛张飞" or word == "张翼德":
        rword = "张飞"
    else:
        rword = word
    counts[rword] = counts.get(rword, 0) + 1
for word in excludes:
    del (counts[word])
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)#排序
print("三国人物出场次数统计:")
for i in range(5):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

程序运行结果如下:

 看到这里的小伙伴别忘了点个赞再走哦!

关注博主学习更多Python程序设计知识!

猜你喜欢

转载自blog.csdn.net/qq_59049513/article/details/122640211