第一次个人编程作业

论文查重

Github链接:github
博客就不上传代码了,具体的看GitHub链接叭
找了很多资料,解决这样的一个文本相似度问题,从基于余弦定理的文本相似度,到simhash\minhash,还有到gensim,可以说都系统的看了一遍,其各方法的原理也都了解了,但了解原理是一回事,要想做出来就是另一回事了QAQ。
So 我还是用python+基于余弦定理的文本相似度叭

基于余弦定理的文本相似度

原理:

向量实际上是多维空间中有方向的线段。如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角了。假如文本X 和文本 Y 对应向量分别是
• x1,x2,…,x64000
• y1,y2,…,y64000
那么它们夹角的余弦等于:

夹角越小,余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"

流程:

计算模块接口部分的性能测试

使用pycharm自带的性能分析工具测试该程序

单元测试 , 按照原来文件的顺序,两两的文本相似度如下


模块异常处理

两个文本比较相似度,任意一个文本是空的,都会发生异常,除0异常(被除数为0),空序列异常


、、、
class Empty_error(Exception):
def init(self):
print("文本为空")
、、、

PSP表格

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

总结

解决这样的一个文本相似度问题,从基于余弦定理的文本相似度,到simhash\minhash,还有到gensim,可以说都系统的看了一遍,其各方法的原理也都了解了,但了解原理是一回事,要想做出来就是另一回事了。有试过simhash和gensim,刚开始好几天,都想用simhash解决这样的文本相似度问题,但建立了n个simhash.py,前两天才又发现所写得程序有bug,一切推翻重来,时间紧迫,在同学的帮助下,还是采用基于余弦定理的文本相似度叭……这也反映了我代码基础的薄弱,路漫漫其修远兮……
另外知识储备不足,有很多需要去学习

posted @ 2020-09-17 22:04  筱du  阅读(185)  评论(0)    收藏  举报