第一次个人编程作业

这个作业属于哪个课程 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

设计目标
确认读取的文件成功读入

posted @   陈鸿航  阅读(18)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示