firdavis

导航

第一次个人编程作业

个人作业——论文查重

课程地址 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014
作业目标 了解论文查重机理; Git与GitHub的链接使用;深刻体会个人开发流程

Github仓库地址 https://github.com/Firdavis99/iskilat/blob/main/3119000416

PSP表

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

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

1.接口部分
image
2.流程图
image

4)关键算法具体实现过程

1.使用正则表达式模式[\u4e00-\u9fa5]+对原始文本和抄袭文本进行处理,去除标点符号,只保留中文字符。

2.将处理后的文本以字符串的形式存储,并赋值给original_text和copy_text变量。

3.使用结巴分词工具jieba对字符串进行分词,将原始文本和抄袭文本分别分词,并存储在original_words和copy_words列表中。

4.使用Simhash算法生成原始文本和抄袭文本的Simhash值。Simhash是一种用于计算文本相似度的算法。它将文本表示为一个固定位数的二进制数值,其中相似的文本具有较高的汉明距离,而不相似的文本具有较低的汉明距离。

5.计算原始文本和抄袭文本的海明距离(Hamming Distance),即Simhash值之间的汉明距离。海明距离表示两个Simhash值二进制表示中不同位的数量。

6.根据海明距离计算查重率(similarity),查重率的计算公式为:1 - (海明距离 / 64)。

性能分析

image
如上图所示,程序执行的时间为1.61s,其中将文本创建为正则表达式需要44.2MiB的,紧接着整个算法耗时最长以及占用内存最多的部分是进行分词算法,需要64.3 MiB。因此我们的算法优化可以从分词算法的优化进行。但受限于理论知识过少,目前笔者暂时未发现更好的算法。

程序简易样例测试阶段

image

posted on 2023-09-17 21:33  甫尔达吾斯  阅读(25)  评论(0编辑  收藏  举报