这个作业属于哪个课程 | 软件工程2024 |
---|---|
这个作业要求在哪里 | 个人项目 |
个人gitte地址 | https://gitee.com/zcan86/zcan86 |
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
· Estimate | · 估计这个任务需要多少时间 | 60 | 60 |
Development | 开发 | 1200 | 960 |
· Analysis | · 需求分析 (包括学习新技术) | 300 | 360 |
· Design Spec | · 生成设计文档 | 60 | 60 |
· Design Review | · 设计复审 | 30 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
· Design | · 具体设计 | 90 | 90 |
· Coding | · 具体编码 | 360 | 360 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 240 | 180 |
Reporting | 报告 | 240 | 240 |
· Test Repor | · 测试报告 | 60 | 70 |
· Size Measurement | · 计算工作量 | 60 | 60 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 120 | 120 |
| · 合计 | | 1320 | 1680 |
1.模块接口的设计与实现
设计思路:利用Hamming与SimHash,通过将文本转换为字符串来实现关键词提取与SimHash计算,最后通过Hamming求距离及相似度。
由此可设计4个函数:1,文本的提取与转换为字符串 2,simhash的计算函数 3,海明距离的计算函数 4,特殊文本的处理
2.模块接口部分的性能改进
在进行相似度计算之前,对文本进行预处理,如去除停用词、标点符号、转换为小写等,以减少计算量并提高准确性。
3.模块部分单元测试展示
这是海明距离计算的代码
public class HammingUtils {
// 输入两个simHash值,计算它们的海明距离
public static int getHammingDistance(String simHash1, String simHash2) {
int distance = 0;
if (simHash1.length() != simHash2.length()) {
// 出错,返回-1
distance = -1;
} else {
for (int i = 0; i < simHash1.length(); i++) {
// 每一位进行比较
if (simHash1.charAt(i) != simHash2.charAt(i)) {
distance++;
}
}
}
return distance;
}
// 输入两个simHash值,输出相似度
public static double getSimilarity(String simHash1, String simHash2) {
// 通过 simHash1 和 simHash2 获得它们的海明距离
int distance = getHammingDistance(simHash1, simHash2);
// 通过海明距离计算出相似度,并返回
return 0.01 * (100 - distance * 100 / 128);
}
下图是覆盖率
4.异常处理
有一些关键字无法提取,通过第四个类实现无障碍运行。
标签:查重,distance,java,海明,论文,simHash2,simHash1,60,计算 From: https://www.cnblogs.com/zcann/p/18075155