美文网首页python自学
[原创]三国人物简单分析

[原创]三国人物简单分析

作者: Damon0626 | 来源:发表于2018-11-12 20:56 被阅读2次

(分析数据的能力有限,大篇幅写了前面的准备内容...对数据的认识还需要继续深刻理解和学习)
查看具体代码,可查看我的Github

主要任务

1.找出《三国演义》中名字出现最多的10人;
2.分析主要几个人物120回中,每回出现的次数,结合具体内容,看发生了什么;
3.分析人物之间的关系利用gephi简单绘图;
4.绘制“逐”字词云。

准备工作

1.由于要分析120回中主要人物的出场次数,找到了按回分段的章节。也就是说整本书共120行,每行就是一回,当然主要是为了下面的分析要用;
2.需要安装主要的python库,如jieba, wordcloud, pandas, codecs, matplotlib, pyecharts, bs4等,当然还有Gephi

开始工作

1.找到人名出现最多的词语,利用jieba的分词功能,将不是nr词性和长度小于2的统统过滤掉,排序后写入到csv文件中,大约是长这样子...

wordroot.png
'''参考代码'''
def findMostWords(self, dict, readBook, writeFile):
        jieba.load_userdict(dict)  # 加载字典
        with codecs.open(readBook, 'r', 'utf8') as f:
            i = 0
            for line in f.readlines():
                self.processBar(i, 120)  # 显示完成进度
                i += 1
                poss = pseg.cut(line)  # 返回各个词及其词性
                for w in poss:
                    if w.flag != 'nr' or len(w.word) < 2:
                        continue
                    if self.nouns.get(w.word) is None:
                        self.nouns[w.word] = 0
                    self.nouns[w.word] += 1  # 如果出现依次,则次数加1
        self.nouns = sorted(self.nouns.items(), key=lambda x: x[:][1], reverse=True)

2.通过上述代码大约找到了7238个nr词汇, 然后手动选取了出现次数超过20次以上的词语,大约200条,剔除“曹兵”、“黄巾”类似的词语,最终得到了52个词;(看到操大喜,莫名很想笑...)
['曹操', '玄德', '孔明', '关公', '丞相', '孔明曰', '玄德曰', '云长', '张飞', '主公','吕布', '刘备', '孙权', '赵云', '司马懿', '周瑜', '魏延', '袁绍', '马超', '姜维', '黄忠', '诸葛亮', '庞德', '张辽', '刘表', '董卓', '孙策', '鲁肃', '邓艾', '大将军', '张苞', '袁术', '刘玄德', '玄德大', '子龙', '司马', '孔明笑', '公瑾', '操大喜', '翼德', '刘皇叔', '赵子龙', '郭嘉', '仲达', '关云长','操大怒', '玄德问', '阿斗', '刘豫州', '玄德闻', '玄德乃', '曹丞相']
3.逐词匹配上述的52个词, 得到了以下结果;

handledTimes.png
4.整理上述52个词汇,将玄德曰,玄德怒,玄德乃,刘皇叔等词语合并,绘制Top10;
top10.png
    def occurrencesTop10(self, file, html):  # 截取了出现20次以上的人物
        self.Top10 = pd.read_excel(file)
        bar = Bar(html)
        bar.add("出场次数", list(self.Top10['人物'])[:10], list(self.Top10["出场次数"])[:10],
                xaxis_rotate=60, is_label_show=True)
        bar.show_config()
        bar.render(html)

5.分别分析每一回,利用pandas很方便的绘制了每回52个人分别出现的次数,这里的空白是不能参与相加减的合并计算的,需要进一步处理;


meihui.png
    def appearEachEpisode(self, readBook, writeFile):  # 每回中人物出现次数
        with open(readBook, 'r') as f:
            all_chaps = [chap for chap in f.readlines()]
        dictionary = []
        # 读取文件并分词
        for i in range(120):
            print("处理第{}回".format(i + 1))
            words = list(jieba.cut(all_chaps[i]))
            for word in words:
                if word in self.nameList:
                    if word in self.eachChapter:
                        self.eachChapter[word] += 1
                    else:
                        self.eachChapter[word] = 1
            dictionary.append(self.eachChapter)
            self.eachChapter = {}
        data = pd.DataFrame(dictionary)
        data.to_excel(writeFile, index=True, header=True)

