这个作业属于哪个课程 | https://bbs.csdn.net/forums/qq_40085543 |
这个作业要求 | https://bbs.csdn.net/topics/613858565 |
这个作业的目标 | 1.学习PSP表格的制作 2.编码完成论文查重算法的需求 3.学习对工程文件的性能分析、内存分析、单元测试 |
参考 | TF-IDF与余弦相似性的应用(二):找出相似文章 - 阮一峰的网络日志 |
仓库 | 楓124 / 3121005274 · GitCode |
目录
PSP表格
Personal Software Process Stages | 预计耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 60 | 60 |
估计这个任务需要多少时间 | 60 | 30 |
开发 | 1200 | 600 |
需求分析 (包括学习新技术) | 300 | 100 |
生成设计文档 | 60 | 60 |
设计复审 | 40 | 40 |
代码规范 (为目前的开发制定合适的规范) | 40 | 40 |
具体设计 | 60 | 40 |
具体编码 | 300 | 400 |
代码复审 | 40 | 20 |
测试(自我测试,修改代码,提交修改) | 100 | 100 |
报告 | 30 | 30 |
计算工作量 | 30 | 10 |
事后总结, 并提出过程改进计划 | 40 | 40 |
合计 | 2360 | 1570 |
设计与实现过程
jieba接口,re库的正则表达式
# 获取原文件的内容并转为字符串 def get_content(path):
逐行读取原文件的内容并转化成字符串
# 将读取的文件先进行jieba分词,再将标点符号等特殊字符过滤 def filter(str):
通过正则表达式获得文字,减少了处理特殊字符等不必要的麻烦
# 传入过滤之后的数据,通过调用gensim.similarities.Similarity计算余弦相似度 def calc_similarity(text1,text2):
模块接口部分的性能改进
通过python自带的函数进行性能分析,消耗最大的为:def calc_similarity(text1,text2)模块
模块部分异常处理说明
针对路径输入错误,不存在的情况强行终止程序
模块部分单元测试展示
这里需要用到python的unittest单元测试框架
新建单元测试文件unit_test.py: