ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

论文查重

2021-09-19 14:34:12  阅读:212  来源: 互联网

标签:查重 文件 Github 海明 论文 3.3 测试 100


个人项目

软件工程 班级链接
作业要求:
1.在 Github 仓库中新建一个学号为名的文件夹。
2.在开始实现程序之前,在 PSP 表格记录下你估计在程序开发各个步骤上耗费的时间,在实现程序之后,在PSP表格记录下你在程序的各个模块上实际花费的时间。
3.语言不限,并将编译好的程序发布到 Github 仓库中的 releases 中。
4.提交的代码要求经过 Code Quality Analysis 工具的分析并消除所有的警告。
5.完成项目的首个版本之后,请使用性能分析工具Studio Profiling Tools来找出代码中的性能瓶颈并进行改进。
6.使用Github来管理源代码和测试用例,代码有进展即签入Github。
7.使用单元测试对项目进行测试,并使用插件查看测试分支覆盖率等指标;写出至少10个测试用例确保你的程序能够正确处理各种情况。
作业链接
作业目标:
设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

Github链接

一.PSP表格

PSP2.1 Person Software Process Stages 预估耗时(分钟) 实际耗时
Planning 计划 100 120
Estimate 估计这个任务需要多长时间 120 100
Development 开发 2420 2500
Analysis 需求分析(包括学习新技术) 450 400
Design Spec 生成设计文档 120 125
Design Review 设计复审 30 30
Coding Standard 代码规范 90 100
Design 具体设计 100 100
Coding 具体编码 500 450
Test 测试(自我测试,修改代码...) 300 350
Reporting 报告 90 90
Test Measurement 计算工作量 90 90
Postmortem&Process Improvement Plan 事后总结,并提出过程中的修改计划 60 60
合计

二.开发环境

  1. 项目构建工具:maven
    2.性能分析工具:JProfiler 9.2
    3.依赖的外部jar包:汉语言处理包HanLP
    4.单元测试:JUnit-4.13.1

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

3.1.程序实现类

主类:Application,包含main方法,可以接收指定参数,传递给文件类进行文件的输入和输出,并调用工具类

工具类:FileUtil:文件处理类,用来读取和输出文件;

HammingUtil:计算海明距离;

SimHashUtil:计算SimHash值的类

ResultUtil:结果处理类,把重复率处理出来

测试类:单元测试 :测试各模块是否正常

整体流程(思维导图):

3.2.核心算法:

SimHash+海明距离

具体可参考文章SimHash和海明距离

3.3接口的设计和实现

3.3.1 FileUtil:包含两个静态方法。ReadTxt读取文件,将其转换为字符串;WriteText写入文件,将查重结果写入到指定文件路径

3.3.2 SimHashUtil:包含两个静态方法。getHash:传入String,计算出它的hash值,并以字符串形式输出 ;getSimHash:传入String,计算出它的simHash值,并以字符串形式输出

3.3.3 HammingUtil:1个静态方法。getHammingDistance:输入输入两个 simHash 值,计算出它们的海明距离 distance

3.3.4 Main主模块 :调用各种工具类的方法,把结果显示出来

四.单元测试:

4.1 读写测试

4.2 SimHash模块测试

测试结果

4.3海明距离模块测试

**五,接口部分的性能
5.1性能分析

从图中可以看出,调用次数最多的是com.hankcs.hanlp包提供的接口, 即分词、取关键词与计算词频花费了最多的时间。
所以在性能上基本没有什么需要改进的。

遇到的问题:
不熟悉IDEA的使用,在项目配置方面花了很长时间,外部依赖,导入jar包等也是第一次接触,比较陌生。
java没有学好,在程序理解和修改方面也花了大量时间,还有就是新接触了性能分析工具,认识到了IDEA的强大之处。
学习了如何在Github导入IDEA项目。

标签:查重,文件,Github,海明,论文,3.3,测试,100
来源: https://www.cnblogs.com/jnh198/p/15265600.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有