首页 > 编程语言 >采用Java实现论文查重

采用Java实现论文查重

时间:2024-03-12 21:57:52浏览次数:30  
标签:查重 论文 hash 30 20 60 Java simHash 文本

这个作业属于哪个课程 <软件工程2024 (广东工业大学)>
这个作业要求在哪里 <个人项目>
这个作业的目标 <熟悉个人软件开发流程、熟悉各类工具的使用,学会用PSPG进行项目规划评估程序质量并优化程序>

一、PHP表格

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

二、计算模块接口的设计与实现过程

2.1实现查重的核心算法
  • simHsh
    simHash也称为相似hash,是一种特殊的信息指纹,常用来比较文章的相似度。主要步骤如下:
    • 通过特征将文本分词;
    • 再通过hash算法获取每个词的hash值;
    • 接着通过hash生成结果,需要按照单词的权重形成加权数字串;
    • 然后把上面各个单词算出来的序列值累加,合并成一个序列串;
    • 最后降维得到simHash签名;
  • 海明距离
    • 将不同文本最终转换的两个simHash值对比,差异的位数即为“海明距离”

参考链接

2.2类的设计
类名 功能
txtOIUtil 读写txt文件操作
simHashUtil 计算simHash
HammingUtil 计算两个simHash值的海明距离
shortStringException 处理文本过短异常
2.3 工具包的使用
  • TokenizeEngine,根据用户引入的分词库的jar来自动选择用哪个库实现分词
解析文本并分词
//自动根据用户引入的分词库的jar来自动选择使用的引擎
TokenizerEngine engine = TokenizerUtil.createEngine();
//解析文本
String text = "这两个方法的区别在于返回值";
Result result = engine.parse(text);
//输出:这 两个 方法 的 区别 在于 返回 值
String resultStr = CollUtil.join((Iterator<Word>)result, " ");
  • hanLp汉语言工具包

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

3.1 JProflier性能分析

3.2 消耗最大的函数


由于项目有大量对文章的文字进行权重以及通过hash算法获取文字hash值的操作,因此结合上图我们可以看到Float类以及hankcs汉语包所占内存较高。

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

4.1 测试类模块
  • 测试类模块
  • 测试结果
  • 测试类覆盖率

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

文本过短时,需要使用shortStringException来抛出异常。

结果如下:

标签:查重,论文,hash,30,20,60,Java,simHash,文本
From: https://www.cnblogs.com/jssmb/p/18065115

相关文章

  • 【vscode】vscode配置Java
    【vscode】vscode配置Java前言‍配环境,需要记录,避免反复踩坑。‍步骤‍step1:官网走‍配环境为什么不直接上官网教程,VisualStudioCode-CodeEditing.Redefined‍​​‍点击Java‍​​‍step2:配置必需的环境‍CodingPackforJavaTohelpyousetupqui......
  • Java项目源码基于springboot的家政服务平台的设计与实现
    大家好我是程序员阿存,在java圈的辛苦码农。辛辛苦苦板砖,今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现,项目源码以及部署相关请联系存哥,文末附上联系信息。项目源码:Java基于springboot的家政服务平台的设计与实现.rar资源-CSDN文库项目简介:......
  • Java 包装类:原始数据类型与迭代器
    JavaIteratorIterator接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持hasNext()和next()方法,用于检查是否存在下一个元素以及获取下一个元素。获取Iterator可以使用集合的iterator()方法获取Iterator实例://导入ArrayList类和Iterator类impo......
  • java美食城网站设计(ssm)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代,互联网已成为人们获取信息、交流和消费的重要平台。美食作为人类文化的重要组成部分,不仅承载着丰富的地域特色和历史传统,也是人们日常生活中......
  • day09Java学习打卡:嵌套循环
    //循环语句综合例题说明:1.不在循环条件部分限制次数的结构:for(;;)或while(true)2.结束循环有几种方式: (1)在循环条件部分返回false (2)在循环体中,执行break从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。最简单“无限”循环格式:while(true)......
  • Java是值传递还是引用传递?
    1、典型回答值传递(Passbyvalue)和引用传递(Passbyreference)是关于参数传递方式的两个概念值传递:将传递参数的值,复制一份到方法的参数中。换句话说,值传递的是原始数据的一个副本,而不是原始数据本身引用传递:将实际参数的引用(内存地址)传递给方法,这意味着方法内部对参数的修改......
  • 【华为OD机试】真题B卷-分班问题(JAVA)
    华为OD机试真题汇总目录  【华为OD机试】真题汇总A+B+C+D券(Python实现)  【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)  【华为OD机试】真题汇总A+B+C+D卷(C++实现)一、题目题目描述:幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小......
  • 01-Java程序基础
    标识符与变量标识符标识符可以标志:类名,方法名,接口名,常量名命名规则:只能由字母,数字,下划线,$组成不能以数字开头关键字不能做标识符标识符严格区分大小写例如:classHelloWorld{}classhelloWorld{}这两个类是完全不同的类,但如果用javac编译这个文件仅......
  • JavaEE开发环境配置(1)
    JavaEE开发环境配置(1)一、实验目的二、实验用的仪器和材料三、实验的步骤和方法四、数据记录和计算五、实验结果或结论六、总结一、实验目的(1)掌握JDK、Maven、Tomcat、Idea等开发环境的安装和配置(2)理解Servlet的基本原理(3)掌握Servlet项目的配置和运行方法二、实验......
  • java毕业设计五邑大学超市网上销售软件设计(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代商业活动中不可或缺的一部分。特别是网上超市销售业务,它借助网络平台突破了传统购物的时间和空间限制,为消......