个人项目
| 这个作业属于哪个课程 | 这个作业要求在哪里 | 这个作业的目标 |
|---|---|---|
| 软件工程导论 | 个人项目 | 熟悉PSP流程,熟悉项目开发过程 |
GiuHub:https://github.com/XueKaoyao/3223004258
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 60 |
| · Estimate | ·估计这个任务需要多少开发时间 | 350 | 540 |
| Development | 开发 | 360 | 540 |
| · Analysis | ·需求分析(包括学习新技术) | 120 | 140 |
| · Design Spec | ·生成设计文档 | 30 | 30 |
| · Design Review | ·设计复审 | 10 | 20 |
| · Coding Standard | ·代码规范(为目前的开发制定合适的规范) | 10 | 20 |
| ·Design | ·具体设计 | 50 | 70 |
| · Coding | ·具体编码 | 110 | 140 |
| · Code Review | ·代码复审 | 20 | 40 |
| · Test | ·测试(自我测试,修改代码,提交代码) | 20 | 40 |
| Reporting | 报告 | 40 | 40 |
| ·Test Repor | 测试报告 | 50 | 20 |
| · Size Measurement | ·计算工作量 | 5 | 10 |
| · Postmortem & Process Improvement Plan | ·事后总结 | 20 | 30 |
| ·合计 | 1225 | 1740 |
计算模块接口的设计与实现过程
-
接口设计
- 读取文件内容接口:使用
readfile函数来读取一个文件内容并返回该内容,文件路径通过url参数传递,且文件必须用UTF-8编码格式。 - 文本预处理接口:使用
split函数对输入的文本进行预处理,将文本的每句话拆开成一个字一个字放入集合。 - 相似度计算接口:使用
calculate_similarity函数计算两个文档之间的相似度。 - 主函数接口:
main函数是程序的主要逻辑部分。它调用其他函数来读取文件内容、进行预处理和计算相似度,并将结果写入输出文件。 - 性能分析接口:使用
Python的标准库模块cProfile中的cProfile.run函数来对代码进行性能分析。
-
算法关键
- 文本预处理:使用正则表达式来从输入的文本中提取所有的汉字,并将这些汉字以集合的形式返回。
- 相似度计算:使用余弦相似度算法来计算两篇文档之间的相似度。
计算模块接口部分的性能改进
-
性能分析

-
消耗最大函数
split 函数
-
性能改进思路
- 尝试对文件读取进行批量处理或增量读取,以降低内存消耗并提高效率。
- 对正则表达式进行优化,提高更复杂文本处理的效率。
计算模块部分单元测试展示
-
单元测试代码
- test_calculate_similarity :该测试验证了 calculate_similarity 函数对不同文本集合计算相似度的正确性。给定两个文本集合,期望输出的相似度值。
- test_split :该测试验证了 split 函数的正确性。输入文本会被分割成一个集合,去除标点符号并返回每个独立的字。