第一次个人编程作业

这个作业属于哪个课程
信安1912-软件工程
这个作业要求在哪里
个人项目作业
这个作业的目标
论文查重算法设计+学习PSP表格+单元测试+JProfiler性能分析+Git管理

1. GitHub 链接

2. PSP表格

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

3. 计算模块接口的设计与实现过程

文本余弦相似度计算算法介绍:

​ 一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。

计算过程:

  1. 分词

例:

句子A:这只皮靴号码大了。那只号码合适。
句子B:这只皮靴号码不小,那只更合适。

分词后得到:

句子A:这, 只, 皮靴, 号码, 大, 了, 那, 只, 号码, 合适
句子B:这, 只, 皮靴, 号码, 不小, 那, 只, 更合, 合适

  1. 列出所有词

'不小', '了', '合适', '那', '只', '皮靴', '更', '号码', '这', '大'

  1. 得到两个文本的词频向量

句子A:'不小'(0), '了'(1), '合适'(1), '那'(1), '只'(2), '皮靴'(1), '更'(0), '号码'(2), '这(1)', '大'(1)
句子B:'不小'(1), '了'(0), '合适'(1), '那'(1), '只'(2), '皮靴'(1), '更'(1), '号码'(1), '这(1)', '大'(0)

  1. 计算余弦值

Cos(θ) = (0, 1, 1, 1, 2, 1, 0, 2, 1, 1) · (1, 0, 1 ,1, 2, 1, 1, 1, 1, 0) = 0.81

流程图:

UML类图:

4. 计算模块接口部分的性能改进

遥测概述

类内存占用

方法耗时

内存占用主要来自词频计算和调用HanLP库,时间耗时主要在HanLP库的分词方法,因此暂无改进思路。

5. 计算模块部分单元测试展示

测试结果

代码覆盖率

6. 计算模块部分异常处理说明

5.计算模块部分单元测试展示 中已看到对路径不正确、文本内容为空两种情况的测试。

文本内容为空

找不到指定路径

posted @ 2021-09-19 18:55  優曇華院  阅读(26)  评论(0编辑  收藏  举报