130L

导航

个人项目

这个作业属于哪个课程 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类的缓存机制,可以在读取文本数据时,提高读取效率

部分单元测试

在该单元测试中,调用了原文档与添加了部分内容的文档,并计算出它们的相似度

测试结果

综合测试直接在终端中输入原文文件绝对路径,其他文件绝对路径,输出文件绝对路径

异常处理

说明:当文本过短时,未处理
当写入的目标文档路径错误时,报错

posted on 2024-03-13 17:48  lkj1111  阅读(22)  评论(0编辑  收藏  举报