首页 > 其他分享 >个人项目-论文查重

个人项目-论文查重

时间:2024-09-13 21:25:45浏览次数:1  
标签:查重 文件 String 个人 论文 汉明 字符串

个人项目-论文查重

这个作业属于哪个课程 班级链接
这个作业要求在哪里 作业链接
这个作业的目标 写一个论文查重项目

github链接

1.题目要求

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。
原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:
从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。
注意:答案文件中输出的答案为浮点型,精确到小数点后两位

2.项目开发

2.1 开发环境:

语言:java
平台:IDEA

2.2 项目构成:

主程序:HammingSimilarity类
主函数:main——程序入口
其他函数:
readFile——从命令行读取文件地址,到指定地址读取文件
toBinary——将文本转换为固定长度的二进制字符串
computeHammingDistance——计算汉明距离
writeOutput——输出最终结果

2.3项目设计思路

从文件中读取到两个长字符串,使用汉明距离计算两个字符串的相似度,汉明距离表示两个等长字符串在对应位置上不同字符的数目,汉明距离度量了通过替换字符的方式将字符串x变成y所需要的最小的替换次数,然后输出到目标文件

2.4关键函数实现

toBinary函数 该函数实现了将文本转化为固定长度二进制代码的功能

点击查看代码
    private static String toBinary(String text) {
        StringBuilder binary = new StringBuilder();
        for (char c : text.toCharArray()) {
            String bin = String.format("%8s", Integer.toBinaryString(c)).replace(' ', '0');
            binary.append(bin);
        }
        return binary.toString();
    }

computeHammingDistance函数 该函数实现了汉明距离计算的功能

点击查看代码
    private static int computeHammingDistance(String binary1, String binary2) {
        int distance = 0;
        for (int i = 0; i < binary1.length(); i++) {
            if (binary1.charAt(i) != binary2.charAt(i)) {
                distance++;
            }
        }
        return distance;
    }

2.5后续改进方案

处理文件内容长度差异:
当前代码中,如果两个文本的二进制长度不同,它只取了最小长度的部分。如果文件内容的长度差异较大,这可能会导致不准确的相似度计算,考虑使用填充或其他方法来处理长度不一致的情况
异常处理:
异常处理目前只是打印堆栈信息,后续改进可能需要更详细的错误处理或用户提示
性能考虑:
对于大文件,可能会有性能瓶颈,特别是在内存使用和二进制字符串处理方面,后续应考虑逐行或分块处理文件,以减少内存消耗

3.性能分析

采用JProfiler分析,如图所示

4.PSP表格

标签:查重,文件,String,个人,论文,汉明,字符串
From: https://www.cnblogs.com/qiubai114/p/18412861

相关文章

  • 一个简单的个人导航页html源码
    <!DOCTYPEhtml><htmllang="zh-cn"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>xxx个人导航页</title><......
  • 第一次软件工程项目--论文查重
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标个人项目——论文查重GitHub地址:https://github.com/samuhaer4581/3122004581.git......
  • 计算机毕业设计-基于Java+SSM架构的演唱会购票系统项目开发实战(附源码+论文)
    大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • 基于python+flask框架的进销存管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着企业规模的扩大与市场竞争的加剧,传统的手工管理模式已难以满足现代商业对效率与准确性的高要求。进销存管理系统作为企业管理的重要组......
  • 基于python+flask框架的资产评估系统的设计与实现(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着市场经济的快速发展与全球化进程的加速,资产评估作为连接经济交易、投资决策、财务管理的重要环节,其重要性日益凸显。传统的手工评估方......
  • 基于python+flask框架的教师档案管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育事业的蓬勃发展,教师作为教育体系的核心资源,其管理效率与质量直接关系到学校的教学水平和长远发展。传统的手工或简单的电子表格管......
  • 基于python+flask框架的应急联动预案系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会经济的快速发展与城市化进程的加速,各类突发事件频发,如自然灾害、公共安全事件、公共卫生危机等,对社会稳定、经济发展及民众生活构......
  • 论文查重
    仓库地址:https://github.com/bitpurleclude/3122004951Plagiarism-check.git这个作业属于哪个课程(https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxT_rAhbZKO3TfjMmbv1B0Re5Fp2d0_QACha2ZoYZ4fxF-ZKCCAhfJl7B8mvCfesLYE02X8T6kx_2R8w0......
  • 时序必读论文05|PatchTST : 时序数据Patch已成趋势【ICLR 2023】
    书接上回,我们在之前的文章已经分析了直接把transformer应用到时间序列预测问题的不足,其中我们总结了4个不足:分别是:注意力机制的计算复杂度高,为O(N^2),并且计算得出的权重仅有少部分有用;注意力机制仅建立单时间点位之间的关系,实际能提取到的信息非常有限;对时序或者说位......
  • 个人项目
    个人项目这个作业属于哪个课程计科22级12班这个作业要求在哪里作业要求这个作业的目标完成个人项目,实现论文查重的功能,了解软件开发流程github:https://github.com/MIR-mIsTEo/3122004822-01一、完成PSP表格PSP2.1PersonalSoftwareProcessStages预估......