首次个人作业
第一次个人作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 熟悉单元测试和个人软件开发 |
github链接
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 45 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 45 |
Development | 开发 | 300 | 560 |
· Analysis | · 需求分析 (包括学习新技术) | 20 | 20 |
· Design Spec | · 生成设计文档 | 15 | 30 |
· Design Review | · 设计复审 | 15 | 15 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 5 | 10 |
· Design | · 具体设计 | 20 | 50 |
· Coding | · 具体编码 | 60 | 150 |
· Code Review | · 代码复审 | 15 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 45 |
Reporting | 报告 | 75 | 85 |
· Test Repor | · 测试报告 | 15 | 20 |
· Size Measurement | · 计算工作量 | 10 | 15 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 50 | 50 |
· 合计 | 570 | 1065 |
原理介绍
余弦相似度:两个向量的夹角越接近于0,其余弦值越接近于1,表面两个向量越相似。
向量夹角余弦计算:
初中我们学过三角形余弦和边长的关系,即可以用余弦公式来描述
在空间向量中,两个向量的夹角也可以通过两个向量夹角的余弦值衡量两个个体差异的大小。余弦值越接近1,两个向量越相似。
向量之间的余弦计算可以如下表示:
同理,我们可以通过把文本转化为一个个的向量,以此来计算不同文本之间的相似度。
首先对文本进行分词得到两个词表(此处python使用到jieba库)
举个例子:
句子A:这双/跑鞋/太/旧了。那只/款式/更新。
句子B:这双/跑鞋/款型/不好,那只/款式/更好看。
然后进行去重
A=[今天, 天气, 真好, 适合, 去, 逛街, 也, 适合, 晒太阳]
B=[今天, 天气, 不错, 适合, 去, 玩, 也, 适合, 去, 晒太阳]
C=[小明, 不, 喜欢, 和, 小, 红, 玩, 因为, 小明, 不, 喜欢, 太阳]
合并去重后可以得到:
[今天, 天气, 真好, 适合, 去, 逛街, 也, 晒太阳, 小明, 不, 喜欢, 和, 小, 红, 玩, 因为, 太阳, 不错]
下一步进行向量化:
最后计算余弦:
算法实现(python)
计算模块接口设计与实现:
get_file功能是获取文本文字,传递到get_word_vector利用jieba分词获得文字向量,再传递到cosine_distance进行余弦计算,最后输出结果。
从性能图上可看出get_word_vector函数效率不高,因此对此作出了些修改
修改后get_word_vector函数效率提高了,但输入效率反而降低了
代码覆盖率为85%,有部分代码用于异常检测。
异常处理:
1.检测文档路径是否符合
2.检测空文档