莽荒纪人物出场数据统计

news2024/11/26 22:52:08

今天继续给大家介绍Python相关知识,本文主要内容莽荒纪人物出场数据统计。

一、中文文本词频统计思路

在上文Python英文词频统计(哈姆雷特)程序示例中,我们进行了英文单词的统计。今天,我们进行中文人物出场频率统计。
与前文相比,本文主要难点有三个,一是相比于由单词构成的英文,中文没有直接的用空格分隔的规律,需要先进行分词;二是中文分词的结果并不是人物,我们还需要想办法转换成人物;三是有些人物具有多个名称,我们需要将这多个名称对应同一个人物。
为了解决中文分词的问题,我们需要使用jieba词库来进行中文分词;为了解决分词结果不是人物的问题,我们可以根据词性来排除大部分选项,只保留筛选人物名词,然后根据结果进行不断修正;为了解决单个人物有多个名称的问题,我们需要在进行中文分词后,进行特殊处理,将这多个名称归一到一个人物身上。

二、中文文本词频统计程序编写

根据上述思路,我们就可以进行中文人物频率统计程序编写了。首先编写程序如下所示:

import jieba.posseg as pseg
f=open("C:\\Users\\Administrator\\Desktop\\莽荒纪.txt","rt",encoding="utf-8")
MangStr=f.read()
f.close()
MangList=pseg.cut(MangStr)
MangDic=dict()
for word,flag in MangList:
    if flag=="nr":
        MangDic[word]=MangDic.get(word,0)+1
MangSeq=list(MangDic.items())
MangSeq.sort(key=lambda x:x[1],reverse=True)
for i in range(30):
    word,count=MangSeq[i]
    print("人物{}在莽荒纪中出现次数为第{},出现了{}次".format(word,i+1,count))

上述程序运行结果如下所示:
在这里插入图片描述

三、结果修正与效果展示

从上图中可以看出,我们完成了莽荒纪中文分词,并进行了人物出现频次统计,但是由于jieba并不能准确的识别判定,因此我们还需要对上述结果进行手动修正。一是删除上图中不存在的人物,二是将同一个人物的不同名称,归一为一个人物进行处理。
删除不存在的人物增加代码如下所示:

for word,flag in MangList:
    if flag=="nr":
        if word=="向纪宁" or word=="和纪宁" or word=="北冥":
            word="纪宁"
        MangDic[word]=MangDic.get(word,0)+1
exclude={"帝君","连","明白","老祖","师兄","真仙","师傅",
         "纪氏","修仙","王","尉迟","少炎氏","黄毛","鸿","雪城",
         "古老","须知","师尊","王朝","祖","真灵","文明","玄妙",
         "金光","北虹剑","宫","白发","宝贝","奥妙","府","天苍宫",
         "纪","师姐","北冥剑","冷笑","应龙卫","莫道","紫光","祖神祖",
         "宫殿","金丹","小家伙","北冥剑"}
for word in exclude:
        del MangDic[word]

对同一人物进行归一化处理代码如下所示:

if flag=="nr":
    if word=="向纪宁" or word=="和纪宁" or word=="北冥":
        word="纪宁"
    MangDic[word]=MangDic.get(word,0)+1

这样,最后的代码如下所示:

import jieba.posseg as pseg
f=open("C:\\Users\\Administrator\\Desktop\\莽荒纪.txt","rt",encoding="utf-8")
MangStr=f.read()
f.close()
MangList=pseg.cut(MangStr)
MangDic=dict()
for word,flag in MangList:
    if flag=="nr":
        if word=="向纪宁" or word=="和纪宁" or word=="北冥":
            word="纪宁"
        MangDic[word]=MangDic.get(word,0)+1
exclude={"帝君","连","明白","老祖","师兄","真仙","师傅",
         "纪氏","修仙","王","尉迟","少炎氏","黄毛","鸿","雪城",
         "古老","须知","师尊","王朝","祖","真灵","文明","玄妙",
         "金光","北虹剑","宫","白发","宝贝","奥妙","府","天苍宫",
         "纪","师姐","北冥剑","冷笑","应龙卫","莫道","紫光","祖神祖",
         "宫殿","金丹","小家伙","北冥剑"}
for word in exclude:
    try:
        del MangDic[word]
    except:
        pass            
MangSeq=list(MangDic.items())
MangSeq.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
    word,count=MangSeq[i]
    print("人物{}在莽荒纪中出现次数为第{},出现了{}次".format(word,i+1,count))

上述代码执行结果如下所示:
在这里插入图片描述
从上图可以看出,莽荒纪人物出场数据统计成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java服装经销系统服装进销系统

简介 Ssm服装经销系统,主要分为6个角色:管理员、资料员、采购员、仓库员、售卖员、财务。采购员进行采购入库;仓库员进行采购入库、退货入库、提货出库、折损出库等库存管理;售卖员进行填单的创建,然后去仓库那里提货…

Score Matching

目录简介Score Function求解方法emm参考简介 score matching算法是一种求解概率密度函数的参数的算法。 在很多情况下,概率密度函数可以表示为: p(ξ;θ)1Z(θ)q(ξ;θ)p(\xi;\theta)\frac{1}{Z(\theta)}q(\xi;\theta) p(ξ;θ)Z(θ)1​q(ξ;θ) 假设我…

[Java] 什么是锁?什么是并发控制?线程安全又是什么?锁的本质是什么?如何实现一个锁?

文章目录前言并发控制并发访问控制是什么?如何实现并发访问控制?并发访问控制 与 线程安全锁是什么?1. 加锁操作2. 解锁操作锁状态是什么?如何实现一个锁?笔者相关博客连接结语前言 多线程编程中,锁是最重要…

oracle (+)学习

