第一次编程作业

一、gitcode链接

gitcode链接: https://gitcode.net/m0_63558298/3121005193k

二、作业基本描述

这个作业属于哪个课程广工2023软件工程课程社区
这个作业要求在哪里第一次个人编程作业
这个作业的目标实现论文查重的编码
其他参考文献使用simhash以及海明距离判断内容相似程度

三、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划1020
Estimate估计这个任务需要多少时间12801540
Development开发240300
Analysis需求分析 (包括学习新技术)240240
Design Spec生成设计文档6050
Design Review设计复审4030
Coding Standard代码规范 (为目前的开发制定合适的规范)4040
Design具体设计300420
Coding具体编码180240
Code Review代码复审3020
Test测试(自我测试,修改代码,提交修改)3060
Test Repor测试报告3060
Size Measurement计算工作量4040
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划4020
合计12801540

四、算法的设计及实现过程

1、整体流程

本项目是使用simhash以及海明距离判断内容相似程度 ,以实现文本的查重,包括五个主要过程:分词、Hash、加权、合并、降维。

2、类

在这里插入图片描述

  • MainPaperCheck:main 方法所在的类,进行cmd的调用
  • HammingUtils:计算海明距离的类
  • SimHashUtils:计算 SimHash 值的类
  • TxtIOUtils:读写 txt 文件的工具类
  • ShortStringException:处理文本内容过短的异常类
  • test包:单元测试类

五、性能改进

由各个性能测试图可以得出,单个测试都没有超过5s的,符合要求,性能良好,并不需要改进。
消耗最大的是调用的一个外部的包。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、单元测试展示

  • 单元测试
 @Test
    public void origAndAllTest() {
        String[] str = new String[6];
        str[0] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig.txt");
        str[1] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig_0.8_add.txt");
        str[2] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig_0.8_del.txt");
        str[3] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig_0.8_dis_1.txt");
        str[4] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig_0.8_dis_10.txt");
        str[5] = TxtIOUtils.readTxt("C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\orig_0.8_dis_15.txt");
        String ansFileName = "C:\\Users\\16401\\Desktop\\text\\PaperCheck\\测试文本\\ans.txt";
        for (int i = 0; i <= 5; i++) {
            double ans = HammingUtils.getSimilarity(SimHashUtils.getSimHash(str[0]), SimHashUtils.getSimHash(str[i]));
            TxtIOUtils.writeTxt(ans, ansFileName);
        }
    }

在这里插入图片描述
在这里插入图片描述

  • cmd输入输出
    在这里插入图片描述

在这里插入图片描述

  • 覆盖率
    在这里插入图片描述

七、异常处理说明

当文本长度过短时,HanLp无法取得关键字,需要抛出异常。

        try{
            if(str.length() < 200) throw new ShortStringException("文本过短!");
        }catch (ShortStringException e){
            e.printStackTrace();
            return null;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值