论文查重

这个作业属于哪个课程 计科国际班软工
这个作业要求在哪里 要求
这个作业的目标 论文查重程序
1.GitHub地址:(https://github.com/L-Cc26/3119009428)
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.计算模块接口的设计与实现过程:
流程图
通过查找网上的资料,找到解决查重的关键算法,利用TF-IDF与余弦相似性的应用,主要说的是离用余弦相似性来比较两个句子的相似性,
我们这里同样可以运用到文章上面,主要是用位置向量分析每个词全文的分布,从而分析两篇文章的相似度。用到的是hanlp分词。
然后遍历存放着词与词频信息的map,计算cos值。最后比对得出答案。
文件读写类,分词与计算类,异常类分别如下
引用了里面的FileReader,然后对异常进行了封装
引入了TokenizerEngine,并通过hankcs当作引擎来进行分词处理。
4.部分代码展示与测试:
测试分别从两个完全相同的文件和完全不同的文件,到5个测试用例去测试。
同时也测试了假如文件路径有问题和文件为空,也考虑到了各种异常的情况。
覆盖率:
总方法覆盖率为77%,line覆盖率达到了93%
结果:
orig_0.8_add.txt 0.8695990639733713
orig_0.8_del.txt 0.7498838191640381
orig_0.8_dis_1.txt 0.9206491294709916
orig_0.8_dis_10.txt 0.804067893296461
orig_0.8_dis_15.txt 0.6575365154781483
5.计算模块接口部分的性能
速度很快就完成了测试3s。
反思:可以优化的地方还有很多,比如简化输入路径,如输入名字即可找到文件,加快程序总运行速度。
  还有一个问题,假如有两个句子,遍历只遍历到了第一个句子有的词。第二个句子有的词但第一个句子没有的词,并不会加入到计算中。
  这样是采用位置向量的缺陷,以后可以改进。
posted @ 2021-09-20 14:46  L-Cc26  阅读(124)  评论(0编辑  收藏  举报