第一次个人编程作业

第一次编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477
这个作业的目标 实现一个3000字以上论文查重程序
Github链接 https://github.com/Shai-Zengziyao/3123004764

PSP表格

PSP阶段 子阶段 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 120 130
Planning 估计任务时间 120 130
Development 需求分析(含学习新技术) 180 200
Development 生成设计文档 150 140
Development 设计复审(同伴评审) 60 50
Development 制定/遵循代码规范 30 25
Development 具体设计(模块划分、算法设计) 240 260
Development 具体编码 300 320
Development 代码复审(自审+工具检查) 90 100
Development 测试(单元测试+集成测试+性能测试) 240 280
Reporting 测试报告(覆盖率、性能分析) 120 130
Reporting 计算工作量(代码行数、文档页数) 60 50
Reporting 事后总结与过程改进计划 90 100
合计 1680 1805

算法摘要

本论文查重算法通过"文本预处理→TF-IDF向量化→余弦相似度计算"三步实现重复率计算:

  1. 文本预处理阶段
    • 清洗文本:去除非中文字符、标点符号等噪声
    • 分词处理:使用jieba库进行中文分词,将连续文本分割为词语单元
    • 停用词过滤:移除"的"、"了"、"在"等无意义高频词,保留核心特征词汇
  2. TF-IDF向量化阶段
    • 构建词频矩阵:统计词语在文档中的出现频率
    • 计算逆文档频率:衡量词语在整个语料库中的重要程度
    • 生成词向量:将文本转换为高维数值向量,其中每个维度代表一个词语的TF-IDF权重
  3. 余弦相似度计算阶段
    • 计算向量夹角余弦值:通过向量点积和模长计算相似度
    • 结果标准化:相似度范围为0~1,值越接近1表示文本重复度越高
    • 应用场景:轻度语序调整时相似度接近1,重度词汇替换时相似度显著降低

接口设计与实现

接口名称 核心功能 输入参数 输出 实现技术 异常处理
parse_command_line_args 解析命令行参数获取文件路径 无(依赖sys.argv) (orig_path, copy_path, output_path) 参数数量校验 参数数量错误时退出
read_file 读取文本文件(支持utf-8/gbk编码) file_path: str 文件内容字符串 编码自动切换,上下文管理器 文件不存在、编码错误、权限不足等
preprocess_text 文本清洗、分词、去停用词 text: str 空格分隔的核心词语字符串 正则清洗+jieba分词+停用词过滤 文本为空返回空字符串
calculate_plagiarism_rate TF-IDF向量化+余弦相似度计算重复率 orig_text: str, copy_text: str 重复率(保留两位小数) TfidfVectorizer+cosine_similarity 文本预处理为空时返回0.0
main 串联全流程(参数解析→读取→计算→写入) 无(依赖命令行参数) 结果写入文件,控制台状态提示 调用上述接口完成流程 写入失败时捕获异常并退出

使用方法

python main.py <原文文件> <抄袭版文件> <答案文件>

结果

测试集名 重复率
orig_0.8_add.txt 0.86
orig_0.8_del.txt 0.88
orig_0.8_dis_1.txt 0.97
orig_0.8_dis_10.txt 0.88
orig_0.8_dis_15.txt 0.71

计算的性能改进

性能分析

image-20250923232438298

论文查重程序异常处理说明

数值逻辑异常

现象:计算结果超出合理范围(如负数或大于1)或与预期偏差过大
可能原因

  1. 算法实现错误:余弦相似度公式计算错误(如向量模长为零时分母未处理)
  2. 文本预处理缺陷:停用词过滤过度导致有效特征丢失
  3. 原始文件异常:抄袭版与原文完全无关却显示高重复率

存储与展示异常

现象:Markdown表格无法渲染或文件写入失败
可能原因

  1. 表格格式错误:分隔符缺失或表头与内容不对齐
  2. 文件权限问题:目标路径无写入权限
  3. 磁盘空间不足:存储设备空间耗尽

环境依赖异常

现象:跨平台路径解析失败或工具版本不兼容
可能原因

  1. 路径格式差异:Windows反斜杠()与Linux正斜杠(/)冲突
  2. 依赖版本不兼容:jieba/TfidfVectorizer版本过低

其他潜在异常

  1. 文件读取异常

    • 解决方案:自动探测编码格式,回退到GB18030
  2. 分词异常

    • 解决方案:自定义词典补充专业术语

    • 解决方案:分块处理大文件,限制向量维度

posted @ 2025-09-23 23:37  naswyne  阅读(10)  评论(0)    收藏  举报