软工第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13468
这个作业的目标 使用python设计一个论文查重算法,并在github上记录各版本并进行测试

一、github链接:https://github.com/pikaso2222/pikaso/tree/main/3123004692
二、PSP表格:

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

二、计算模块接口的设计与实现过程
一、代码组织结构
本论文查重工具采用模块化函数设计,具体结构如下:

  1. 核心处理流程函数
    ​main(): 主控函数,协调整个查重流程
    ​read_file(): 文件读取与异常处理
    ​preprocess_text(): 文本清洗与分词处理
    ​calculate_cosine_similarity(): 相似度核心算法
    ​write_result(): 结果输出与文件写入
  2. 辅助功能函数
    ​文本预处理层: 负责字符过滤、分词、停用词处理
    ​向量计算层: 实现词频统计、向量构建、相似度计算
    ​IO操作层: 处理文件读写和编码转换
    二、关键函数流程图(以main.py为例)
    image
    三、算法说明
  3. 核心算法:余弦相似度
    similarity = (A·B) / (||A|| × ||B||)
  4. 文本向量化
    原始文本 → 中文分词 → 停用词过滤 → 词频统计 → 归一化向量
  5. 复杂度分析
    ​时间复杂度​:O(n + m)
    n: 原文词汇数量
    m: 抄袭文词汇数量
    ​空间复杂度​:O(k)
    k: 两篇文章词汇并集的大小
    4.优势
    本系统采用余弦相似度算法进行文本比对,具有几个重要特点:首先,算法不受文章长短影响,无论原文和抄袭文长度差异多大,都能进行公平比较;其次,通过计算向量夹角来捕捉文本之间的语义关联,比单纯统计重复词汇更加精准;最后,算法输出0.00到1.00之间的标准化数值,结果直观易懂。
    系统集成了jieba分词工具,专门针对中文文本进行优化,同时也能够处理中英文混合的情况。采用向量空间模型确保计算速度快,兼顾了检测效率和准确性。算法保证每次检测结果一致,能够有效识别直接复制、部分修改和调整语序等多种抄袭方式。
    三、模块部分单元测试
    image
    四、计算模块部分异常处理说明
  6. 文件读取异常处理
    try:
    with open(file_path, 'r', encoding='utf-8') as f:
    return f.read()
    except FileNotFoundError:
    print(f"错误:文件 {file_path} 不存在")
    return None
    2.编码异常处理​:
    except UnicodeDecodeError:
    print(f"错误:文件 {file_path} 编码格式不支持")

    尝试其他编码格式

    return None
    五、使用方法
  7. 环境准备
    ​安装依赖库​:
    pip install jieba
  8. 文件准备
    将以下文件放在同一目录:
    main.py 查重程序
    orig.txt 原文文件
    copied.txt 抄袭版文件
    result.txt 结果文件(自动生成)
    3.运行
    image

PSP 实际耗时记录:

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

posted on 2025-09-23 16:27  奥古孜  阅读(21)  评论(0)    收藏  举报

导航