这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13136 |
这个作业的目标 | 了解项目开发的过程,学习github的使用方法 |
GitHub链接:https://github.com/sunwu12/3122004579
P2P表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 20 |
Development | 开发 | 560 | 600 |
· Analysis | · 需求分析 (包括学习新技术) | 200 | 100 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审 | 60 | 40 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 50 | 30 |
· Design | · 具体设计 | 100 | 110 |
· Coding | · 具体编码 | 200 | 300 |
· Code Review | · 代码复审 | 70 | 45 |
· Test | · 测试(自我测试,修改代码,提交修改) | 80 | 50 |
Reporting | 报告 | 60 | 50 |
· Test Repor | · 测试报告 | 40 | 20 |
· Size Measurement | · 计算工作量 | 40 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 70 |
· 合计 | 1600 | 1505 |
程序与实现
程序采用的主要算法是SimHash原理
主要分为3个功能
1、文件的读入与写出
2、分词得到hash值并计算SimHash值
3、利用SimHash值得到海明距离并计算出相似度
算法的优点:文本处理速率快,计算后的指纹能够存储于数据库,因此对海量文本相似判定非常适合。
算法的缺点:由于短文本的用于哈希计算的数据源较少,因此短文本相似度识别率低。
算法原理
https://www.cnblogs.com/xujunkai/p/12038649.html
结构
接口设计
说明:计算相似度的模块需要调用计算海明距离的模块
计算SimHash值的模块需要调用将分好的词转换为hash的模块
覆盖率
内存检测
程序中函数的消耗
其中开销最多的函数是因其多次使用了String toString(),将StringBuilder类型转换为string类型
采用了将读入字节信息转换为字符流来提高性能
并通过BufferedReader类的缓存机制,可以在读取文本数据时,提高读取效率
部分单元测试
在该单元测试中,调用了原文档与添加了部分内容的文档,并计算出它们的相似度
测试结果
综合测试直接在终端中输入原文文件绝对路径,其他文件绝对路径,输出文件绝对路径
异常处理
说明:当文本过短时,未处理
当写入的目标文档路径错误时,报错