个人项目:论文查重

个人项目:论文查重

github地址

这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/Networkengineering1834
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146
这个作业的目标 学习使用PSP表格,使用git管理项目

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

该项目实现语言为Java,jdk版本为jdk11,编译器为idea

1.1项目结构

 

 

 

主要类

simhash算法实现类

 

余弦相似度算法实现类

 

程序运行入口

 

1.2实现过程以及改进

1.2.1 simhash算法

实现关键:采用simhash算法来计算文本相似度,需要计算得到汉明距离

  • 最后由公式img,将汉明距离带入x即可计算出文本相似度

  • 不足:在开发测试的过程中发现simhash算法在短文本上有着很大缺陷,比如由作业中的文本示例:

    • 原文示例:今天是星期天,天气晴,今天晚上我要去看电影。

    • 抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。

经过simhash算法计算所得文本相似度为约为0.00000007,可见若对短文本使用simhash算法将会带来较大偏差,因此在查询资料后,决定对于短文本使用余弦相似度算法

1.2.2 余弦相似度算法

算法关键:对比文本分词得到词表、合并去重、计算特征值并向量化、计算余弦值

img

1.3异常处理

考虑到可能会出现比较空文本的情况,由于这种情况的操作属于没有意义的,因此自定义了空文本异常。

 

 

 

同时,程序中输入路径部分,对于不存在文件的路径进行了限制以此完善程序健壮性

 

 

二、计算模块结构接口部分的性能改进

性能分析:

img

 

类内存消耗:绝大部分消耗在了分词

img

 

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

sim算法单侧:

 

 

余弦相似度算法单测:

 

 

特殊情况(空文本)情况单测:

 

 

以下为测试代码覆盖情况:

img

 

三、程序运行展示

程序运行入口:

 

 

运行过程:

 

 

运行结果:

 

 

四、PSP表格

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

 

 

 

posted @ 2020-09-24 20:30  RainZzz  阅读(230)  评论(0)    收藏  举报