6.绘制一些简单的图;
(1)蜀国主要人物在书中的分布情况,三位结拜兄弟贯穿了前80回左右,等他们退出历史舞台,诸葛亮接过蜀国重任,支撑着蜀国大业;

蜀国.png
(2)看刘备和诸葛亮的分布,35-40回左右两人重叠较多,自然是“三顾茅庐”了,80回后,诸葛先生有较为密集的输出,正是“先帝托孤”后“鞠躬尽瘁”的具体表现,这其中更有人人熟知的“巧布八阵图”、“七擒孟获”等历史故事;
刘诸葛.png
(3)四位当权者,曹操、刘备、孙权、司马懿活动的活度,前80回,曹刘孙较为活跃,正是三国纷争的历史局面,读这一部分,争斗厮杀的情节相当精彩;待三位同时代的人物相继离开后,司马懿开始活跃,“一统秦两汉,三分魏蜀吴,两晋前后延”,慢慢的朝代更替,历史车轮滚滚向前; 四位当权者.png
7.分析人物关系,根据全文2700多个自然段,如果一个自然段内同时出现了人物A和B,就将A和B之间的关系强度+1。运行代码得到node和edge两份csv文件后,输入到Gephi后,得到以下关系图,可以看出故事总体来说还是围绕曹刘纷争开展,较大的篇幅提到了诸葛亮,他周围密集的线,真是其经天纬地之才的充分体现; relationship
8.词云制作。
自己扣了一张图,给了一个渐变色,取逐鹿中原的“逐”字。其中各种“曰“,可看出对话占据了书中很大一部分章节,读者读起来不至于太闷,当然通过对话,更有代入感,身临其境。
image.png

只有自己做了,才能发现坑在哪里,这可能就是自己在进步吧...

相关文章

  • [原创]三国人物简单分析

    (分析数据的能力有限,大篇幅写了前面的准备内容...对数据的认识还需要继续深刻理解和学习)查看具体代码,可查看我的...

  • 张飞——因何而亡

    《三国演义》人物分析——从争议看三国 作者:郑卓希 《三国演义》中的描写异常精彩,八方豪杰齐聚,四大名著中,人物描...

  • 诸葛亮——才华横溢与别无选择

    《三国演义》人物分析——从争议看三国 作者:郑卓希 《三国演义》中着重描写的人物虽然不及《水浒传》之多,但两位数还...

  • 刘备——真假君子

    《三国演义》人物分析——从争议看三国 作者:郑卓希 桃园三兄弟毫无疑问是《三国演义》中的重要角色,也是书中人物塑造...

  • 三国人物分析

    董卓-------残暴自大,自私自利,昏庸无度,爱才是他的唯一优点 吕布-------忘恩负义,勇猛,执着,有仇必...

  • 曹操——偏见之外

    《三国演义》人物分析——从争议看三国 作者:郑卓希 《三国演义》中,魏蜀吴各有其君,然而倘若要选其一称颂,世人则各...

  • 四、《三国演义》的形象塑造(上)

    第三个问题我们来分析一下,《三国演义》这部小说的人物形象塑造的特征。有学者指出《三国演义》的人物形象塑造,有一个鲜...

  • 曹操孙权诸葛亮刘备

    哪位不是三国人物?其实是曹操 曹操为何不是三国时期人物呢? 曹操不算三国时期的人物,严格说是东汉末年的人物,公...

  • 三国人物结构化数据 - Characters_of_the_Th

    Characters_of_the_Three_Kingdoms - 三国人物结构化数据 三国人物结构化数据 为什...

  • 袁绍为什么败亡

    《三国演义》是一部传播广泛的鸿篇巨著,里面的人物刻画也是非常的深刻,今天我来说说三国早期的袁绍。 首先我们来分析一...

网友评论

    本文标题:[原创]三国人物简单分析

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