| 这个作业属于哪个课程 | 计算21级 |
|---|---|
| 这个作业要求在哪里 | 个人项目 |
| 这个作业的目标 | 熟悉Github使用,编写文本查重代码 |
PSP 表
| PSP 2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 5 | 5 |
| · Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
| Development | 开发 | 55 | 40 |
| · Analysis | · 需求分析 (包括学习新技术) | 5 | 5 |
| · Design Spec | · 生成设计文档 | - | - |
| · Design Review | · 设计复审 | - | - |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 5 | 2 |
| · Design | · 具体设计 | 10 | 5 |
| · Coding | · 具体编码 | 20 | 15 |
| · Code Review | · 代码复审 | 5 | 3 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
| Reporting | 报告 | 20 | 15 |
| · Test Report | · 测试报告 | 15 | 10 |
| · Size Measurement | · 计算工作量 | 5 | 5 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | - | - |
| · 合计 | 80 | 60 |
设计及实现
通过结巴分词得到分词列表,利用 Python 的 Counter 计算词频后求两个文件词频的交集和并集,最后计算相似度。
这种方法虽然不准确,但是实现快啊。
性能改进
性能测试?不存在的!
简单测试
原文:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭:今天是周天,天气晴朗,我晚上要去看电影。
测试结果
基于字频相似度: 75.00%
基于词频相似度: 50.00%
异常处理
- 命令行参数数量不正确
- 文件路径不存在
- 空白文件词频为 0