面向教师的学生作业查重与相似度检测系统:上传作业后与库内所有作业比对,给出综合相似度(0.5×TF-IDF 余弦 + 0.5×n-gram Jaccard)、判定结论,并定位相似片段(双栏高亮)。技术主线是「算得准、算得快、说得清」:SimHash 粗筛 → 精算 → 句子级片段定位,算法全部自行实现、不依赖第三方查重服务。
技术栈
Python、Django、jieba、NumPy、ECharts、MySQL
功能模块
- 三件武器各司其职:n-gram 指纹(k=4)+Jaccard 度量片段重合,TF-IDF 余弦度量词权分布,SimHash 64 位只做候选粗筛
- 综合相似度 = 0.5×余弦 + 0.5×Jaccard;判定线 0.60 取自离线实验的最优阈值(≥0.75 高度相似 / ≥0.60 可疑)
- 句子级片段定位:逐句字符 3-gram Jaccard 取最佳匹配并合并连续命中句,结果页双栏高亮、悬停显示匹配分数
- 带标注仿真语料与对比实验:80 篇作业 / 32 篇抄袭样本 / 90 组配对,四种指标的区分度与阈值网格 P/R/F1 全部可复现
- SimHash 候选筛选取舍量化:汉明距离 ≤4 召回 0.875 正样本、仅放行 1.7% 负样本(≤6 为 0.906 / 6.9%)
- 上传解析:粘贴文本或上传 txt,自动识别 UTF-8 / GBK / UTF-16 编码
- 工程实现:全库分词/指纹/TF-IDF 进程内缓存(按作业数自动失效重建),单次查重毫秒级
- 算法评估页:区分度对比、阈值—P/R/F1 曲线、候选筛选取舍三张图,数字直接读自评估脚本输出
运行环境
- 编程语言:Python 3.8 及以上
- 后端框架:Django 4.2
- 文本处理:jieba 0.42(分词)
- 算法:NumPy 手写:n-gram 指纹、SimHash、TF-IDF 余弦、Jaccard、句子对齐(不用第三方查重服务)
- 数据库:MySQL 8.0(交付默认 SQLite,免安装)
- 可视化:ECharts 5(已内置本地文件,离线可用)
- 操作系统:Windows / macOS / Linux
- 启动方式:双击一键脚本,或 python manage.py runserver 8081
界面截图











文档预览
交付的任务书、开题报告与论文均为 Word 文档,下面是真实页面预览:



交付内容
- 完整源码(Django 工程 + 自行实现的相似度算法 + 仿真语料生成器 + 离线评估脚本)
- 演示数据库(80 篇仿真作业,含 32 篇带标注抄袭样本)与评估指标文件 metrics.json
- 毕业设计任务书(Word)
- 开题报告(Word)
- 毕业论文(Word,七章制,含评估实验与阈值选择章节)
- 系统使用与二次开发说明(Word + md)
- 11 张系统运行截图