个人项目:论文查重
作者:互联网
这个作业属于哪个课程 | 班级的链接 |
---|---|
这个作业要求在哪里 | 作业要求的链接 |
这个作业的目标 | 实现论文查重算法,学会使用PSP表格估计,学会 Git commit 规范,学会单元测试 |
目录
1.Github仓库
2.PSP表格
3.计算模块接口的设计与实现过程
4.计算模块接口部分的性能改进
5.计算模块部分单元测试展示
6.计算模块部分异常处理说明
1.Github仓库
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 5 | 5 |
· Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 290 | 390 |
· Analysis | · 需求分析 (包括学习新技术) | 20 | 25 |
· Design Spec | · 生成设计文档 | 0 | 0 |
· Design Review | · 设计复审 | 0 | 0 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
· Design | · 具体设计 | 0 | 0 |
· Coding | · 具体编码 | 200 | 250 |
· Code Review | · 代码复审 | 30 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 40 |
Reporting | 报告 | 35 | 45 |
· Test Repor | · 测试报告 | 20 | 30 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 10 |
. Total | · 合计 | 330 | 440 |
3.计算模块接口的设计与实现过程
1.类型层次结构
2.算法的部分思想
由于此为小型项目,故在此处选择字为向量,虽然准确率降低,但速度提高不少。
注:虽然词更为准确,但分词却需要增加额外的复杂度
每个字在章节中出现的次数,便是此字向量的值。现在我们假设:
章节1中出现的字为:Z1c1,Z1c2,Z1c3,Z1c4……Z1cn;它们在章节中的个数为:Z1n1,Z1n2,Z1n3……Z1nm;
章节2中出现的字为:Z2c1,Z2c2,Z2c3,Z2c4……Z2cn;它们在章节中的个数为:Z2n1,Z2n2,Z2n3……Z2nm;
其中,Z1c1和Z2c1表示两个文本中同一个字,Z1n1和Z2n1是它们分别对应的个数,
最后我们的相似度可以这么计算:
程序为了加快效率,有两个小特点:
1. 只将汉字作为向量,其他的如标点,数字等符号不处理;
2. 在HashMap中存放汉字和其在文本中对于的个数时,先将单个汉字通过GB2312编码转换成数字,再存放。
算法复杂度大致为:document1.length + document2.length。
4.计算模块接口部分的性能改进
JProfiler的性能分析图
由图可见本算法对char和String字符的使用较为频繁
5.计算模块部分单元测试展示
6.计算模块部分异常处理说明
空文本测试代码
打印结果
标签:查重,章节,30,个人,单元测试,论文,模块接口,计算,PSP 来源: https://www.cnblogs.com/moon-ang/p/13721887.html