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

个人项目

时间:2024-03-14 12:23:37浏览次数:14  
标签:TXT String 个人 项目 IO ans Test txt

这个作业属于哪个课程 软件工程2024
这个作业要求在哪里 个人项目
这个作业的目标 设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

PSP表格

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

需求分析
题目:论文查重

描述如下:

设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。
要求输入输出采用文件输入输出,规范如下:

从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。

计算模块接口的设计与实现过程
simHash算法主要有五个过程:分词、Hash、加权、合并、降维。
txtRead方法:文本读取。将txt文本内容读取成字符串。
txtWrite方法:文本写入。将相似度写入到txt文本内。

测试结果

点击查看代码
package se.test;

import org.junit.Test;
import se.main.TXT_IO;

import static se.main.TXT_IO.*;

public class TXT_IO_test {
    @Test
    public void readTxtTest() {
        // 路径存在,正常读取
        String str = readTxt("txt/orig.txt");
        String[] strings = str.split(" ");
        for (String string : strings) {
            System.out.println(string);
        }
    }

    @Test
    public void writeTxtTest() {
        // 路径存在,正常写入
        double[] elem = {0.1, 0.2, 0.3, 0.4, 0.5};
        for (int i = 0; i < elem.length; i++) {
            writeTxt(elem[i], "txt/ans.txt");
        }
    }

    @Test
    public void readTxtFailTest() {
        // 路径不存在,读取失败
        String str = readTxt("txt/none.txt");
    }

    @Test
    public void writeTxtFailTest() {
        // 路径错误,写入失败
        double[] elem = {0.1, 0.2, 0.3, 0.4, 0.5};
        for (int i = 0; i < elem.length; i++) {
            writeTxt(elem[i], "User:/test/ans.txt");
        }
    }

}

此部分对作业所给的6个测试文本进行测试,其中原文为orig.txt,抄袭文本为所有txt文本。

点击查看代码
package se.test;

import org.testng.annotations.Test;
import se.main.Hamming;
import se.main.SimHash;
import se.main.TXT_IO;

public class A_main_test
{
   
    @Test
    public void origAndOrigTest(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig.txt");
        String ansFileName = "txt/ansAndOrigTest.txt";
        double ans = Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans, ansFileName);
    }

    @Test
    public void origAndAddTest(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig_0.8_add.txt");
        String ansFileName = "txt/ansAndAddTest.txt";
        double ans =Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans, ansFileName);
    }

    @Test
    public void origAndDelTest(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig_0.8_del.txt");
        String ansFileName = "txt/ansAndDelTest.txt";
        double ans = Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans, ansFileName);
    }

    @Test
    public void origAndDis1Test(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig_0.8_dis_1.txt");
        String ansFileName = "txt/ansAndDis1Test.txt";
        double ans = Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans, ansFileName);
    }

    @Test
    public void origAndDis10Test(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig_0.8_dis_10.txt");
        String ansFileName = "txt/ansAndDis10Test.txt";
        double ans = Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans, ansFileName);
    }

    @Test
    public void origAndDis15Test(){
        String str0 = TXT_IO.readTxt("txt/orig.txt");
        String str1 = TXT_IO.readTxt("txt/orig_0.8_dis_15.txt");
        String ansFileName = "txt/ansAndDis15Test.txt";
        double ans = Hamming.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
        System.out.println("查重率:"+ans*100+"%");
        TXT_IO.writeTxt(ans,ansFileName);
    }

}



程序分析
不适合短文章的查重,还存在一定的误差

标签:TXT,String,个人,项目,IO,ans,Test,txt
From: https://www.cnblogs.com/GnY1005/p/18072379

相关文章

  • 2024-03-11-Nodejs(4-大事件项目)
    4.大事件项目4.1项目初始化项目整体架构图大事件项目 |--- db | |---index.js |---router | |---user.js |---router_handler | |---user.js |---schema | |---user.js |---app.js |---config.js4.1.1创建项目新建api_server文件夹作为项目......
  • C语言项目--**客户信息管理系统
    C语言项目–客户信息管理系统实现一个客户信息管理系统,功能包括添加客户、修改客户、删除客户、显示客户列表。1.1需求说明1.1.1主菜单进入系统,展示主菜单,输入各功能对应的数字编号选择要进行的操作,如下图:1.1.2添加客户输入1,进入“添加客户”界面,需要填写姓名、性......
  • 肖sir_搭项目实战之电商_22.1
    一、了解电商(架构组成)https://www.cnblogs.com/xiaolehong/protected/p/17503385.html  二、参考链接电商(用户端、运营端、商家端)https://www.axureshop.com/ys/2266518讲解前端:a、https://www.axureshop.com/ys/2132110电商的前端b、https://www.woshipm.com/ev......
  • 个人项目:论文查重
    这个作业属于哪个课程软件工程2024这个作业要求在哪里个人项目这个作业的目标了解软件项目开发的整体流程,实现自己的个人项目,学习单元测试、性能优化和git操作,学会使用PSP表格 Github地址:点击此处,进入我的仓库一、项目需求题目:论文查重设计一个论文......
  • python基于flask房产中介房屋供求系统django毕业设计项目lw附源码
    本设计要设计一个简单的网页,在研究的过程中具体有以下5个步骤:下面简要分析房产中介系统的业务:(1)注册、登录:注册普通账号登录。(2)用户个人信息修改:登录后可以修改用户的基本信息,也可以退出。(3)用户留言管理:用户填写留言的主题、联系人、电话、邮箱、留言内容。 (4)房屋......
  • django-crontab项目源码阅读
    文章同步首发个人公众号菩提老鹰,欢迎大家订阅一、知识点这边源码阅读分析,可以获得如下知识点1、django-crontab的原理2、django-crontab任务ID如何生产3、django-crontab使用限制很早之前写过关于django-crontab的文章,比如django任务管理之crontabDjango实现c......
  • 界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)
    DevExpressASP.NETScheduler组件能完全复制MicrosoftOutlookScheduler的样式和功能,具有日、周、月和时间轴视图,并包括内置的打印支持,因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中(点击这里回顾>>)主要介绍了DevExpressASP.NETScheduler组件的日、......
  • Idea里开发遇到所有项目的所有代码爆红的问题与解决
    问题:不知道自己在Idea上做了什么操作,所有项目的所有代码统统爆红,但是能够正常运行。过程:刚开始以为单个项目出现问题,疯狂搜索,1、清缓存重启2、改变编码格式3、更换jdk但是都无济于事,正当放弃这个项目之时,我打开其他项目,发现所有的项目都爆红,顿时崩溃,一顿搜索。解决:最终发现是......
  • 基于ts的node项目引入报错归纳
    一、导入类型定义文件错误node_modules/@types/leaflet/index.d.ts:128:1128export=e;Thismoduleisdeclaredwith'export=',andcanonlybeusedwithadefaultimportwhenusingthe'esModuleInterop'flag.这个错误表明使用export=语法,但TypeSc......
  • 个人项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/这个作业的要求https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13136这个作业的目的完成第一次个人项目,学习完成项目所必须的流程Github连接htt......