个人项目

软件工程 19网工34
作业要求 作业要求
作业目标 设计论文查重算法,github代码管理,测试代码

github地址

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

文件读写类

个人项目

文件读写类封装了读入和写出的方法.

分词类

个人项目

分词类中封装了读取词库的类,以及读取论文中词语的类

获取词向量类

个人项目

封装了获取词向量的类

计算查重率的类

个人项目
计算出余弦相似度作为查重率

程序流程

个人项目

实现逻辑

通过查找网上的资料,查到可以使用余弦相似度来作为查重的依据,主要参考TF-IDF与余弦相似性的应用
利用余弦相似度可以计算两个句子的相似性,同理我们可以类比到整个文章。所以我们需要做的第一步是进行分词,并统计词频。但是这里用的是位置向量分析。主要思路是,每一个词在全文的分布大概是如何的,从宏观上来分析两篇文章的相似度。这里我用到的是hanlp分词。然后遍历存放着词与词频信息的map,计算cos值。最后比对得出答案。

注意

这里有一个点需要注意的是分词之后统计的时候还需要对字符char进行判断,值判断汉字。[\u4e00-\u9fa5]

异常

个人项目

结果

个人项目
个人项目
个人项目
个人项目
个人项目
个人项目

性能测试

个人项目
char 和 String 占用了最多的内存 因为遍历论文和比对时创建了很多。

psp

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


下一篇:大家都说不建议直接使用 @Async 注解?为什么??