作业要求
工程概论 | 班级链接 |
---|---|
作业要求 | 作业的要求链接 |
作业的目标 | 熟悉查重代码 |
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟 |
---|---|---|---|
Planning | 计划 | 15 | 15 |
Estimate | 估计这个任务需要多少时间 | 3 | 1 |
Development | 开发 | 10 | 15 |
Analysis | 需求分析 (包括学习新技术) | 5 | 5 |
Design Spec | 生成设计文档 | 2 | 2 |
Design Review | 设计复审 | 5 | 5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 15 | 15 |
Design | 具体设计 | 45 | 60 |
Coding | 具体编码 | 45 | 60 |
Code Review | 代码复审 | - | - |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 25 |
Reporting | 报告 | 30 | 45 |
Test Repor | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 15 | 15 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 5 | 5 |
合计 | 225 | 278 |
需求
语言 | Java |
目标 | 对输入的两个文件进行查重 |
输出 | 命令行显示,并存入文件 |
要求 | 根据余弦相似度算法计算出相似度,并存入文件 |
计算模块接口的设计与实现过程
1.文本处理
使用空格分隔文本
2.获取特征向量
并用分隔后得到的单词,利用hashmap,将关键字作为key,计算value查出词频
3.计算余弦相似度
用两个向量的点积除以两个向量模的乘积
优缺点:
速度快,代码简单,但由于无法分割中文词语,只能查重英语论文
接口的设计
main函数为主函数,calculate为计算余弦相似度函数,createword进行计算词频,read为读取文本,write为写入文本
计算模块接口部分的性能改进
性能改进的思路为优化正则表达式,以此能识别更多种类的论文
(消耗最大)读取文件内容使用时间:1ms(为读取文件函数read)
计算相似度使用时间:0ms
计算模块部分异常处理说明
当用户输入错误的文件名,程序会抛出异常,进行报错
如图: