个人编程作业

第一次个人编程项目

课程 软件工程
要求 个人项目作业
题目 论文查重

github链接

一、题目要求

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

  • 原文示例:今天是星期天,天气晴,今天晚上我要去看电影。
  • 抄袭版示例:今天是周天,天气晴朗,我晚上要去看电影。

要求输入输出采用文件输入输出,规范如下:

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

二、项目实现

  • 实现思路:
  • 关键类:
 //算词频
 for (String s : JieBaUtil.startParticiple(str1)) {
            if (vectorMap.containsKey(s)) {
                vectorMap.get(s)[0]++;
            } else {
                tempArray = new int[2];
                tempArray[0] = 1;
                tempArray[1] = 0;
                vectorMap.put(s, tempArray);
            }
        }
        for (String s2 : JieBaUtil.startParticiple(str2)) {
            if (vectorMap.containsKey(s2)) {
                vectorMap.get(s2)[1]++;
            } else {
                tempArray = new int[2];
                tempArray[0] = 0;
                tempArray[1] = 1;
                vectorMap.put(s2, tempArray);
            }
        }
  • 核心算法:余弦相似度计算。

    步骤

    1. 分词

    2. 列出所有词

    3. 使用Map记录词数

    4. 代入公式

三、性能

  • 测试覆盖率截图
  • 单元测试
  • 类的内存消耗
  • CPU Load
  • 堆内存

四、PSP表格

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

本文使用 mdnice 排版

posted on 2020-09-24 23:23  Yuki-r  阅读(207)  评论(0编辑  收藏  举报

导航