首页 > 其他分享 >个人项目

个人项目

时间:2024-09-13 18:45:56浏览次数:1  
标签:段落 个人 TxtIOput 项目 60 算法 IOException Test

作业GitHub地址
https://github.com/Miaomia0QAQ/miaomiao
PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 25 5
Estimate 估计这个任务需要多少时间 20 20
Development 开发 50 60
Analysis 需求分析 (包括学习新技术) 60 240
Design Spec 生成设计文档 10 15
Design Review 设计复审 60 60
Coding Standard 代码规范 (为目前的开发制定合适的规范) 10 10
Design 具体设计 20 30
Coding 具体编码 3天 3天
Code Review 代码复审 30 2天
Test 测试(自我测试,修改代码,提交修改) 30 60
Reporting 报告 60 60
Test Repor 测试报告 15 10
Size Measurement 计算工作量 5 5
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 25
合计 4天 6天
开发
1.本次个人项目通过java进行实现,由 3 个类构成--main 类、TxtIOput 类、sentence 类。
2.开发环境:
编程语言:Java
IDE:Intellij IDEA
项目构建工具:maven
性能分析工具:JProfiler

模块具体接口
一、main类
负责调用其他类的方法,先调用TxtIOput类的setArticle方法,再调用senten类计算,最后由TxtIOput类的printResult方法将答案输出到指定文件。
二、TxtIOput类
主要负责从指定文件中接收信息并转为字符串并进行处理,以便于后续计算。
三、sentence类
核心算法模块,具体的实现原理是在对照文本中按字符搜索原文对应语句,标记重复且连续的字符,最终计算重复连续字符在文本中的占比得出相似度。在计算过程中,划分段落与句子,动态计算对照文本段落的相似度,在低于特定值时就跳过正在对照的原文段落,同时若对照文本的某段落与原文某段落最终的相似度超过一定值时,则认定该段落就是抄袭了原文的这一段落,就不比较其与原文其他段落的相似度,以此方式来达到简化运算和提高效率的效果,还能够提高计算的精度,防止相似度偏高。
相较于网上的汉明距离等算法,这一套算法更简单直接,擅长处理较短文本,但要面临在极端情况下效率低下的问题,而且在一个段落极长的情况下,重复字词的出现频率就会变高,会导致一些专业名词术语或者常用字词被错误标记,从而导致相似度虚高,此时则需要引入一个关键字词库来解决这一个问题。
性能分析

性能改进的方案在之前已经提出,但这种改进也只是减少了在理想情况的计算次数,想要真正提高计算效率仍然是要从算法入手,采用更加专业有效的算法来解决问题。

单元测试
TxtIOput模块测试

点击查看代码
package gdut.miaomiao;

import org.testng.annotations.Test;

import java.io.IOException;

public class TestInOutPut {
    @Test
    public void readTxt() throws IOException {
        // 路径存在,正常读取
        TxtIOput t = new TxtIOput("D:/test/orig.txt");
        String str = t.getArticle();
        String[] strings = str.split(" ");
        for (String string : strings) {
            System.out.println(string);
        }
    }

    @Test
    public void writeTxt() throws IOException {
        // 路径存在,正常写入
        TxtIOput t = new TxtIOput("D:/test/result.txt");
        double[] elem = {0.11, 0.22, 0.33, 0.44, 0.55};
        for (double v : elem) {
            t.printResult("D:/test/result.txt",v);
        }
    }
    @Test
    public void readTxtFail() throws IOException {
        // 路径不存在,读取失败
        TxtIOput t = new TxtIOput("D:/test/orig888.txt");
    }

}
![](/i/l/?n=24&i=blog/3512100/202409/3512100-20240913185306074-234878622.png) **sentence模块测试**
点击查看代码
package gdut.miaomiao;

import org.testng.annotations.Test;

import java.io.IOException;

public class SentenceTest {
    @Test
    public void SimilarityTest() throws IOException {
        //输入两端字符串,预期相似度为0.875
        String str1 = "v床前明月光\n" +
                "我疑是地上霜\n" +
                "5举头望明月\n" +
                "0低头思故乡";  //对照文
        String str2 = "床前明月光\n" +
                "疑是地上霜\n" +
                "举头望明月\n" +
                "低头思故乡";  //原文
        Sentence s = new Sentence(str1, str2);
        double rs = s.Similarity();
        System.out.println(rs);
    }
}
![](/i/l/?n=24&i=blog/3512100/202409/3512100-20240913185403468-1213852303.png)

