第一次个人编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15702
这个作业的目标 设计一个论文查重算法用以查询重复率,并将程序上传至github

本次作业的github链接:https://github.com/Joker-Deng/Joker-Deng/tree/main/3124004465/Project1

程序设计思路

我使用c++语言以及N-gram文本处理、Jaccard相似度的理论设计了论文查重的算法。

1、文件处理

使用了c++的fstream文件处理库,读取文件中的文本并以string类型存储,以及后续对查重率的导出。

2、N-gram文本处理

先对文本进行处理,去除标点符号的影响,再将其以滑动窗口的形式分成数个元组,用以下一步的重复文本分析。

3、Jaccard相似度计算

通过上一步的元组分组,可以便捷地分析两段文本的交集及并集的字符个数,进而计算出两段文本的相似度,即查重率。

性能分析图

image

单元测试

image

异常测试

1、无效输入路径
image

2、空文本
image

3、重复文本
image

附录

本次作业是我第一次尝试规范地设计代码、分析性能,但感觉还是有些疏漏,对vs的性能分析器还不够了解。此外,通过这次作业我了解到文本查重的一些基础知识,这是我过去完全不了解的。

PSP表

Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
计划 5 5
估计这个任务需要多少时间 3 5
开发 30 40
需求分析 (包括学习新技术) 30 45
生成设计文档 10 10
设计复审 5 5
代码规范 (为目前的开发制定合适的规范) 3 3
具体设计 15 20
具体编码 45 60
代码复审 5 10
测试(自我测试,修改代码,提交修改) 15 30
报告 15 20
测试报告 15 30
计算工作量 5 7
事后总结, 并提出过程改进计划 5 10
合计 206 300
posted @ 2026-09-15 21:05  Joker-D  阅读(8)  评论(0)    收藏  举报