论文查重

这个作业属于哪个课程 计科国际班软工
这个作业要求在哪里 要求
这个作业的目标 论文查重系统(PDCS)
1.GitHub地址https://github.com/WhiteGoosey/3119009437
2.PSP表格
PSP2.1 Personal Software Process Stages
--------------------------------------- --------------------------------
Planning 计划
· Estimate · 估计这个任务需要多少时间
Development 开发
· Analysis · 需求分析 (包括学习新技术)
· Design Spec · 生成设计文档
· Design Review · 设计复审
· Coding Standard · 代码规范 (为目前的开发制定合适的规范)
· Design · 具体设计
· Coding · 具体编码
· Code Review · 代码复审
· Test · 测试(自我测试,修改代码,提交修改)
Reporting 报告
· Test Repor · 测试报告
· Size Measurement · 计算工作量
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划
Sum up 合计

3、设计思路
根据在csdn网站的帖子,我得到了两种不同的方法,分别是TF-IDF与余弦相似性和海明距离来判断相似度,我选择了SimHash算法,利用SimHash值比较海明距离,来判断两个文本的相似度。

SimHash算法原理 #参考csdn帖子

1.分词
对给定的一段文本进行分词,产生n个特征词,并赋予每个特征词一个权重。比如一段文本为“中国科大计算机系的学生的能力怎么样”,产生的特征词就应该是“中国科大”、“计算机系”、“的”、“学生”、“能力”、“怎么样”,然后对这些词分别赋予权重,假设有1-5五个分类,分词之后以上五个词便会各有一个权重,比如中国科大(4)、计算机系(3)、的(1)、学生(4)、能力(5)、怎么样(3)。
其中,数字越大,代表特征词在句子中的重要性就越高。这样,我们就得到了一个文本的分词的词向量和每个词向量对应的权重。

2.Hash
通过hash函数对每一个词向量进行映射,产生一个n位二进制串

3.加权
前面的计算我们已经得到了每个词向量的Hash串和该词向量对应的权重,这一步我们计算权重向量W=hash*weight。
具体的计算过程如下:hash二进制串中为1的乘以该特征词的分词权重,二进制串中为0的乘以该特征词的分词权重后取负,继而得到权重向量。

4.合并
对于一个文本,我们计算出了文本分词之后每一个特征词的权重向量,在合并这个阶段,我们把文本所有词向量的权重向量相累加,得到一个新的权重向量,形如[3,4,1,5,-5,1]

5.降维
对于前面合并后得到的文本的权重向量,大于0的位置1,小于等于0的位置0,就可以得到该文本的SimHash值,以上面提到的[3,4,1,5,-5,1]为例,我们得到[1,1,1,1,0,1]这个bit串,也就是论文中提及的该文本的指纹。
到此为止,我们已经计算出了一个文本的SimHash值。那么,如何判断两个文本是否相似呢?我们要用到海明距离。

6.由公式,将汉明距离带入x即可计算出文本相似度

4、项目各模块设计

5.部分代码展示
计算汉明距离,得到查重率

6.计算模块接口部分的性能
JVM监控工具

线程监控

内存监控

7.项目测试结果
单元测试 多个测试文本重复率

结果

posted @ 2021-09-22 00:28  阿略略  阅读(127)  评论(0编辑  收藏  举报