第一次编程作业

这个作业属于那个课程 班级链接
这个作业的要求在哪里 作业链接
这个作业的目标 论文查重算法设计+学习PSP表格+单元测试+JProfiler性能分析+Git管理

一、GitHub

3119005463

二、原理介绍

SimHash
SimHash本身属于一种局部敏感hash,其主要思想是降维,将高维的特征向量转化成一个f位的指纹(fingerprint),通过算出两个指纹的海明距离(hamming distince)来确定两篇文章的相似度,海明距离越小,相似度越低(根据 Detecting Near-Duplicates for Web Crawling 论文中所说),一般海明距离为3就代表两篇文章相同。

SimHash算法分为5个步骤:1.分词,2.hash,3.加权,4.合并,5.降维

  1. 分词:本次所使用的分词器是IKAnalysis,需要安装 IKAnalyzer2012_u6.jar包
  2. hash:通过hash算法把每个词变成hash值
  3. 加权:通过 2步骤的hash生成结果,需要按照单词的权重形成加权数字串
  4. 合并:把上面各个单词算出来的序列值累加,变成只有一个序列串
  5. 降维:将第四步计算出来的序列串变为01串,形成我们最终的simhash签名。 如果每一位大于0记为1,小于0记为0。

三、算法实现

工程结构

关键代码

运行结果

四、模块接口的性能展示

  • 内存消耗

  • CPU负载

  • 堆内存消耗情况

五、计算模块部分单元测试显示

单元测试代码

测试结果

六、PSP表格

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

七、总结

本次作业让我学到了很多东西,受益匪浅。也发现了很多问题,比如对git,github不熟悉,编程能力也不够强。希望以后能多练习,取得更大的进步。
posted @ 2021-09-19 23:59  k_wai  阅读(65)  评论(0)    收藏  举报