论文查重

发布时间 2023-10-11 13:00:04作者: aisan0826
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014
作业所属课程 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12?page=11 ----
作业目标 了解论文查重机理; Git与GitHub的链接使用;深刻体会个人开发流程 ----

一、Github地址
https://github.com/3120005145aisan/aisan3120005145
二、PSP表格记录估计及实际在程序的各个模块的开发上耗费的时间

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

三、计算模块接口的设计与实现过程
1.工程结构

2.算法原理
首先基于传统的IR方法,将文章转换为一组加权的特征值构成的向量。

·初始化一个f维的向量V,其中每一个元素初始值为0。

·对于文章的特征向量集中的每一个特征,做如下计算:

利用传统的hash算法映射到一个f-bit的签名。对于这个f- bit的签名,如果签名的第i位上为1,则对向量V中第i维加上这个特征的权值,否则对向量的第i维减去该特征的权值。

·对整个特征向量集合迭代上述运算后,根据V中每一维向量的符号来确定生成的f-bit指纹的值,如果V的第i维为正数,则生成f-bit指纹的第i维为1,否则为0。

3.程序流程图

*4.程序结果
*
四、计算模块接口部分的性能
性能分析

内存消耗

五、计算模块部分单元测试展示

点击查看代码

public class FileToStringTest {

    @Test
    public void toStringTest(){
        FileToString fileToString = new FileToString();
        fileToString.toString("");
  }
}



import org.junit.Test;
public class SimHashTest {
    SimHash simHash;
    @Test
    public void simHashTest(){
            SimHash simHash = new SimHash("123");
            simHash.simHash();
    }
    @Test
    public void hashTest(){
        SimHash simHash = new SimHash("123");
        simHash.hash("123");
    }

    @Test
    public void subByDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.subByDistance(simHash,3);
    }


    @Test
    public void getDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.getDistance("123","234");
    }

    @Test
    public void hammingDistanceTest(){
        SimHash simHash=new SimHash("123");
        simHash.hammingDistance(simHash);
    }




}