第一次个人编程作业

一、作业链接

【Github作业链接】(https://github.com/suuuhope/031802425)

二、PSP表格

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

三、计算模块接口的设计与实现过程

算法流程图:

余弦相似度 (Cosine Similarity)

通过计算两个向量的夹角余弦值来评估他们的相似度。将向量根据坐标值,绘制到向量空间中,求得他们的夹角,并得出夹角对应的余弦值,此余弦值就可以用来表征这两个向量的相似性。夹角越小,余弦值越接近于1,它们的方向越吻合,则越相似。

余弦相似度算法
def CosSimilarity(UL,p1,p2):
si = GetSameItem(UL,p1,p2)
n = len(si)
if n == 0:
return 0
s = sum([UL[p1][item]*UL[p2][item] for item in si])
den1 = math.sqrt(sum([pow(UL[p1][item],2) for item in si]))
den2 = math.sqrt(sum([pow(UL[p2][itme],2) for item in si]))
return s/(den1*den2)

Python库:
jieba库:通过分词获得单个的词语,利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。
sklearn:利用sklearn.metrics.pairwise中的cosine_similarity可直接进行余弦相似度计算。

四、计算模块接口性能:

来自pycharm自带的profile的性能测试(cc.py就是main.py,测试忘了改了):

五、单元测试

六、总结:

一个字——懵。看作业的时候是这样的

看作业要求就看了不短时间,然后直接面向百度编程,一顿查查完之后发现基本全是用Python在实现。于是直接打出GG没学过Python的弊端就显现出来了。贼心不死的我还是在网上找了各种用c++实现查重的方案,结果。。。。。。还是向Python屈服了。用了一些时间看完Python的基本语法,再回头看网上的代码,感觉瞬间好起来了呢,才怪,还是很难懂,但东问问西瞧瞧还是有点看明白了。这次作业再次告诉我,俺是fw要好好学习编程语言,多多实践,不然下次还是像这样啥都8懂。

posted @ 2020-09-17 20:56  suuuhope  阅读(146)  评论(0编辑  收藏  举报