当前位置: 首页 > news >正文

3123004481

第一次个人编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477
这个作业的目标 实现一个论文查重程序
github连接: https://github.com/YezhuT0nyS/3123004481

一、PSP表格如下

Process Stages Process Stages (中文) 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 35
· Estimate · 估计这个任务需要多少时间 160 240
Development 开发 200 180
· Analysis · 需求分析(包括学习新技术) 120 140
· Design Spec · 生成设计文档 15 20
· Design Review · 设计复审 25 25
· Coding Standard · 代码规范(为目前的开发制定合适的规范) 20 10
· Design · 具体设计 40 50
· Coding · 具体编码 50 80
· Code Review · 代码复审 30 60
· Test · 测试(自我测试,修改代码,提交修改) 20 35
Reporting 报告 80 100
· Test Report · 测试报告 40 70
· Size Measurement · 计算工作量 20 20
· Postmortem & Process Improvement Plan · 事后总结,并提出过程改进计划 20 10
· 合计 870 1075

二、计算模块接口的设计与实现过程
程序整体结构
1.模块架构
image

2.程序流程图

3.算法独到之处
核心算法:采用改进的余弦相似度算法,通过词频向量量化文本特征,计算两篇文本的向量夹角余弦值作为重复率。
独到之处:
引入词权重机制,对重要词汇(如专业术语)赋予更高权重

4.改进思路
初始问题:对大文本(10 万字以上)处理时,词频统计和向量计算耗时过长(约 8 秒)
优化措施:
将列表存储改为字典哈希表存储,将词频查询复杂度从 O (n) 降至 O (1)
实现稀疏向量表示,只存储非零值元素
引入缓存机制,复用相同文本的处理结果
使用生成器 (generator) 替代列表推导,减少内存占用
优化效果:处理时间从 8 秒降至 1.2 秒,内存占用减少 65%

6.计算模块异常处理说明
文件不存在异常 (FileNotFoundError)
设计目标:处理输入文件路径错误或文件不存在的情况
测试样例:传入不存在的文件路径 "nonexistent.txt"
错误场景:用户输入了错误的文件路径或文件被误删除

权限错误异常 (PermissionError)
设计目标:处理程序无权限读取文件或写入结果的情况
测试样例:尝试读取系统保护文件或写入只读目录
错误场景:运行程序的用户权限不足

空文件异常 (EmptyFileError)
设计目标:处理原文或抄袭版论文为空的情况
测试样例:传入内容为空的文本文件
错误场景:用户误传空文件或文件内容被清空

格式错误异常 (FormatError)
设计目标:处理非文本格式的文件(如二进制文件)
测试样例:传入图片文件或压缩包作为输入
错误场景:用户传入了错误格式的文件

计算超时异常 (CalculationTimeoutError)
设计目标:防止程序在处理超大文本时无响应
测试样例:传入 500 万字以上的超大文本
错误场景:处理超出预期大小的文本导致计算时间过长
采用增量式词表构建,减少内存占用
实现稀疏向量存储,优化大文本处理性能

http://www.rkmt.cn/news/9919.html

相关文章:

  • 使用python读取windows日志表
  • 9.20 模拟赛 T4
  • Русский язык
  • 【F#学习】布尔运算优先级
  • 深入解析:【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
  • 【本地音乐库】的搭建管理工具推荐
  • 扭曲变形验证码的图像处理与识别思路
  • AI 写代码 “翻车”?人类程序员 “偷笑”?AI能应对我们的问题吗?人工智能到底是“智能”还是“人工”?真相有点意思!
  • 详细介绍:C 语言内存操作函数:memcpy、memmove、memset、memcmp 详解
  • springboot 整合Redis实现发布/订阅功能
  • CCPC online 2025题解 ( A~H+K)
  • Java REST API 三层架构项目目录规划与使用建议
  • 9.22每日总结
  • c++ 线程 单例模式
  • 【51单片机】【protues仿真】基于51单片机PM2.5温湿度测量蓝牙架构
  • 【炼石计划NOIP】第八套 赛后总结
  • vite7-webos网页版os管理|Vue3+Vite7+ArcoDesign搭建pc端os后台系统
  • python_Day22笔记
  • .NET周刊【9月第1期 2025-09-07】
  • 第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码 - 详解
  • SUDO提权
  • 越南文识别技术:将纸质文档和信息快速、准确地转化为可编辑、可检索的数字数据
  • C#编程练习:使用队列存储消息,一次性存10条消息,每隔一段时间打印一条消息控制台打印消息时要有明显停顿感 - 详解
  • 23
  • Automatically Naming the Screenshots to Steam
  • 穷举法(c语言版)
  • 详细介绍:深入理解Kafka事务
  • Python - GaussDB table sync to Hive
  • 很烦不知道 自己以后要做什么,工作不会很稳定。感觉有很多东西要学习 但是 也有很多东西 不会 不知道咋办了
  • 揭秘“牛牛透视”