论文查重

论文查重

这个作业属于哪个课程 计科国际班软工
这个作业要求在哪里 个人项目 - 作业 - 计科国际班 - 班级博客 - 博客园 (cnblogs.com)
这个作业的目标 论文查重

 

一、作业链接

我的github:guoyongjia/3119009430: homework (github.com)

二、PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 40

40

· Estimate

· 估计这个任务需要多少时间

 1500

 1530

Development

开发

 300

 280

· Analysis

· 需求分析 (包括学习新技术)

 300

 320

· Design Spec

· 生成设计文档

50

 40

· Design Review

· 设计复审

30  

 40

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

20

 35

· Design

· 具体设计

 80

 80

· Coding

· 具体编码

 130

130 

· Code Review

· 代码复审

 40

 55

· Test

· 测试(自我测试,修改代码,提交修改)

 100

 120

Reporting

报告

 180

 170

· Test Repor

· 测试报告

 60

 50

· Size Measurement

· 计算工作量

 20

 20

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30

 30

 

· 合计

1500

 1530

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

 

 

余弦相似度 (Cosine Similarity)

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

 

 四、部分代码展示与测试:

#定义一个类

class getText():

def __init__(txts,f11,f22,K=1000):

txts.f1 = f11

txts.f2 = f22

 

#构造词和权重的关系

def vector(txts):

 cut1 = jieba.analyse.extract_tags(txts.f1,topK = txts.topK, withWeight = True)

cut2 = jieba.analyse.extract_tags(txts.f2,topK = txts.topK, withWeight = True)

#构建向量

for key,value in cut1:

txts.vector1[key] = value

for key,value in cut2:

txts.vector2[key] = value

 #利用余弦相似的公式计算相似度

def similar(txts):

txts.vector()

txts.delsim()

sum = 0

for key in txts.vector1:

sum += txts.vector1[key]*txts.vector2[key]

a = sqrt(reduce(lambda x,y: x+y, map(lambda x: x*x, txts.vector1.values())))

b = sqrt(reduce(lambda x,y: x+y, map(lambda x: x*x, txts.vector2.values())))

sum = sum/(a*b)

return sum

五、计算模块部分的性能改进

 

 

 

 

 

 

单元测试部分:

测试单元代码:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 异常处理

1)文件为空

 

 

 

 

 2)文件不存在

 

posted @ 2021-09-20 22:53  郭泳嘉  阅读(35)  评论(0编辑  收藏  举报