软件工程-作业2:第一次个人编程作业

news/2025/3/7 1:21:22/文章来源:https://www.cnblogs.com/114514Hush/p/18756851
这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023
这个作业在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324
这个作业的目标 系统化流程地完成软件开发,使用性能测试工具和单元测试以优化程序

Github链接

https://github.com/RaoHush/3123004152

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 5 15
Estimate 估计这个任务需要多少时间 60 90
Development 开发
Analysis 需求分析(包括学习新技术) 120 60
Design Spec 生成设计文档 60 30
Design Review 设计复审 45 40
Coding Standard 代码规范(为目前的开发制定合适的规范) 60 30
Design 具体设计 45 60
Coding 具体编码 220 200
Code Review 代码复审 60 45
Test 测试(自我测试,修改代码,提交修改) 120 120
Reporting 报告
Test Repor 测试报告 60 120
Size Measurement 计算工作量 20 20
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 60 45
合计 935 875

模块设计与实现

使用说明

从命令行参数给出:python main.py [原文文件绝对路径] [抄袭版论文的文件绝对路径] [答案文件绝对路径]
稍微修改过,抄袭版论文绝对路径可使用通配符模式,如"orig_0.8_*",可识别所有有此命名文件,并将结果统一输出。

核心函数解析

①文件读取 (read_file)

•流程:
1.使用UTF-8编码尝试读取文件
2.替换Unicode特殊空格(\u3000全角空格、\xa0不间断空格)
3.异常处理:文件不存在或权限问题时报错退出
•关键点:
1.errors='ignore':跳过非法字符,避免解码失败
2.统一空格格式:确保后续处理的文本一致性

②文本预处理 (preprocess)

•流程:
1.清洗:使用正则表达式去除非中文、字母、数字的字符
2.分词:结巴分词将文本切分为词语列表
3.过滤:移除长度≤1的词语(如标点、单字)

③ 相似度计算 (calc_similarity)

•流程:
1.初始化TF-IDF模型:token_pattern保留所有词语(默认过滤单字)
2.特征转换:将两文本合并拟合生成TF-IDF矩阵
3.相似度计算:使用余弦相似度比较两个向量
•注意点:
1.每次调用会新建TfidfVectorizer,导致重复拟合(性能瓶颈)
2.返回值限制在0.0~1.0之间(max(0.0, min(1.0, ...))在main中处理)

④主流程 (main)

•执行流程:
1.参数校验:必须传入3个参数(原文路径、抄袭文件模式、输出路径)
2.原文处理:读取原文并预处理为标准格式
3.文件匹配:
•直接路径:检查是否为有效文件
•通配符:使用glob.glob批量获取文件
4.遍历处理:
•读取抄袭文件 → 预处理 → 计算相似度 → 记录结果
5.结果写入:按文件名:评分格式输出到文件

性能分析

性能消耗

每次计算相似度时都新建TfidfVectorizer,导致原文被重复处理。
逐个处理抄袭文件,无法利用多核CPU。

改进

优先实施TF-IDF模型复用
引入并行处理

性能分析图

image

单元测试

image

异常处理

1.传输文章不存在

image

2.错误编码

image

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

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

相关文章

LLaVA 论文笔记

介绍 提出了 visual instruction-tuning,这是将指令微调扩展到多模态的首次尝试 相关工作 多模态的指令微调 Agent、指令微调 数据 使用 ChatGPT/GPT-4 来将数据转化为 multimodel instrustion-following data 为每一个图像生成三种 mulmodal instruction-following data,对于…

FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战

title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀 date: 2025/3/7 updated: 2025/3/7 author: cmdragon excerpt: 本教程深入探讨 FastAPI 请求体参数与 Pydantic 模型的核心机制,涵盖从基础模型定义到嵌套模型的高级用法。通过详细的代码示例…

主机、主机中的Ubuntu虚拟机、与ixm6ull开发板三者互ping且均能联网个人流程记录

1.0 设备连接要求笔记本通过网线连接到开发板,且笔记本通过 usb转type-c线连接到开发板的对应位置(USB TTL那个)。 笔记本需要连接WIFI。 笔记本、开发板、Ubuntu虚拟机启动且能够正常运行。2.0 打开WIFI的网络共享 控制面板 -> 网络和 Internet -> 网络和共享中心,选…

基于PID控制器的六自由度串联机器人控制系统的simulink建模与仿真

1.课题概述 基于PID控制器的六自由度串联机器人控制系统的simulink建模与仿真。2.系统仿真结果 (完整程序运行后无水印) 3.核心程序与模型 版本:MATLAB2022a 4.系统原理简介六自由度串联机器人控制系统是机器人学中的一个核心问题,其中PID控制器因其简单、实用和易于调整…

Windows快捷方式文件相对路径

前言全局说明Windows快捷方式相对路径 通常情况下创建快捷方式,使用的都是绝对路径,如果文件目录迁移到别的地方,不同路径下,那么这个快捷方式就失效了,如果使用相对路径,只要父文件夹不变,那么子文件夹中的快捷方式就能一直有效。一、说明 1.1 环境: Windows 11 家庭版…

基于GARCH-Copula-CVaR模型的金融系统性风险溢出效应matlab模拟仿真

1.程序功能描述 基于GARCH-Copula-CVaR模型的金融系统性风险溢出效应matlab模拟仿真,仿真输出计算违约点,资产价值波动率,信用溢价,信用溢价直方图等指标。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序%计算违约点 DP …

Java笔记-17、Web后端基础 Java操作数据库

JDBCsun公司官方定义的一套操作所有关系型数据库的规范,即接口。 各个数据库厂商去实现这套接口,提供数据库驱动jar包。 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。public void testUpdate() throws Exception {// 注册驱动Class.forName(&qu…

netcore后台服务慎用BackgroundService

在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景。 BackgroundService 一时爽,并发火葬场。 BackgroundService 适用于单实例的无状态后台任务,例如:定期清理任务(删除过期数据、日志清理) 轻量级定时任务(如定期检查…

基于遗传优化SVM的电机参数预测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)输入:电机结构参数x1 x2 x3 x4 x5(分别是铁心高度 铁心厚度 绕组匝数 窗口宽度 导线截面积 ) 目标值:体积v、加速度ax、加速度ay和加速度az 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作…

JetBrains Rider 2024软件下载与安装教程

Rider2024是一款基于IntelliJ以及ReSharper所开发的跨平台式的开发环境,并且该软件也是C#、Unity等应用程序的专属开发环境。提供了极为强大的代码编辑器,对于C#和Unity等都能完美兼容,开发者用户们能够在其中轻松自在的编写出代码项目,同时还提供了智能代码补全的功能,提…

JetBrains CLion 2024软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【046】三位数字即可免费获取分享链接,无广告拒绝套路;2、安装教程(建议关闭杀毒软件)解压下载安装包文件,双击exe安装,弹窗安装对话框点击下一步选择软件的安装路径,选择C盘之外的空间,点击下一步创建桌面快捷方式勾选…

2025.3.6 起步

今天学习了web安全的基本知识 1,http,一种协议,常用TCP 2,http的请求方法(GET/POST/PUT...)和请求状态(200 OK/404 NOT FOUND...) 3,URL网址,及其组成 4,UA头,User-Agent,可以知道操作系统、CPU、浏览器类型 5,BurpSuite抓包返回包,可以得到很多信息6,Referer,告诉…