第一次个人编程作业(python论文查重)
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade21-12 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014 |
这个作业的目标 | 熟练使用python语言、学习与使用 GitHub、分析作业需求 |
GitHub地址:https://github.com/TanYYin/TanYYin/blob/main/3221004812/plagiarism.ipynb
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 50 |
· Estimate | · 估计这个任务需要多少时间 | 250 | 300 |
Development | 开发 | 300 | 320 |
· Analysis | · 需求分析 (包括学习新技术) | 150 | 180 |
· Design Spec | · 生成设计文档 | 40 | 20 |
· Design Review | · 设计复审 | 25 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
· Design | · 具体设计 | 100 | 120 |
· Coding | · 具体编码 | 120 | 180 |
· Code Review | · 代码复审 | 40 | 45 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 100 |
Reporting | 报告 | 40 | 60 |
· Test Repor | · 测试报告 | 30 | 45 |
· Size Measurement | · 计算工作量 | 15 | 15 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
· 合计 | 1240 | 1470 |
计算模块接口部分的设计与实现过程
1.接口
2.流程
3.算法
分子为两个向量内积,分母为两个向量模(长度)的积。通过公式,可以直观的认为其一定程度上消除了向量长度的影响,余弦相似度体现的是方向的差异。(欧氏距离体现的是距离差异)
当夹角为0,两个向量同向,相当于相似度最高,余弦值为1
当夹角90°,两个向量垂直,余弦为0。
当夹角180°,两个向量反向,余弦为-1
计算模块接口部分的性能改进
使用cprofile.run()函数对计算模块接口进行性能分析
1.函数调用次数(ncalls):可以看到每个函数被调用的次数,通过比较调用次数,了解哪些函数在程序执行过程中起到了重要的作用。
2.总时间(cumtime)和单次调用时间(percall):时间指标可以告译你程序中的哪些函数比较耗时,可能是潜在的性能瓶颈。
3.源文件和行号(filename:lineno):需要深入分析程序的执行过程,可以关注具体的源文件和行号,这样可以找到关键的代码段,并进行进一步的优化或调试。
计算模块部分异常处理说明
代码路径要变成双斜线\才可以不然会造成路径读取问题
程序对文件路径进行判断,如果文件路径不存在,则退出程序。os.path.exists()方法用于检验文件是否存在。