美文网首页
三国演义

三国演义

作者: __method__ | 来源:发表于2021-04-15 17:01 被阅读0次
import jieba
from matplotlib import pyplot as plt
#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 读取小说
class SanGuo():
    def __init__(self, n=10):
        """top n"""
        self.n = n
        self.new_word_list = []
        self.counts = {}
        self.stop_words = {"将军", "却说", "丞相", "二人", "不可", "荆州", "不能", "如此", "商议",
                "如何", "主公", "军士", "军马", "左右", "次日", "引兵", "大喜", "天下",
                "东吴", "于是", "今日", "不敢", "魏兵", "陛下", "都督", "人马", "不知",
                "孔明曰", "玄德曰", "刘备",'云长'}
    def read_data(self):
        with open('./novel/threekingdom.txt', mode='r', encoding='utf-8') as f:
            return f.read()
    def parse(self, data):
        word_list = jieba.lcut(data)
        for word in word_list:
            if len(word) <= 1:
                continue
            else:
                self.counts[word] =self.counts.get(word, 0) + 1
    def sort_and_filter(self):
        self.counts['孔明'] = self.counts['孔明'] + self.counts['孔明曰']
        self.counts['玄德'] = self.counts['玄德曰'] + self.counts['刘备'] + self.counts['玄德']
        self.counts['关公'] = self.counts['关公'] + self.counts['云长']
        for word in self.stop_words:
            del self.counts[word]
        self.new_word_list = list(self.counts.items())
        self.new_word_list.sort(key=lambda x:x[1], reverse=True)
    def show(self):
        num_list = []
        role_list = []
        print("前top{}的分析结果".format(self.n))
        for i in range(self.n):
            name, num = self.new_word_list[i]
            print(name, num)
            num_list.append(num)
            role_list.append(name)
        plt.pie(num_list, labels=role_list, shadow=True, autopct='%1.1f%%')
        plt.axis('equal')
        plt.title('三国TOP{}人物出场频次占比图'.format(self.n), fontsize=30)
        plt.show()

    def run(self):
        data = self.read_data()
        self.parse(data)
        self.sort_and_filter()
        self.show()

if __name__ == '__main__':
    s = SanGuo(5)
    s.run()

相关文章

  • 话说三国演义

    三国演义中英雄事迹出,三国演义中坏人必败。三国演义中美女过,三国演义中英雄必成功。

  • 我最喜欢的一本书

    同学们,你们看过三国演义吗?我要向你们推荐《三国演义》这本书。 三国演义是罗贯中先生所写,三国演义描写的,是从东汉...

  • 看《桃园三结义》有感

    《三国演义》是四大名著之一,我为什么喜欢看《三国演义》,源于央视以前放过的一部电视剧《三国演义》,在《三国演义》这...

  • Python统计三国演义主要人物出场次数

    import jieba #读取三国演义 with open("三国演义.txt",'r',encoding='u...

  • 读“三国”演生活,寻之美

    ——《三国演义》读后感 卢倩楠 读完厚厚的一本《三国演义》,不禁感叹历史的“分久必合,合久必分”。《三国演义》真的...

  • 《三国演义》

    这个寒假,老师让我们读《三国演义》。我对《三国演义》的印象是:没意思,刻板,打打杀杀的。 爸爸是三国演义的...

  • 2018-08-10

    三国演义

  • 第一章·三才之化·第一节·重读三国

    《三国演义》 ...

  • 2017-08-30

    三国演义

  • 疑惑

    阅读《三国演义》的小说 观看《三国演义》的电视剧 收听《三国演义》的音频(易中天品三国) 到底目的何在呢 连我自己...

网友评论

      本文标题:三国演义

      本文链接:https://www.haomeiwen.com/subject/rtfjlltx.html