原标题:用python分析四大名著之三国演义

项目起因及意义

起初在浏览知乎时看见一篇文章觉得很有意思(用 Python 分析《红楼梦》),此文章较长,题主采用了一系列方法分析红楼梦前八十回和后四十回是否为同一个人所写,虽然题主贴上了部分实现的截图,我就想试着来实现一遍,但由于目前能力有限,一些机器学习算法不够了解,加上 python 又是刚刚学,所以我打算先结合《Python 语言程序设计基础》这本书上的例子——《三国演义》人物出场统计来作为此系列博客第一篇,后续等能力足矣会陆陆续续补上。

前期准备

三国里人物众多,我们需要对人物出场次数统计,中文文章需要分词才能进行词频统计,这里我们用到第三方库 jieba,这里我就不提供下载方法了,然后我们需要《三国演义》的电子书网上都有,很容易下载。

项目进行

将文本数据导入 pycharm

import jieba

txt = open( "三国演义.txt", "r", encoding= "gb18030"). read()

这里的编码格式一开始我是按照书上‘utf-8’格式读取,发现会乱码,后来在pycharm里面用‘gbk’格式能读出文本内容,但是个别字符识别不出来,就去百度到“gb18030”比gbk范围更广,这里我成功读入。如果你此时还是读入不了可以写成下面形式

txt= open( "三国演义.txt", "r", encoding= "gb18030",errors= "ignore").read()

完整代码实现

import jieba

excludes = { "将军", "却说", "荆州", "二人", "不可", "不能", "如此", "商议", "如何", "主公", "军士", "左右", "军马", "引兵", "次日", "大喜", "天下", "东吴", "于是", "今日", "不敢", "魏兵", "人马", "陛下", "一人"}

txt = open( "三国演义.txt", "r", encoding= "gbk"). read()

words = jieba.lcut(txt)

counts = {}

forword in word s:

iflen(word) == 1:

continue

elif word == "诸葛亮"orword == "孔明曰":

rword = "孔明"

elif word == "关公"orword == "云长":

rword = "关羽"

elif word == "玄德"orword == "玄德曰":

rword = "刘备"

elif word == "孟德"orword == "丞相":

rword = "曹操"

else:

rword = word

counts[rword] = counts. get(rword, 0) + 1

forword in exclude s:

del(counts[word])

items= list(counts. items())

items. sort(key=lambda x: x[ 1], reverse=True)

fori in range( 10):

word, count= items[i]

print(word, count)

excludes里面定义了一些出现次数较多但不是人名的词,这里主要语句就是 counts[rword] = counts.get(rword, 0) + 1 这一句字典类型的counts,如果word在counts中,返回word对应的值,否则返回0。后面用sort()函数和匿名函数lambda()进行排序,这里字典没有顺序,需要先转化为列表类型。输出结果如下:

导出数据文件

fo= open( "三国人物出场次数.txt", "a")

fori in range( 10):

word, count= items[i]

word = str(word)

count= str( count)

fo. write(word)

fo. write( ' ')

fo. write( count)

fo. write( 'n')

print(word, count)

print( items)

fo. close()

这里我们将数据导入到 三国人物出场次数.txt 这个文件里面。

将数据画出气泡图

总结

由此可知“曹操“,“ 孔明””刘备”是出场最多的人,这些只是简单的数据分析,作为此系列博客的开头篇,随着学习希望自己能实现完整用python分析四大名著。

免责申明:本站所有内容均来自网络,我们对文中观点保持中立,对所包含内容的准确性,可靠性或者完整性不提供任何明示或暗示的保证,请仅作参考。若有侵权,请联系删除。

文章来源:程序人生返回搜狐,查看更多

责任编辑:

