作业2:个人项目

个人项目-论文查重

一、课程信息

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 熟悉软件开发以及工具的使用、算法的设计、资料的搜集

GitHub地址

二、开发环境

开发工具 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

待优化项:不适合短文章的查重、可能存在数组越界的问题(已加了一定的限定条件)。

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