个人项目作业-论文查重
| 这个作业属于哪个课程 | 2023春软件工程 |
|---|---|
| 这个作业要求在哪里 | 个人项目作业要求 |
| 这个作业的目标 | 完成作业要求,进一步掌握代码签入Gitcode的操作 |
| 其他参考文献 | python 输入输出 |
| 姓名 | 马旭 |
| 学号 | 3120001271 |
Gitcode地址
实现过程
确定思路
首先将文章分成一段一段的短句短词,并去掉没有任何意义词语如语气词等即提取 关键词,最后让两份文档对应的短词进行文本相似度的比较,最后得到结果。
分词方法
利用Github中 jieba 这一接口来完成分词这一步骤。
文本相似度计算方法的选择
文本相似度计算常用于网页去重以及NLP里文本分析等场景。文本相似度,可以分为两种,一种是字面相似度,另一种是语义相似度。本文记录的是文本的字面相似度的计算及实现,语义相似度计算则需要海量数据去计算语义值,较为复杂。最常用的且最简单的两种文本相似检测方法:局部敏感hash、余弦相似度。
最后我选择使用 simHash 来作为文本相似度计算的算法。GitHub有现成的算法提供。simHash数学解释
运行分析
调用信息
调用图
运行时间
测试
我尝试使用自己的代码对其他的示例文档(orig_0.8_del.txt,orig_0.8_dis_1.txt,orig_0.8_dis_10.txt,orig_0.8_dis_15.txt)进行查重,发现相似度极高。后发现需要对文档中的html等过滤即提高关键字提取的函数能力,以达到更好的论文查重效果。
PSP
| PSP2.1 | Personal Software Process Stages | 预计耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 33 |
| Estiime | 估计这个任务需要多少时间 | 10 | 45 |
| Development | 开发 | 60 | 89 |
| Analysis | 需求分析(学习新技术) | 120 | 150 |
| Design Spec | 生成设计文档 | 20 | 12 |
| Design Review | 设计复审 | 20 | 8 |
| Coding Standard | 代码规范(为目前的开制定合适的规范) | 5 | 3 |
| Design | 具体设计 | 30 | 65 |
| Coding | 具体编码 | 60 | 147 |
| Code Review | 代码复审 | 10 | 2 |
| Test | 测试(自我测试,修改代码,提交修改) | 60 | 72 |
| Reporting | 报告 | 60 | 89 |
| Test Rpepor | 测试报告 | 20 | 12 |
| Size Measurement | 计算工作量 | 5 | 2 |
| Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 10 | 8 |
| 合计 | 520 | 737 |
收获
- 在git的使用中遇到了很多过程,再加上一开始没有弄会commit的使用,导致很多次编译成功后的代码没有及时签入。借助这次作业的机会,我学习到了git的使用包括分支的建立,合并等等,也初步了解到pycharm同样可以直接完成commit,并且可视化极高。gitcod尤其可以帮助我们团队合作时资源的共享等等,方便代码软件的开发。
- 利用pycharm中的性能测试工具profile去了解代码运行的过程,函数的使用率等等。
浙公网安备 33010602011771号