第一次个人编程作业

作业要求&github

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

psp表格:

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

代码模块


main为程序入口
MySimHash为文本查重算法
FileUtils为文本上传

SimHash算法

simhash算法的输入是一个向量,输出是一个f位的签名值。为了陈述方便,假设输入的是一个文档的特征集合,每个特征有一定的权重。比如特征可以是文档中的词,其权重可以是这个词出现的次数。simhash算法如下:

1,将一个f维的向量V初始化为0;f位的二进制数S初始化为0;

2,对每一个特征:用传统的hash算法对该特征产生一个f位的签名b。对i=1到f:

如果b的第i位为1,则V的第i个元素加上该特征的权重;

否则,V的第i个元素减去该特征的权重。

3,如果V的第i个元素大于0,则S的第i位为1,否则为0;

4,输出S作为签名。

模块接口性能分析



单元测试

package Au73.Dc;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class AppTest
extends TestCase
{

public void test1() {
   
    try {
    	 Main.start("D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig.txt", 
    			 "D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig_0.8_add.txt", 
    			 "D:\\\\\\\\Dc\\\\Dc\\\\src\\\\test\\\\java\\\\Au73\\\\Dc\\\\answer.txt");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		Assert.fail();
	}
}
public void test2() {
    
    try {
    	 Main.start("D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig.txt", 
    			 "D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig_0.8_del.txt", 
    			 "D:\\\\\\\\Dc\\\\Dc\\\\src\\\\test\\\\java\\\\Au73\\\\Dc\\\\answer.txt");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		Assert.fail();
	}
}
public void test3() {
    
    try {
    	 Main.start("D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig.txt", 
    			 "D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig_0.8_dis_1.txt", 
    			 "D:\\\\\\\\Dc\\\\Dc\\\\src\\\\test\\\\java\\\\Au73\\\\Dc\\\\answer.txt");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		Assert.fail();
	}
}
public void test4() {
    
    try {
    	 Main.start("D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig.txt", 
    			 "D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig_0.8_dis_10.txt", 
    			 "D:\\\\\\\\Dc\\\\Dc\\\\src\\\\test\\\\java\\\\Au73\\\\Dc\\\\answer.txt");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		Assert.fail();
	}
}
public void test5() {
    
    try {
    	 Main.start("D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig.txt", 
    			 "D:\\\\Dc\\Dc\\src\\test\\java\\Au73\\Dc\\orig_0.8_dis_15.txt", 
    			 "D:\\\\\\\\Dc\\\\Dc\\\\src\\\\test\\\\java\\\\Au73\\\\Dc\\\\answer.txt");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		Assert.fail();
	}
}
posted @ 2020-09-24 23:17  Au73  阅读(203)  评论(0)    收藏  举报