Github地址:https://github.com/SLkHs/3121004696
Java实现简易论文查重
软件工程 | https://edu.cnblogs.com/campus/gdgy/CSGrade21-12 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014 |
作业目标 | 实现个人项目:论文查重 |
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 50 |
Estimate | · 估计这个任务需要多少时间 | 30 | 40 |
Development | 开发 | 480 | 360 |
· Analysis | · 需求分析 (包括学习新技术) | 50 | 45 |
· Design Spec | · 生成设计文档 | 60 | 70 |
· Design Review | · 设计复审 | 50 | 45 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 50 |
· Design | · 具体设计 | 100 | 120 |
· Coding | · 具体编码 | 200 | 180 |
· Code Review | · 代码复审 | 80 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改 | 180 | 160 |
Reporting | 报告 | 110 | 100 |
· Test Repor | · 测试报告 | 70 | 60 |
· Size Measurement | · 计算工作量 | 50 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 50 | 60 |
· 合计 | 1680 | 1285 |
开发前的准备:
1.核心算法:
simhash+海明距离
2.类的设计:
main 方法所在的类
HammingUtils:计算海明距离的类
SimHashUtils:计算 SimHash 值的类
TxtIOUtils:读写 txt 文件的工具类
ShortStringException:处理文本内容过短的异常类
3.main 方法的主要流程:
1.从命令行输入的路径名读取对应的文件,将文件的内容转化为对应的字符串
2.由字符串得出对应的 simHash值
3.由 simHash值求出相似度
4.把相似度写入最后的结果文件中
5.退出程序
开发流程:
1.Maven项目搭建:
2.配置pom文件:
3.编写实现类:
4.编写测试类:
测试:
1.TxtIOUtilsTest:
2.SimHashUtilsTest:
3.HammingUtilsTest:
4.MainTest:
生成的文档:
性能分析:
从分析图可以看出调用最多的是外部包提供的接口,改进的空间是运用更好的算法
异常处理:
创建异常类:ShortStringException来处理当文本长度过短时HanLp无法获得关键字的情况
测试结果: