第一次个人编程作业(Python实现)

Python实现论文查重

软件工程 计科21级1.2班
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014
作业目标 完成个人项目:论文查重

github链接:https://github.com/howdnb/howdnb

PSP表格

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

程序实现

一.具体设计

  • main:主函数,调用其它各个函数

  • get_file:读取文件内容

  • cut:通过jieba库将内容进行分词

  • calculate_similarity:计算相似度

二.性能分析

  • 计算相似度方法原本使用的是gensim库计算余弦相似度

  • 但后来发现使用simhash算海明距离从而得出相似度更精确,因此更改为使用simhash库

  • 使用line_profiler库可显现各行代码热力值,热力值可清晰显现各行代码所占时间,由此找出性能瓶颈


  • 使用python自带工具进行代码检查,图中为拼写问题,不影响代码实现

  • 使用coverage库对代码覆盖率进行检查,生成coverage report

三.单元测试

使用python内置库unittest对函数逐个测试

  • 函数get_file()测试:

  • 函数cut()测试:

  • 函数calculate_similarity()测试:

四.异常

当在命令行中输入参数不符要求时:

独到之处

使用sys库对命令行参数进行获取,方便快捷

输入及输出

  • 从命令行中启动程序,并传入所需文件地址

  • 输出所传文件之间的的文件相似度

posted @ 2023-09-16 18:33  howdx  阅读(85)  评论(0)    收藏  举报