三国演义亲和度python_用python分析四大名著之三国演义相关推荐

  1. 三国演义python分析系统_用python分析四大名著之三国演义

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 项目起因及意义 起初在浏览知乎时看见一篇文章觉得很有意思(用 Python 分析& ...

  2. 用python分析四大名著之三国演义

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 项目起因及意义 起初在浏览知乎时看见一篇文章觉得很有意思(用 Python 分析& ...

  3. 用python分析四大名著(一)

    项目起因及意义 起初在浏览知乎时看见一篇文章觉得很有意思(用Python分析<红楼梦>),此文章较长,题主采用了一系列方法分析红楼梦前八十回和后四十回是否为同一个人所写,虽然题主贴上了部分 ...

  4. python亲和度_数据挖掘——亲和性分析

    亲和性分析根据样本个体之间的相似度,确定它们关系的亲疏.应用场景: 1.向网站用户提供多样化的服务或投放定向广告. 2.为了向用户推荐电影或商品 3.根据基因寻找有亲缘关系的人 比如:统计顾客购买了商 ...

  5. 三国演义亲和度python_Python之三国演义源码

    文章分析见:拂羽:Python之三国演义(上)​zhuanlan.zhihu.com拂羽:Python之三国演义(下)​zhuanlan.zhihu.com #!/usr/bin/env python ...

  6. 红楼梦人物出场统计python_用Python分析《红楼梦》:见证贾府的兴衰

    没读过<红楼梦>也能知道前后四十回是不是一个作者写的?很久以前,数据侠黎晨,用机器学习的算法分析了<红楼梦>,认为后四十回和前八十回内容上有明显差距.不过,数据侠楼宇却不这么认 ...

  7. Python中亲和度分析时defaultdict的一种典型算法

    在做亲和度分析时,需要统计用户选择产品A之后同时选择产品B的支持度,此时需要使用defaultdict函数. 通过defaultdict(int) 生成了一个默认为0的带key(此时的key为同时包含 ...

  8. 为什么闲鱼不能搜索python_闲鱼上哪些商品抢手?Python 分析后告诉你

    原标题:闲鱼上哪些商品抢手?Python 分析后告诉你 阅读文本大概需要 10 分钟. 1 目 标 场 景 经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能,都能为他们带来不错的睡后收入. 闲鱼 ...

  9. 用Python分析《红楼梦》:见证了贾府的兴衰,你是否还能“笑道”世事无常

    没读过<红楼梦>也能知道前后四十回是不是一个作者写的?很久以前,数据侠黎晨,用机器学习的算法分析了<红楼梦>,认为后四十回和前八十回内容上有明显差距.不过,数据侠楼宇却不这么认 ...

  10. Python分析离散心率信号(中)

    Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...

最新文章

  1. Bash功能与使用技巧
  2. Java程序员必看!java值类型和引用类型的区别
  3. 第9条:覆盖equals时总要覆盖hashCode
  4. ubuntu系统操作常见错误
  5. 普及几个小常识,新手技能补充
  6. 联手友盟+打造云上数据增长“样板间”, 好兔视频成功逆势突围
  7. 【Git】向Gitee提交代码
  8. 语法转换_近5年高考(2019- 2015年)语法填空词性转换使用真题汇编
  9. html个人博客完整代码_Spring Cloud Alibaba迁移指南1:零代码从Eureka迁移到Nacos
  10. [转]Unicode汉字编码表
  11. Java 面向对象 习题2(基础篇)
  12. Intel VT学习笔记(三)—— VMCS(上)
  13. Mybatis的特性详解——动态SQL
  14. Re-ID with Triplet Loss
  15. 王半仙儿的日记-0003
  16. 快速生成树(RSTP)
  17. Vue路由守卫实现无登录只跳转到登录页面
  18. 机器学习入门与Python实战(三):分类与逻辑回归 Logistic Regression
  19. 使用android7的手机,手机评测 篇一:7年果粉的一加7t使用体验
  20. java jtextfield内容_Swing系列之JTextField(单行文本框)

热门文章

  1. 智能家居时代到来?智能家居是有必要的吗?
  2. python 字符串 下标
  3. Flink Table Api 之Over Windows使用
  4. 第一次在csdn写博客!
  5. deebot扫地机器人说明书_ecovacs扫地机器人730使用说明书_deebot扫地机器说明书
  6. Advanced Installer,搜索注册表,根据注册表选择安装路径
  7. linux解决笔记本pwm背光,担心PWM调光屏幕闪瞎眼?联想这些ThinkPad笔记本要注意...
  8. 使用canvas实现贪吃蛇
  9. 猿创征文 | 常见的五款BI报表介绍
  10. 通电后第一次开机黑屏_完美解决win10开机后一直黑屏问题