软件工程第二次作业

一,github链接:https://github.com/mmt-hub/3123004483

二,PSP表格

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477
这个作业的目标 <设计一个论文查重系统,并进行性能分析与测试>
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 50
· Estimate · 估计这个任务需要多少时间 30 50
Development 开发 360 380
· Analysis · 需求分析(包括学习新技术) 120 90
· Design Spec · 生成设计文档 30 40
· Design Review · 设计复审 30 40
· Coding Standard · 代码规范(为目前的开发制定合适的规范) 20 20
· Design · 具体设计 40 50
· Coding · 具体编码 60 70
· Code Review · 代码复审 20 30
· Test · 测试(自我测试,修改测试,提交修改) 40 40
Reporting 报告 80 90
· Test Report · 测试报告 30 40
· Size Measurement · 计算工作量 20 20
· Postmortem & Process improvement Plan · 事后总结,并提出修改过程改进计划 30 30
合计 470 520

三,计算模块接口的设计与实现过程
3.1 主要函数
read_file(file_path):读取文本文件并进行基础清洗
tokenize(text):将中文文本转换为分词序列
get_tfidf_vectors(text1, text2):将两个文本转换为TF-IDF特征向量
cosine_similarity(vec1, vec2):计算两个向量的余弦相似度
main():程序执行的总体控制和调度

3.2 函数关系图

屏幕截图 2025-09-22 193206

3.3 主要算法设计
3.3.1 TF-IDF向量转换:
文本数值化:将文字转换为计算机可处理的数字向量。
关键词提取:通过词频(TF)和逆文档频率(IDF)识别重要词汇。
内容权重分配:给重要词汇更高权重,常见词汇更低权重。

3.3.2 余弦相似度:
方向比较:衡量两个向量在方向上的相似性,忽略长度影响。
文本匹配:计算两篇文档在内容主题上的相似程度。
归一化输出:提供0-1范围内的标准化相似度得分。

四,计算模块接口部分的性能改进
4.1 初始代码的性能分析图

屏幕截图 2025-09-23 110410

4.2 修改内容
4.2.1 简化 IDF 计算:
原公式 idf = np.log(2.0 / (df + 1)) 每次都要调用一次 C 库对数函数,在万级词汇量下累计耗时可观。改成纯代数式 idf = 3.0 / (df + 1)——既消除 log,又把“2”换成“3”让结果范围与原来近似,无需再归一化。
4.2.2 预分配数组:
原代码用 vector1.append(tf * idf) 动态增长列表,Python 层每追加一次都要检查容量、可能重新分配并拷贝数据。修改后,一次性申请好连续内存,后续按索引写入,复杂度从均摊 O(n) 变成严格 O(n)。

4.3 修改后的性能分析图

屏幕截图 2025-09-22 144117

五,计算模块部分单元测试展示
5.1 测试函数:test_tokenize_punct_only
测试目标:验证纯标点文本的分词结果,确保常见中文标点被单独切出。
构造测试数据思路:仅使用常见的中文标点的场景。
测试代码:

屏幕截图 2025-09-23 120258

5.2测试函数:test_read_file_ok
测试目标:验证 read_file 在读取到带引号类标点时会自动去除这些符号。
构造测试数据思路:mock 的数据本身不带任何引号,确保 read_file 内部的“去引号”逻辑正确。

屏幕截图 2025-09-23 120330

5.3 覆盖率测试结果

屏幕截图 2025-09-23 115842

六,计算模块部分异常处理说明
当无法读取到正常文件时,系统会主动报错并提示用户重新检查输入内容。

屏幕截图 2025-09-23 120519

posted @ 2025-09-23 12:43  Hsibo  阅读(13)  评论(0)    收藏  举报