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

第二次软工作业

1.个人项目

这个作业属于哪个课程 个人项目 - 作业 - 计科23级12班 - 班级博客 - 博客园
这个作业要求在哪里 个人项目 - 作业 - 计科23级12班 - 班级博客 - 博客园
这个作业的目标 第一个项目:学习设计一个论文查重算法

GitHub代码仓库 :jhltwo/3123004662

2.PSP2表格

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

3.函数及其关系

plagiarism_checker.py (主程序)
├── 导入模块层
│ ├── sys (系统参数处理)
│ ├── re (正则表达式文本处理)
│ └── difflib.SequenceMatcher (序列相似度计算)
├── 文本预处理层
│ └── preprocess_text()
├── 相似度计算层
│ ├── calculate_jaccard_similarity()
│ ├── calculate_sequence_similarity()
│ └── calculate_character_similarity()
├── 核心算法层
│ └── calculate_plagiarism_rate()
├── 文件I/O层
│ ├── read_file()
│ └── write_result()
└── 应用控制层
└── main()

  1. 函数模块设计

2.1 核心函数清单(共7个函数)

函数名 功能 输入 输出 层级
preprocess_text() 文本预处理 原始文本 清理后文本 预处理层
calculate_jaccard_similarity() Jaccard相似度 两个文本 相似度值[0,1] 计算层
calculate_sequence_similarity() 序列相似度 两个文本 相似度值[0,1] 计算层
calculate_character_similarity() 字符相似度 两个文本 相似度值[0,1] 计算层
calculate_plagiarism_rate() 综合查重算法 原文+抄袭版 最终重复率 核心层
read_file() 文件读取 文件路径 文件内容 I/O层
main() 主控制流程 命令行参数 程序执行 控制层

2.2 函数间关系图

main()
├── read_file() ×2 (读取原文和抄袭版)
└── calculate_plagiarism_rate()
├── preprocess_text() ×2
├── calculate_jaccard_similarity()
├── calculate_sequence_similarity()
└── calculate_character_similarity()

4.性能分析

通过详细的性能分析,我识别出了系统中的主要性能瓶颈:

  1. preprocess_text - 最耗时函数
  • CPU时间占比 :42.8%
  • 主要开销 :正则表达式处理(66.4%)、字符串转换(18.4%)
  • 优化效果 :通过预编译正则表达式,性能提升39.14% 2. calculate_sequence_similarity - 第二耗时函数
  • CPU时间占比 :28.9%
  • 主要开销 :LCS动态规划计算(80.4%)、内存分配(15.5%)
  • 内存消耗 :峰值45.7MB,平均每次调用73.4KB 3. calculate_jaccard_similarity - 第三耗时函数
  • CPU时间占比 :17.4%
  • 主要开销 :集合创建(54.8%)、集合运算(45.2%)

最终性能优化成果 整体性能提升

  • 执行时间优化 : +76.10% (从0.4836ms降至0.1156ms)
  • 内存使用 :保持稳定
  • 结果准确性 :差异在可接受范围内(0.26) 各函数优化效果
    函数名称 时间优化 状态 文本预处理 +39.14% 优化成功 字符相似度 +54.12% 优化成功 Jaccard相似度 -80.32% 需要改进 序列相似度 -45.56% 需要改进

测试函数说明

class TestTextPreprocessing(unittest.TestCase):

"""文本预处理功能测试"""

class TestJaccardSimilarity(unittest.TestCase):

"""Jaccard相似度计算测试"""

class TestSequenceSimilarity(unittest.TestCase):

"""序列相似度计算测试"""

class TestCharacterSimilarity(unittest.TestCase):

"""字符相似度计算测试"""

class TestPlagiarismRate(unittest.TestCase):

"""综合抄袭率计算测试"""

class TestFileReading(unittest.TestCase):

"""文件读取功能测试"""

class TestEdgeCases(unittest.TestCase):

"""边界情况和异常测试"""

image-20250923221400291

异常处理

image-20250923222006553

http://www.hskmm.com/?act=detail&tid=15097

相关文章:

  • 9.23总结
  • 日志|力扣|不同路径|最小路径和|动态规划|Javase|IO|File|Javaweb
  • 如何建立 5 μm 精度的视觉检测?不仅仅是相机的事
  • 函数 cmd_info_change_cur_model_group
  • 线程--相关概念、两种创建线程的方式
  • 恢复某个数据文件不适当,导致DataGuard无法open数据库
  • Nginx 部署及配置
  • vite静态资源处理
  • 洛谷B4040 [GESP202409 四级] 黑白方块 题解
  • SerpApi:一站式搜索引擎数据抓取API完全指南
  • 补whk时的鲜花(持续更新)
  • css 使用记录 随笔
  • newDay02
  • 【OI 档案-2025】CSP 赛前集训记(初赛后+复赛)
  • Git 从零到一:以 Gitee 为例的实战与可视化指南
  • 代码随想录算法训练营第七天 |第454题.四数相加II、383. 赎金信、第15题. 三数之和
  • day06
  • 前沿速览:TrafficVLM、DeepSeek-Terminus、Qwen3-Omni、蚂蚁百灵、Wan2.2-Animate、Qianfan-VL
  • 代码随想录算法训练营第七天 | leetcode 454 383 15 18
  • 概率期望
  • Day2
  • 2025.9.23总结 - A
  • 8
  • 从3亿到48亿:NuGet周下载量跃迁背后的.NET生态演进与未来挑战(2019-2025)
  • 实用指南:PHP 使用说明
  • 9月23号
  • CF520E Pluses everywhere 题目分析
  • java里面的IO流分为哪几种,他们的区别是什么呢
  • ReLU函数及它的导数
  • 基础数论