异常处理
当输入文件地址不存在时,抛出异常,详细在文件读写测试模块有提及。

总结
本项目的最大难点在于查重算法的实现,如何进行高效地、准确地进行查重是这个项目最核心的点。本次算法设计由本人设计,算法难免相对朴素,但是在不断的测试和优化中提高了对算法和软件设计的理解,掌握了一些工具的使用,收获颇丰。

标签:段落,个人,TxtIOput,项目,60,算法,IOException,Test
From: https://www.cnblogs.com/guangdong1/p/18412706

相关文章

  • 创建一个Django项目
    步骤1:创建Django项目和应用创建Django项目:bashdjango-adminstartprojectmyprojectcdmyproject创建Django应用:bashpythonmanage.pystartappmyapp安装并配置DjangoRestFramework(如果尚未安装):bashpipinstalldjangorestframework将myapp和rest_f......
  • 个人项目:论文查重
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13228这个作业的目标设计一个论文查重程序,了解软件开发流程gitHub项目地址https://github.com/Abaistudy......
  • 【智慧城市】新中地GIS开发实训项目:华农优秀学生学习成果展示(1)云游江城
    项目名称:云游江城项目功能简介地球自转城市建筑桥梁航线图导航系统景点查询美食查询资讯简报☑0基础可学  ☑助力就业 ☑优选赛道嘉薇Gis_17得7天试听课+海量GIS资料授课形式:线上/线下,直播+录播均可......
  • 国家标准 | CSPM-3中级项目管理专业人员认证
    10月底全国CSPM-3考试现场1CSPM介绍项目管理专业人员能力评价(ChinaStandardsProjectManagement,CSPM)是指依据中国标准开展的项目管理专业人员能力评价。它是由中国标准化协会(全国项目管理标准化技术委员会秘书处)设立,运用已发布的项目管理国家标准(国际标准、团体标准),针对项目管理......
  • 基于Java中的SSM框架实现校园生活管理系统项目【项目源码+论文说明】计算机毕业设计
    基于java中的SSM框架实现校园生活管理系统演示【内附项目源码+LW说明】摘要随着现代化发展进程不断的加快,人们对于网络的接受程度越来越强,现在人们的生活与工作已经离不开网络的帮助。而网络在当下的学校中也已经非常的普及,现在各类学校的网络覆盖率已经接近于100%。基于......
  • 基于Java中的SSM框架实现校园招聘信息管理系统项目【项目源码+论文说明】计算机毕业设
    基于java中的SSM框架实现校园招聘信息管理系统平台演示【内附项目源码+LW说明】摘要随着我国近年来高校不断的进行扩招,2022年全国高校的毕业生人数已经超过一千万人,而在这个时代的大学生早已不像上世纪八九十年代一样,毕业就可以分配工作,所以在当今这个时代毕业生找工作是......
  • 个人项目-论文查重
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标<设计一个论文查重的程序,加深对项目开发的理解,增强对程序的测试与纠错流程的了解>G......
  • Xtuner微调个人小助手
    task:使用Xtuner微调InternLM2-Chat-1.8B实现自己的小助手认知。1安装环境!pipinstalltransformers==4.39.3!pipinstallstreamlit==1.36.02安装xtunergitclonehttps://gitclone.com/github.com/InternLM/XTuner./XTunercdXTunerpipinstall-e'.[deepspeed]'-ihttp......
  • Springboot项目中配置pom将资源文件导出jar包外
    缘起:​ 这些天在不断完善前面写的项目,然后今天突然发现这么一件事:resources目录下的文件都被打包到jar包中了,这样就会导致一件事,对于一些resources中的文件更新换代以及yml配置的修改肥肠麻烦。于是就寻思着把文件导出。​ 为了调试和打包之后的资源依旧能用同一段代码正常访问......
  • 创建 Tauri 项目
    在上一篇中,我们详细介绍了如何在Windows上搭建Tauri开发环境,包括安装所需的依赖项、配置开发工具以及处理常见的问题。这为我们顺利开始Tauri开发提供了坚实的基础。在本章中,我们将更进一步,学习如何创建一个全新的Tauri项目,并探讨如何将Tauri集成到一个已经存在的Web......