python统计文档词数

题目1

莎士比亚的经典悲剧Hamlet,获取该故事的文本文件,保存为hamlet.txt,统计该故事的英文词频。
提示:
(1)处理文本,统一格式。英文单词一般以空格、标点符号或特殊符号进行分割,可以将标点符号或特殊符号都替换成空格(使用 .replace()方法),之后进行单词提取。(注意英文单词字母大小写问题 .lower())
(2)对单词进行计数。使用字典count,其键值分别为单词word及出现的次数,统计次数可使用count[word] = count.get(word,0) + 1
(3)对单词统计值从高到低排序输出,例如,输出qian10个高频词。字典美欧顺序,可借助列表结构,使用sort()方法配合lambda函数实现排序。

Items = list(count.items()) #将字典转换为列表,思考下该列表元素的结构

Item.sort(key = lambda x: x[1], reverse = True) #以记录的第二列即次数进排序

编写程序,观察输出结果,高频单词中虚词居多,为了能够体现文章含义,可以建立一个排除库excludes,将虚词排除掉,再观察输出结果。

# 定义需要排除的虚词列表
excludes = {'the', 'and', 'of', 'to', 'in', 'a', 'that', 'is', 'for', 'it', 'with', 'on', 'as', 'was', 'by', 'at', 'an','be', 'this', 'which', 'or', 'from', 'but', 'not', 'are', 'have', 'they', 'you', 'one', 'had', 'all', 'we','can', 'her', 'has', 'there', 'been', 'if', 'more', 'when', 'will', 'would', 'who', 'so', 'out', 'up','their', 'what', 'about', 'into', 'than', 'its', 'some', 'could', 'them', 'these', 'may', 'other', 'then','do', 'only', 'time', 'new', 'like', 'any', 'now'}def count_words(file_name):# 打开文件并读取内容with open(file_name, 'r') as file:text = file.read()# 将所有非字母字符替换为空格,并转换为小写text = text.lower().replace(',', ' ').replace('.', ' ').replace('!', ' ').replace('?', ' ').replace(':',' ').replace(';', ' ').replace('-', ' ').replace('_', ' ').replace('(', ' ').replace(')', ' ').replace('[', ' ').replace(']',' ').replace('{', ' ').replace('}', ' ').replace('"', ' ').replace("'", ' ')# 分割文本为单词列表words = text.split()# 统计单词出现次数,排除虚词count = {}for word in words:if word not in excludes:count[word] = count.get(word, 0) + 1return countdef print_top_words(count, num=10):# 将字典转换为列表并按值排序items = list(count.items())items.sort(key=lambda x: x[1], reverse=True)# 输出前num个高频词for word, freq in items[:num]:print(f'{word}: {freq}')# 主程序
if __name__ == "__main__":hamlet_count = count_words('hamlet.txt')print("Top 10 words in Hamlet (excluding common words):")print_top_words(hamlet_count, 10)
题目2

中文词频统计。《三国演义》人物出场统计。
(1)使用jieba库进行分词
(2)进行词频统计
观察程序运行结果,排除与人名无关的词。对程序进行完善,同一人物有不同的名字,需要整合处理。

import jieba
from collections import Counter# 假设我们有一个简化版的人物别名映射
name_aliases = {"刘备": ["玄德", "刘玄德"],# ...其他人物及其别名
}# 读取文本文件
with open('三国演义.txt', 'r', encoding='utf-8') as file:text = file.read()# 使用jieba分词
words = jieba.lcut(text)# 初始化Counter对象
word_counts = Counter(words)# 整合人物别名
for name, aliases in name_aliases.items():for alias in aliases:word_counts[name] += word_counts.pop(alias, 0)# 排除一些常见非人名词语
exclude_words = {"的", "在", "了", "和", "是", "有", "我", "他", "这", "那", "不", "一个", "人", "说"}
word_counts = Counter({word: count for word, count in word_counts.items() if word not in exclude_words})# 获取前10个高频词(确保word_counts仍然是Counter对象)
top_characters = word_counts.most_common(10)# 输出结果
print("人物出场统计(前10名):")
for character, count in top_characters:print(f"{character}: {count}次")

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

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

相关文章

TCP/IP协议——使用Socket套接字实现

目录 Socket 使用Socket实现TCP客户端和服务器的过程 使用Socket搭建TCP服务器 线程优化 向客户端发送消息 连接的断开 客户端主动断开 服务端主动断开 服务器完整的程序 使用Socket编写客户端程序连接TCP服务器 Socket Socket是一种网络通信协议,它允许…

x-cmd pkg | yazi - 超快终端文件管理器

目录 简介快速入门功能特点竞品和相关项目进一步阅读 简介 yazi 是由 github.com/sxyazi 用 Rust 开发的终端文件管理器,支持预览文本文件、pdf 文件、图像、视频,内置代码高亮功能。在内部,它使用 Tokio 作为其异步运行时,以非阻…

【Vue3】watch 监视多种类型数据

【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…

大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

实战:Zookeeper 简介和单点部署ZooKeeper

Zookeeper 简介 ZooKeeper是一个开源的分布式协调服务,它是Apache软件基金会下的一个项目,旨在解决分布式系统中的协调和管理问题。以下是ZooKeeper的详细简介: 一、基本定义 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…