最近工作需要将oracle的存储过程转化为hive的sql脚本。遇到很多不一样的地方,例如oracle连接中有()号的用法。 借鉴这篇文章,但是这个排版比较烂。。。 oracle ()的,Oracle中()的作用_大雪菜的博客-CSDN博客 先建表和插入数据 --生成部门表CREATE TA…

2014年蓝桥杯Java C组——猜年龄

2014年蓝桥杯Java C组——猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“ 我们俩的年龄之积是年龄之和的6倍”。 小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。” 请你写出:小明的较小的…

状态模式

文章目录状态模式1.状态模式的本质2.何时选用状态模式3.优缺点4.状态模式的结构5.实现上下文中维护状态及转换状态上下文中维护状态处理类中转换状态状态模式 状态模式说白了就是不同的状态,执行不同的行为,也就是状态和行为分离 1.状态模式的本质 状态模…

Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统

EclipseJavaSwingMysql实现自助存取款机ATM系统一、系统介绍1.系统功能2.环境配置3.数据库4.工程截图二、系统展示1.登录页1.1登录成功2.注册系统3.取款3.1取款成功4.存款4.1 存款成功5.转账6.余额查询7.退出系统三、部分代码DBUtil.javaLoginFrame.javaAccount.java四、其他获…

python编程 for循环注意点与大写转换案例

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 range方法 一for循环表达式 for循环表达式 与数字有关 与单位有关 前言…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于信息安全的无锡旅游服务系统5l83d

面对老师五花八门的设计要求,首先自己要明确好自己的题目方向,并且与老师多多沟通,用什么编程语言,使用到什么数据库,确定好了,在开始着手毕业设计。 1:选择课题的第一选择就是尽量选择指导老师…

MHA的故障切换你掌握了吗?

MHA的概述 什么是MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程…

用Python构建Amazon产品推荐系统!这项目价值能有2000吗?

引言 该项目的目标是部分重建Amazon电子类产品的推荐系统。 现在是十二月!你是什么类型的购物者?双十二都购买了吗?你是把当天想购买的所有产品都保存起来,还是宁愿打开网站,查看带有巨大折扣的现场优惠呢&#xff1…

从单服务器模式到负载均衡设计

从单服务器模式到负载均衡设计 作者:Grey 原文地址: 博客园:从单服务器模式到负载均衡设计 CSDN:从单服务器模式到负载均衡设计 单服务器模型是最简单的一种架构,参考如下图 用户访问一个 URL,URL 会…

java计算机毕业设计基于安卓Android的校园外卖点餐APP

项目介绍 餐饮行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,餐饮行业也在发生着变化,单就点餐这一方面,利用手机点单正在逐步进入人们的生活。传统的点餐方式,不仅会耗费大量的人力、时间,有时候还会出错。Android系统伴随智能手机为我们提供了新的方向。手…

基于转换器 (MMC) 技术和电压源转换器 (VSC) 的高压直流 (HVDC) 模型(MatlabSimulink实现)

目录 1 概述 2 主要模块说明 2.1 简化电网 2.2 转换器 1 2.3 直流电路 2.4 控制器 2.5 示波器和测量 3 讲解 3.1 参数设置 3.2 SPS 比较 3.3 结果比较 3.4 参考文献 4 Matlab代码实现 1 概述 1000 MW HVDC-MMC 互连的 SPS 模型。本文基于模块化多电平转换器 (MMC)…

计算机网络-数据链路层:以太网协议、ARP协议、MAC、MTU

目录 一、以太网协议 1. 认识以太网 2. 协议格式 二、 MAC地址 1. 认识MAC地址 2. 对比MAC地址与IP地址 三、ARP协议 1. 认识ARP协议 2. ARP协议的作用 3. ARP协议的工作流程 4. ARP欺骗攻击 四、MTU 1. 认识MTU 2. MTU对IP协议的影响(了解&#xff…

在线教育系统源码讲解与代码分析

目前,许多行业已经开始向直播领域靠拢,例如直播带货、教育直播、娱乐直播等领域,想要在此分一杯羹,以在线教育系统来说,在2020年以后便进入了“白热化”,更多的直播、教育展现在大众视野中。在粉丝经济的时…

Linux的进程空间管理

用户态和内核态的划分 进程的虚拟地址空间,其实就是站在项目组的角度来看内存,所以我们就从task_struct出发来看。这里面有一个struct mm_struct结构来管理内存。 struct mm_struct *mm; 在struct mm_struct里面,有这样一个成员变量&#…

如何利用ArcGIS实现电子地图可视化表达?分析空间数据?提升SCI论文的层次?探究环境与生态因子对水体、土壤、大气污染物等影响?

查看原文>>>如何利用ArcGIS探究环境与生态因子对水体、土壤、大气污染物等影响 如何利用ArcGIS实现电子地图可视化表达?如何利用ArcGIS分析空间数据?如何利用ArcGIS提升SCI论文的层次?制图是地理数据展现的直观形式,也是…

ARM存储模型(数据存储、指令存储)

目录 1、ARM数据存储 (1) ARM数据类型 (2) ARM数据存储的方式 2、ARM的指令存储 (1) 指令集的分类 (2) 为什么ARM指令集的PC值与低2位无关? 1、ARM数据存储 (1) ARM数据类型 ARM采用32位架构,即ARM一次可以处理32bit的数据,基本的数据…

Linux--进程间通信(2)--共享内存--1126

1.共享内存的原理 进程A先申请一段内存空间,其页表映射到物理空间,进程B通过A的页表映射,将B的页表也同样映射到同一块物理空间。 释放共享内存 各自修改各自的页表指向并释放共享内存 2.共享内存的建立过程 头文件 comm.hpp #pragma o…