第一次个人编程作业

这个作业属于哪个课程 软件工程
这个作业要求在哪里 作业要求
这个作业的目标 <自主完成一个编程项目并上传至Github中管理,熟悉项目开发的简单流程>

作业的Github连接

一.PSP表格

二.计算模块接口的设计和实现过程

共创建了4个类用于实现不同的功能:

  1. TextIOUtil类:包含两个静态方法
    1.1 readText方法:用作读取文件,并转换成字符串。
    1.2 writeText方法:用作把结果从字符串转换成文件,并写出。
    都是使用java.io包提供的方法实现

  2. SimHashUtils类:包含两个静态方法
    2.1 getHash方法:用于得到一个字符串的Hash值,提供给下面的方法使用。(使用MD5的方法获得hash值)

    2.2 getSimHash方法:传入字符串,得到该字符串的SimHash值。
    获得SimHash值的算法流程图:

(1) 分词:

(2) 获得hash值:

(3) 加权、合并:

(4) 降维:

  1. HammingUtils类:包含两个静态方法
    3.1 getHammingDistance方法:传入两个SimHash值的字符串,计算出海明距离。

    3.2 getRepetitionRate方法:根据上述方法获得的海明距离计算得出两个文本的重复率。

  2. MainTextRechecking类:主类,使用命令行传入的参数,并调用上述的方法,得出最终的结果。
    对静态方法的调用如下:

三.计算模块接口部分的性能改进

  1. overview:

  2. 方法的调用情况:

分析:程序在对文本的分词上花费了很长时间。
并长时间用int型数组对特征向量进行相应的计算以获取字符串的SimHash值。

四.计算模块部分单元测试展示

  1. 读取模块测试:

测试结果:

路径不存在的情况下,会出现异常

代码覆盖率:

  1. 计算SimHash的模块测试:

测试结果:

文本过短的情况下,会出现自定义的异常

代码覆盖率:

  1. 计算海明距离模块测试:

测试结果:

代码覆盖率:

  1. 主方法的测试:

测试结果:





代码覆盖率:

五.计算模块部分异常处理说明

自定义一个异常:

在分词前进行判断异常是否存在:

参考的文章:
SimHash算法
Jprofiler使用
单元测试使用

posted @ 2021-09-19 16:53  Lofreeop  阅读(55)  评论(0编辑  收藏  举报