首页 > 编程语言 >java实现论文查重

java实现论文查重

时间:2024-03-15 12:33:57浏览次数:21  
标签:查重 distance java 海明 论文 simHash2 simHash1 60 计算

这个作业属于哪个课程 软件工程2024
这个作业要求在哪里 个人项目
个人gitte地址 https://gitee.com/zcan86/zcan86
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 60
· Estimate · 估计这个任务需要多少时间 60 60
Development 开发 1200 960
· Analysis · 需求分析 (包括学习新技术) 300 360
· Design Spec · 生成设计文档 60 60
· Design Review · 设计复审 30 30
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 30
· Design · 具体设计 90 90
· Coding · 具体编码 360 360
· Code Review · 代码复审 60 60
· Test · 测试(自我测试,修改代码,提交修改) 240 180
Reporting 报告 240 240
· Test Repor · 测试报告 60 70
· Size Measurement · 计算工作量 60 60
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 120 120

| · 合计 | | 1320 | 1680 |

1.模块接口的设计与实现

设计思路:利用Hamming与SimHash,通过将文本转换为字符串来实现关键词提取与SimHash计算,最后通过Hamming求距离及相似度。
由此可设计4个函数:1,文本的提取与转换为字符串 2,simhash的计算函数 3,海明距离的计算函数 4,特殊文本的处理

2.模块接口部分的性能改进

在进行相似度计算之前,对文本进行预处理,如去除停用词、标点符号、转换为小写等,以减少计算量并提高准确性。

3.模块部分单元测试展示

这是海明距离计算的代码

public class HammingUtils {
// 输入两个simHash值,计算它们的海明距离
public static int getHammingDistance(String simHash1, String simHash2) {
int distance = 0;
if (simHash1.length() != simHash2.length()) {
// 出错,返回-1
distance = -1;
} else {
for (int i = 0; i < simHash1.length(); i++) {
// 每一位进行比较
if (simHash1.charAt(i) != simHash2.charAt(i)) {
distance++;
}
}
}
return distance;
}
// 输入两个simHash值,输出相似度
public static double getSimilarity(String simHash1, String simHash2) {
// 通过 simHash1 和 simHash2 获得它们的海明距离
int distance = getHammingDistance(simHash1, simHash2);
// 通过海明距离计算出相似度,并返回
return 0.01 * (100 - distance * 100 / 128);
}

下图是覆盖率

4.异常处理

有一些关键字无法提取,通过第四个类实现无障碍运行。

标签:查重,distance,java,海明,论文,simHash2,simHash1,60,计算
From: https://www.cnblogs.com/zcann/p/18075155

相关文章

  • 人工智能时代,Java从业者必学科目:数据机构和算法,以及AI算法和技能
    【晋升攻略】Java开发者的AI时代高薪加速器在AI时代,Java从业者必学的科目包括数据结构与算法、AI算法和相关技能,这是因为这些知识和技能是构建和发展人工智能应用的基础。具体分析如下:1.数据结构与算法:数据结构和算法是计算机科学的核心,对于编写高效、可维护的代码至关重......
  • Java-IoUtil扩展工具类
    现在记录下IO扩展支持importlombok.extern.slf4j.Slf4j;importorg.apache.commons.lang3.StringUtils;importjava.io.*;importjava.util.HashMap;@Slf4jpublicclassTyIoUtil{//缓存文件头信息-文件头信息publicstaticfinalHashMap<String,String>......
  • 学习Java的第十天
    本章来讲一下什么是字符串一、什么是字符串在Java中,最常见的基本类型就是字符串了,哪哪都能见到,如输入语句,输出语句等!那么,什么是字符串呢,字符串就是String类,String类是Java中表示字符串的类。它是不可变的,一旦创建了一个字符串对象,就无法修改它。二、String类和StringBuilde......
  • 授之以渔不是授之以鱼-docker maven 构建java工程
    原始的maven构建语句mvncleaninstall-Dmaven.test.skip=true现在需要在一台新的安装有docker的机子上构建,要求用jdk17和maven3.9,这台机子较旧,只有jdk8和jdk11,但是有安装docker,在不动构建机器现有软件的情况下构建。dockerrun\--rm\-v$(pwd):$(pwd)......
  • Java中实现单例(Singleton)模式的八种方式
    单例模式定义单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。基本的实现思路单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实......
  • Java序列化和反序列化机制
    Java的序列化和反序列化机制问题导入:在阅读ArrayList源码的时候,注意到,其内部的成员变量动态数组elementData被Java中的关键字transient修饰transient关键字意味着Java在序列化时会跳过该字段(不序列化该字段)而Java在默认情况下会序列化类(实现了Java.io.Serializable接口......
  • 猫头虎分享已解决Bug | 成功解决java.lang.OutOfMemoryError: Java heap space错误
    博主猫头虎的技术世界......
  • [转][Java] Date 的替代品 Instant
    来自:https://mp.weixin.qq.com/s/SotzqrKAfrND88n12QFCEA怎么改?只能说这种基础的类改起来牵一发动全身,需要从DO实体类看起,然后就是各种Converter,最后是DTO。由于我们还是微服务架构,业务服务依赖于基础服务的API,所以必须要一起改否则就会报错。这里就不细说修改流程了,主要说一下......
  • JavaScript字符串和时间处理随笔
    2024-3-15记事1//待处理数组2letarr=[];3//筛选数组某个字段(某一列)4letjieshus=arr.railways.map(item=>item.jieshu);5//获取当前时间时间戳6letnow=Date.now();7//获取当前时间并转化成指定格式的日期字符串8letdate=newDate().toLo......
  • Javaweb项目使用本地servlet启动,可以弹出主页,跳转到controller报404解决方案
    首先检查项目的资源路径,以及tomcat配置,有没有部署,上下文配置好如果问题依然出现,那么可以考虑tomcat版本与依赖不匹配,我用的是tomcat10,使用使用这个依赖,就解决了这个问题,jakarta.servletjakarta.servlet-api5.0.0provided,相应的匹配版本可以查询到。......