红楼梦人物出场顺序python_Python 中文词频分析——红楼梦人物出场次数
本篇文档,带大家用Python做一下词频统计
本章需要用到Python的jieba模块
jieba模块是一个经典的用于中文分词的模块
首先呢 我们需要读取文章的内容,并用jieba库的lcut进行分词
import jieba
# 读取红楼梦的文本内容
txt = open('红楼梦.txt', 'r', encoding='utf-8').read()
# 运用jieba库对文本内容进行分词
words = jieba.lcut(txt)
然后 我们去统计人名的出现次数
这里需要分析什么词语是人名,我们去创建一个文档,当做字典存储人名信息
人名还会有其他的表示,我们将它转化成一样的名字
# 初始化count字典 用于存放人名出现频率
counts = {}
# 读取红楼梦人名信息
names = open('人名.txt', 'r', encoding='utf-8').read().split('、')
# 对分词数据进行筛选 将不需要的数据跳过 只保存有效数据
for word in words:
if len(word) == 1:
continue
elif word == '贾母' or word == '老太太':
word = '贾母'
elif word in '贾珍—尤氏'.split('—'):
word = '贾珍'
elif word in '贾蓉—秦可卿'.split('-'):
word = '贾蓉'
elif word in '贾赦—邢夫人'.split('-'):
word = '贾赦'
elif word in '贾政—王夫人'.split('-'):
word = '贾政'
elif word in '袭人-蕊珠'.split('-'):
word = '袭人'
elif word in '贾琏—王熙凤'.split('-'):
word = '贾琏'
elif word in '紫鹃-鹦哥'.split('-'):
word = '紫鹃'
elif word in '翠缕-缕儿'.split('-'):
word = '翠缕'
elif word in '香菱-甄英莲'.split('-'):
word = '香菱'
elif word in '豆官-豆童'.split('-'):
word = '豆官'
elif word in '薛蝌—邢岫烟'.split('-'):
word = '薛蝌'
elif word in '薛蟠—夏金桂'.split('-'):
word = '薛蟠'
elif word in '贾宝玉-宝玉'.split('-'):
word = '贾宝玉'
elif word in '林黛玉-林姑娘-黛玉'.split('-'):
word = '林黛玉'
if word not in names:
continue
counts[word] = counts.get(word, 0)+1
最后我们将数据排序整理一下
# 将人名按照次数排序 降序
items = list(counts.items())
# 排序规则 以次数为参考进行排序
items.sort(key=lambda x: x[1], reverse=True)
完整代码如下:
import jieba
# 读取红楼梦的文本内容
txt = open('红楼梦.txt', 'r', encoding='utf-8').read()
# 运用jieba库对文本内容进行分词
words = jieba.lcut(txt)
# 初始化count字典 用于存放人名出现频率
counts = {}
# 读取红楼梦人名信息
names = open('人名.txt', 'r', encoding='utf-8').read().split('、')
# 对分词数据进行筛选 将不需要的数据跳过 只保存有效数据
for word in words:
if len(word) == 1:
continue
elif word == '贾母' or word == '老太太':
word = '贾母'
elif word in '贾珍—尤氏'.split('—'):
word = '贾珍'
elif word in '贾蓉—秦可卿'.split('-'):
word = '贾蓉'
elif word in '贾赦—邢夫人'.split('-'):
word = '贾赦'
elif word in '贾政—王夫人'.split('-'):
word = '贾政'
elif word in '袭人-蕊珠'.split('-'):
word = '袭人'
elif word in '贾琏—王熙凤'.split('-'):
word = '贾琏'
elif word in '紫鹃-鹦哥'.split('-'):
word = '紫鹃'
elif word in '翠缕-缕儿'.split('-'):
word = '翠缕'
elif word in '香菱-甄英莲'.split('-'):
word = '香菱'
elif word in '豆官-豆童'.split('-'):
word = '豆官'
elif word in '薛蝌—邢岫烟'.split('-'):
word = '薛蝌'
elif word in '薛蟠—夏金桂'.split('-'):
word = '薛蟠'
elif word in '贾宝玉-宝玉'.split('-'):
word = '贾宝玉'
elif word in '林黛玉-林姑娘-黛玉'.split('-'):
word = '林黛玉'
if word not in names:
continue
counts[word] = counts.get(word, 0)+1
# 将人名按照次数排序 降序
items = list(counts.items())
# 排序规则 以次数为参考进行排序
items.sort(key=lambda x: x[1], reverse=True)
# print(items)
print('出现次数最多的是:', items[0][0], '出现了:', items[0][1], '次')
print('出现次数最少的是:', items[-1][0], '出现了:', items[-1][1], '次')
for item in items:
print(item[0], '出现了:', item[1], '次')
效果图如下:
image.png
红楼梦人物出场顺序python_Python 中文词频分析——红楼梦人物出场次数相关推荐
- 第三方库实现中文词频分析和词语可视化(jieba,wordcloud库)
jieba,wordcloud库实现中文词频分析和词语可视化 文章目录 前言: 一.实验题目: 二.实验准备: 三.实验内容 1.全部代码: 2.实验结果: 3.难点分析: 结语: 前言: 这篇文章是 ...
- 使用python进行“中文词频分析”学习笔记
首先什么是"词频分析"? 词频分析,就是对某一或某些给定的词语在某文件中出现的次数进行统计分析. 那么它能做哪些事情? 比如:分析你最喜欢的作者的表达习惯是怎样的? 判断一首诗是李 ...
- python文本聚类 词云图_有哪些软件可以进行中文词频分析?
在现实生活中,人想做词云,也有了关键词的数据但自己又不会做词云可怎么办,我给大家推荐几款词云制作工具,让你瞬间呈现美观.酷炫的词云可视化.我们先来看看国外的词云制作工具: 1.Wordle Wordl ...
- 基于python的中文词频分析
受http://yixuan.cos.name/cn/2011/03/text-mining-of-song-poems/这篇文章的启发,觉得PYTHON来做文字处理分析应该不错,可以来做个词频分析, ...
- 红楼梦人物出场统计python_Python程序设计习题3——红楼梦人物出场次数统计
统计<红楼梦>中前20位出场最多的人物 使用Python编写程序,统计书籍<红楼梦>中前20位出场次数最多的人物 #红楼梦人物出场统计 import jieba txt=ope ...
- 三国演义人物出场顺序统计(文本词频统计)
1.使用jieba库 对中文文本进行分词 2.使用字典表达词频 (与hamlet案例相似) import jieba txt = open("threekingdoms.txt", ...
- python 对excel文件进行分词并进行词频统计_python 词频分析
python词频分析 昨天看到几行关于用 python 进行词频分析的代码,深刻感受到了 python 的强大之处.(尤其是最近自己为了在学习 c 语言感觉被它的语法都快搞炸了,python 从来没有 ...
- jieba库词频统计_如何用python对《三国演义》、《红楼梦》等名著开展词云分析及字频统计、出场统计等工作。...
以下以<红楼梦>为例进行设计. 在制作词云图及统计之前,需要下载python的几个库,wordcloud.jieba以及imageio等,我的操作系统为Windows10,IDE环境为id ...
- python红楼梦人物统计_Python分析红楼梦,宝玉和十二钗的人物关系
红楼梦出场人物很多,人物关系极其复杂,这次我们用Python来分析主人公贾宝玉和他的姐妹们,金陵十二钗之间的关系,做一个简要的分析. 出场率 由于我们只统计宝玉和十二钗(正册)这些人物,因此我们需要实 ...
最新文章
- 如何安全存储比特币现金(BCH)?
- 工科学生懂艺术,魔鬼神仙挡不住
- linux中的五大查找命令---whereis,find,locate,which,type
- matlab 大于并且小于,Matlab:将大于(小于)1(-1)的元素转换为1(-1)的序列
- Python中查找包含它的列表元素的索引,index报错!!!
- Category 特性在 iOS 组件化中的应用与管控
- PCR之父凯利·穆利斯:有才,真的可以为所欲为
- 如何确定autosar的版本_从工程师的角度看AUTOSAR
- 一个连衣服都穿不整齐的人,代码也肯定写不整齐。
- 右键文件夹没有git clone命令的解决方法
- 翻译:如何理解K-means的缺点
- rollup函数 和cube函数 的区别?
- 嵌入式硬件-读懂原理图
- AI服务官上线“一网通办”:找政府办事就像逛网店
- [车联网安全自学篇] ATTACK安全之交互式/非交互式Shell和登录式/非登录式Shell的检测
- 有没有手机版_漫威定制版智能手机壳 Galaxy S10的小伙伴不容错过
- 疫情下,2020年大数据产业展望
- lamp分离部署+phpmyadmian
- 想要绘图效率节省储存空间?CAD内部图块该怎么创建?
- 11 Tornado - 使用模板