第一次个人编程作业

第一次个人编程作业

这个作业属于哪个课程 软件工程-19信安2
这个作业要求在哪里 作业要求
这个作业的目标 实现论文查重算法+PSP表格+使用JProfiler性能分析

1、代码链接

GitHub连接

2、模块接口的设计与实现过程

2.1使用SimHash算法计算文本相似度

​ SimHash简介:SimHash作为局部敏感哈希的一种,其主要思想是降维。通过将一篇若干文字的文本内容通过降维后,可能仅仅得到一个长度为32或64位的二进制由01组成的字符串。通过对比两篇文本内容的SimHash各个位上0与1的差异个数(即海明距离),即可判断两者文本相似度。

​ 例子如下:

2.2主要的类

2.2.1UML类图如下:

  • TxtChecking类:主程序所在类

  • TextIOUtil类:控制输入输出流的工具类

  • HammingUtil类:获取海明距离与文本相似度的工具类

  • SimhashUtil(关键)类:获取文本Simhash值的工具类

    2.2.2程序运行中各类的关系:

    ​ 在程序运行过程中,先通过readTxt()进行txt文件的读取,由getSimilarity()调用内部方法getHammingDistance()获取海明距离,进而由getHammingDistance()调用getSimhash()

    获取文本的Simhash值。

2.3 关键函数

getSimhash()
  • 分词 :本项目中为简化分词过程使用了HanLP包,对文本进行分词处理

  • 获取HashCode :调用getHash()获取每个词的哈希值

  • 加权与合并:通过词语出现的频率对进行加权处理,出现频率高的权重也相对高(反之亦然);并将每个词语中相同索引位置的哈希值相加,最终将得到整个文本加权哈希值相加后的总和

关于词频的获取如下:


  • 降维:将得到的哈希值每个索引位置中大于0的置为1,而1置为0,形成Simhash签名

3、计算模块接口部分的性能改进

​ 使用JUnit4进行单元测试,使用JProfiler进行性能分析

3.1遥测概述

3.2CPU负载

3.3类占用内存

3.4函数耗时

​ 性能改进:由于耗时最多的操作为HanLP包的分词操作,目前并不具备性能改进的方法

4、计算模块部分单元测试展示

4.1部分测试代码如下

4.2测试结果如下:

4.2.1IDEA内结果

4.2.2输出相似度到相应记事本

4.3命令行测试

  • 传参方法:- Java: java -jar main.jar [原文文件] [抄袭版论文的文件] [答案文件]

    以下展示部分测试结果

4.4代码覆盖率

5.计算模块部分异常处理说明

测试文件路径输入错误

测试代码如下:

测试结果:

6、花费时间

PSP表格

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

7、总结

  • 在这一次个人项目中,接触到了许多没有使用过的工具,对于我来说这种学习的过程也是富有挑战性的
  • 在实现算法的过程中查阅了许多资料,而学习一种新算法得到过程也是充实的
  • 功能的模块化与代码书写的规范性对于一个程序而言是非常重要的

8、参考资料

https://blog.csdn.net/wxgxgp/article/details/104106867

https://blog.csdn.net/u010454030/article/details/49102565

posted @ 2021-09-16 18:38  万物互联网  阅读(135)  评论(2编辑  收藏  举报