第一次个人编程作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229 |
这个作业的目标 | 完成项目论文查重并进行性能测试 |
仓库地址https://github.com/cywoo-1/---
1.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 50 |
Estimate | 估计这个任务需要多少时间 | 30 | 30 |
Development | 开发 | 400 | 530 |
Analysis | 需求分析 (包括学习新技术) | 300 | 200 |
Design Spec | 生成设计文档 | 30 | 20 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 15 | 20 |
Design | 具体设计 | 50 | 40 |
Coding | 具体编码 | 350 | 400 |
Code Review | 代码复审 | 60 | 70 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 120 | 150 |
Test Report | 测试报告 | 120 | 140 |
Size Measurement | 计算工作量 | 30 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 10 |
Total | 合计 | 1595 | 1730 |
2.函数设计及流程图
主要函数clean_txt,extract_keywords_tfidf,loadfile
3.算法分析
文本清理
通过网上下载的停用词,对提取的文章进行文本清洗,提高了后续相似度分析的准确性
TF-IDF
TF-IDF 的主要思想是:如果某个单词在一篇文章中出现的频率 TF 高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
余弦相似度
一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。
4.性能测试
运用python中的cProfile进行性能的计算
结果分析
对于extract_keywords_tfidf函数,计算是通过python的库中sklearn中的函数进行。
在其中运行时间最长的函数为loadfile函数。
优化后
减少了中间变量dataset_1的使用,直接处理文件内容并进行清洗后添加到merged_cleaned列表中。
将去除换行符和多余空格的操作合并在一个步骤中,使代码更加简洁。
代码覆盖率
通过python安装的coverage进行代码覆盖率测试
5.模块部分异常处理
1.测试clean_txt
设计目标
确认该函数有完全清理文本和分词的功能
设计目标
确认在读取空文件时会提出警告
测试extract_keywords_tfidf
设计目标
确认权重的计算没有误差
测试loadfile
设计目标
确认读取的文件成功读入
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步