作业2:个人项目
个人项目-论文查重
一、课程信息
二、开发环境
开发工具 | IDEA 2021.3.2 |
---|---|
项目构建工具 | maven |
单元测试 | Junit |
分词依赖包 | hanlp |
三、需求分析
设计一个可以通过命令行参数传递原文文件地址、抄袭文件地址、答案文件地址,计算抄袭文件相对于原文文件的重复率,并将结果以保留小数点后两位的形式输出到答案文件。
四、设计与实现
核心算法:simhash计算文本相似度
主要类 | 作用 |
---|---|
main | 主类,识别参数 |
SimHashUtils | 将文章分词,并将关键词用hash值替代,再通过加权合并降维得到SimHash的值 |
HammingUtils | |
TxtIOUtils | 读写txt文件的工具类 |
文件结构:
测试结果:
五、性能分析
使用JProfile工具进行性能分析
六、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planing | 计划 | 60 | 60 |
.Estimate | .估计这个任务需要多久时间 | 60 | 60 |
Development | 开发 | 1120 | 1280 |
.Analysis | .需求分析 (包括学习新技术) | 300 | 370 |
.Design Spec | .生成设计文档 | 70 | 60 |
.Design Review | .设计复审 | 30 | 30 |
.Coding Standrd | .代码规范(为目前的开发制定合适的规范) | 30 | 30 |
.Design | .具体设计 | 90 | 90 |
.Coding | .具体编码 | 300 | 360 |
.Code Review | .代码复审 | 60 | 60 |
.Test | .测试(自我测试,修改代码,提交修改) | 240 | 300 |
.Reporting | 报告 | 240 | 240 |
.Test Report | .测试报告 | 60 | 70 |
.Size Measurement | .计算工作量 | 60 | 60 |
.Postmortem&Process Improvement | .事后总结,并提出过程改进计划 | 120 | 120 |
.合计 | 1420 | 1590 |
待优化项:不适合短文章的查重、可能存在数组越界的问题(已加了一定的限定条件)。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步