软件工程个人项目--论文查重

欧景林 2023-03-08 18:46:21
这个作业属于哪个课程广工软件工程课程学习社区
这个作业要求在哪里个人项目作业-论文查重
这个作业的目标1.学习PSP表格的制作
2.编码完成论文查重算法的需求
3.学习对工程文件的性能分析、内存分析、单元测试
4.学习用gitcode管理代码文件
gitcode地址https://gitcode.net/ojl1037753538/3121005003

目录

  • 1.PSP表格
  • 2.需求分析
  • 2.1题目
  • 2.2需求分析
  • 3.开发环境
  • 3.1总体设计
  • 3.2模块设计
  • 3.3代码设计与实现
  • 4.样例
  • 4.1 测试
  • 5.性能分析

1.PSP表格

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

2.需求分析

2.1题目

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:

从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。

2.2需求分析

1.读写txt文件(原论文与抄袭版论文)

2.运用simhash+海明距离算法计算文本相似度

3.将相似度以浮点型(精确到小数点后两位)输入到答案文件中

4.异常处理

3.开发环境

  • 编程语言:Java
  • IDE:IntelliJ IDEA
  • 性能分析工具:JProfiler
  • 依赖的外部jar包:汉语言处理包

3.1总体设计

项目结构

img


image-20220916220208235

3.2模块设计

方法:

  • simHash:计算文本的simhash值

1.利用Hanlp分词
2.将每一个分词hash为一组固定长度的数列
3.建立一个长度为128的整数数组
4.最后对数组进行判断,大于0的记为1,小于等于0的记为0,得到一个128位的simhash值.

  • hash:计算关键词的Hash值

  • hammingDistance:对两个文档的simhash值每一位进行异或运算,计算海明距离

  • getSemblance:利用海明距离计算重复率

  • readString:文件读取

3.3代码设计与实现

  • MainPaperCheck类

    存放main方法调用其他方法。

    读取对应文件,将文件内容转化为字符串形式;调用getSimHash方法得出SimHash值,再计算出海明距离和相似度;将相似度以浮点型小数写入指定文件;退出程 序。

  • SimHashUtils类

    用于计算SimHash值。

  • getHash方法

    使用MD5获得传入的String类型字符串的Hash值,并以字符串形式返回。

  • getSImHash方法

    计算SimHash值,并以字符串形式输出。

  • HammingUtils类

    计算海明距离,并利用海明距离计算相似度,其公式为1-海明距离/128。

  • TxtOUtils类

    调用Java.io包提供的接口,实现txt文件的读写。

  • ShortStringException类

    处理异常。

4.样例

4.1 测试

测试代码

@Test
    public void addTest(){
        String origin="C:\\Users\\Administrator\\IdeaProjects\\3120004815paper\\src\\main\\resources\\orig.txt";
        String test= "C:\\Users\\Administrator\\IdeaProjects\\3120004815paper\\src\\main\\resources\\orig_0.8_dis_15.txt";
        SimHash hash1 = new SimHash(SimHash.readString(origin), 128);
        SimHash hash2 = new SimHash(SimHash.readString(test), 128);
        //海明值计算
        System.out.println("海明距离值:"+hash1.hammingDistance(hash2));
        //相似率值
        System.out.println("相似率:"+hash1.getSemblance(hash2));
    }

五个例子

1


2


3


4


5

5.性能分析

3


3


3

...全文
113 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
XXXTravis ScottXXX 2023-03-09
  • 打赏
  • 举报
回复

👍👍

192

社区成员

发帖
与我相关
我的任务
社区描述
广工软工21级3、4班,软件工程课程学习、训练、讨论交流社区
软件工程 高校 广东省·广州市
社区管理员
  • ryue.zh
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