个人项目

班级链接 19网34
作业要求 作业要求
作业目标 完成一个查重程序

Github地址

一.PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟
Planning 计划
Development 开发
Analysis 需求分析 (包括学习新技术) 300 360
Design Spec 生成设计文档
Design Review 设计复审 30 20
· Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 20
Design 具体设计 40 60
Coding 具体编码 150 180
Code Review 代码复审 30 40
Test 测试(自我测试,修改代码,提交修改) 40 20
Reporting 报告
· Test Repor 测试报告 60 90
Size Measurement 计算工作量 30 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 20
合计 720 830

二.模块接口的设计与实现

1.主要的类

主类:

Main:包含main方法,接收命令行输入的参数,调用其他工具类来执行程序。

工具类:

FileIO:文件工具类。控制文件的读写以及获取文件名。

Hamming:计算海明距离的工具类。计算两个hash值的海明距离以及根据海明距离计算其相似度。

HashCompute:计算hash值的工具类。计算每个单词、整个文本、的hash值。

测试类:

test:测试主类和工具类是否可以正常使用

2.程序算法的关键几步

1.分词:对需要比较的文本进行分词,提取特征向量。并对特征向量,进行权重(weight)设置。
2.求hash: 通过hash函数计算各个特征向量的hash值。hash值为二进制数0 1 组成的n-bit签名。
3.加权:在hash值的基础上,给所有特征向量进行加权,即W = Hash * weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。
4.合并:将上述各个特征向量的加权结果累加,变成只有一个序列串。拿前两个特征向量举例。
5.降维:对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海 明距离来判断它们的相似度。
6.计算:通过Simhash签名值,计算汉明距离。

三.模块接口部分的性能改进


用的较多的是比特流

四.模块部分单元测试展示


测试文件工具类

五.模块部分异常


输入文件路径不存在发生异常

六.原文件与抄袭文件相似度





posted @ 2021-09-20 01:09  glorious随心  阅读(58)  评论(1编辑  收藏  举报