系统架构师考点--系统架构设计(下)

大家好。今天总结一下系统架构设计的最后一部分知识点。 一、软件系统的质量属性 软件系统的质量属性 软件系统的质量属性可分为开发期质量属性和运行期质量属性2个部分。 1、开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面: …

C++ 关键字与库函数 学习总结

sizeof与strlen 含义 sizeof:是一个操作符,用于计算数据类型或变量的大小(以字节为单位)。在编译时求值strlen: 是一个函数,用于计算字符串的长度(不包括终止符 \0)。在运行时求值不…

【Code】Street-Gaussian代码复现笔记

文章目录 1. EnvironmentBug 1 2. TrainingBug 2Bug 3 1. Environment Follow the original instructions, conda create --name street-gaussians-ns -y python3.8 conda activate street-gaussians-ns pip install --upgrade pippip install torch2.1.2cu118 torchvision0.…

深度解析程序员面试中的“八股文”:助力还是阻力?

深度解析程序员面试中的“八股文”:助力还是阻力? 引言 在如今的求职市场中,程序员面试中的“八股文”几乎成为了一种必考内容。所谓“八股文”,指的是一系列标准化的技术面试题目,这些题目涵盖了算法、数据结构、操…

杂记-镜像

-i https://pypi.tuna.tsinghua.edu.cn/simple 清华 pip intall 出现 error: subprocess-exited-with-error 错误的解决办法———————————pip install --upgrade pip setuptools57.5.0 ————————————————————————————————————…

bugku-web-ctf-变量1

<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET[args])){$args $_GET[args];if(!preg_match("/^\w$/",$args)){die("args error!");}eval("var_dump($$args);"); } ?> error_r…

setTimeout 和 setInterval

在JavaScript中&#xff0c;setTimeout 和 setInterval 是两个用于定时操作的函数&#xff0c;它们都定义在 window 对象上&#xff0c;并且是Web API的一部分。 setTimeout setTimeout 函数用于在指定的毫秒数后执行一个函数或一段代码。这个函数只执行一次。 语法&#xf…

扩展------正向代理和反向代理怎么理解?

今天看博客园&#xff0c;突然看到正向代理和反向代理&#xff0c;发现自己还不会就稍微研究了一下。 正向代理----(看做是服务员) 当我们进饭店吃饭&#xff0c;我们不可能会直接去后厨叫厨师给我们做菜&#xff0c;而是通过服务员去通知&#xff0c;这个就叫做正向代理。 再…

为什么请求频率高,就应该使用轮询而不是中断呢?

在某些情况下&#xff0c;如果请求频率很高&#xff0c;使用轮询&#xff08;Polling&#xff09;而不是中断&#xff08;Interrupts&#xff09;可能更合适。以下是一些原因&#xff1a; **减少中断处理开销**&#xff1a; - 每次中断发生时&#xff0c;都需要保存和恢复上…

当年很流行,现在已经淘汰的Java技术,请不要学了!【建议收藏】

在Java技术的发展历程中&#xff0c;确实有一些曾经流行但现在已经被淘汰或不再推荐使用的技术。了解这些技术可以帮助你避免学习过时的知识&#xff0c;从而更高效地提升自己的技能。 以下是一些曾经流行但现在已经不太推荐学习的Java技术&#xff1a; 1. Servlet 2.x&#x…

【二叉树】|代码随想录算法训练营第18天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、【总结】

刷题神器 代码随想录 往期回顾 >【二叉树】|代码随想录算法训练营第17天|235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点 题目 669. 修剪二叉搜索树 题目&#xff1a;题目链接 文章&#xff1a;文章讲解 视频&#xff1a;视频讲…

架构师的36项修炼 学习笔记

架构师的36项修炼 学习笔记 分布式缓存 缓存特点 1.技术简单 2.性能提升明显 3.应用场景多 缓存数据存储 hash表 缓存的关键指标 命中率 缓存失效方式 超时失效 LLT 实时清除 代理缓存 反向代理缓存 多层反向代理缓存 内容分发网络CDN 通读缓存 包括代理缓存…

洛谷P1832 A+B Problem(再升级)题解

思路 先筛出范围内的所有质数&#xff08;埃式筛和欧拉筛都可以&#xff09;&#xff0c;再进行dp,要将dp[0]初始化为1. 状态转移方程 dp[j]dp[j-prime[i]]; 代码 #include<bits/stdc.h> #define endl \n; using namespace std; int n; const int N1e410; bool P[N]…

AI作图接口要怎么调用呢?

一、什么是AI作图&#xff1f; 基于AI大模型的深度学习算法和大规模的图像数据训练&#xff0c;输入图片和关键词&#xff0c;可生成独特及富有创意的山水风格图片。 二、AI作图使用场景有哪些呢&#xff1f; 1.广告与营销&#xff1a; 为产品制作吸引人的宣传海报、广告图片…

git拉完代码总是自动创建一个新的节点

git拉完代码&#xff0c;总是自动生成弹出这个信息 然后还会在git上面留下一个节点&#xff0c;这个节点没啥用&#xff0c;显示着感觉有点碍事。 而且后续的git push 之后&#xff0c;会覆盖掉自己的git commit 的提示&#xff0c;其他人cr代码的时候看到的是 解决方法&#…