软工第二次作业
| 这个作业属于哪个课程 | 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 | - |
二、计算模块接口的设计与实现过程
一、代码组织结构
本论文查重工具采用模块化函数设计,具体结构如下:
- 核心处理流程函数
main(): 主控函数,协调整个查重流程
read_file(): 文件读取与异常处理
preprocess_text(): 文本清洗与分词处理
calculate_cosine_similarity(): 相似度核心算法
write_result(): 结果输出与文件写入 - 辅助功能函数
文本预处理层: 负责字符过滤、分词、停用词处理
向量计算层: 实现词频统计、向量构建、相似度计算
IO操作层: 处理文件读写和编码转换
二、关键函数流程图(以main.py为例)
![image]()
三、算法说明 - 核心算法:余弦相似度
similarity = (A·B) / (||A|| × ||B||) - 文本向量化
原始文本 → 中文分词 → 停用词过滤 → 词频统计 → 归一化向量 - 复杂度分析
时间复杂度:O(n + m)
n: 原文词汇数量
m: 抄袭文词汇数量
空间复杂度:O(k)
k: 两篇文章词汇并集的大小
4.优势
本系统采用余弦相似度算法进行文本比对,具有几个重要特点:首先,算法不受文章长短影响,无论原文和抄袭文长度差异多大,都能进行公平比较;其次,通过计算向量夹角来捕捉文本之间的语义关联,比单纯统计重复词汇更加精准;最后,算法输出0.00到1.00之间的标准化数值,结果直观易懂。
系统集成了jieba分词工具,专门针对中文文本进行优化,同时也能够处理中英文混合的情况。采用向量空间模型确保计算速度快,兼顾了检测效率和准确性。算法保证每次检测结果一致,能够有效识别直接复制、部分修改和调整语序等多种抄袭方式。
三、模块部分单元测试
![image]()
四、计算模块部分异常处理说明 - 文件读取异常处理
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
五、使用方法 - 环境准备
安装依赖库:
pip install jieba - 文件准备
将以下文件放在同一目录:
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 |



浙公网安备 33010602011771号