• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
manyullyn
博客园    首页    新随笔    联系   管理    订阅  订阅
工程概论第二次作业

基于java的论文查重

Github

这个作业属于哪个课程 工程概论
这个作业要求在哪里 个人项目
这个作业的目标 了解如何在github里上传本地文件,测试性能

需求

题目:论文查重

描述如下:

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

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

从命令行参数给出:论文原文的文件的绝对路径。
从命令行参数给出:抄袭版论文的文件的绝对路径。
从命令行参数给出:输出的答案文件的绝对路径。
我们提供一份样例,课堂上下发,上传到班级群,使用方法是:orig.txt是原文,其他orig_add.txt等均为抄袭版论文。

注意:答案文件中输出的答案为浮点型,精确到小数点后两位

PSP表格

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

需求分析

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

总体实现

1.读写txt文件(原论文与抄袭版论文)

2.运用simhash+海明距离算法计算文本相似度

3.将相似度以浮点型(精确到小数点后两位)输入到答案文件中

4.异常处理

  • hash:计算关键词的Hash值
  • hammingDistance:对两个文档的simhash值每一位进行异或运算,计算海明距离
  • getSemblance:利用海明距离计算重复率
  • readString:文件读取

模块设计

1.利用Hanlp分词
2.将每一个分词hash为一组固定长度的数列
3.建立一个长度为128的整数数组
4.最后对数组进行判断,大于0的记为1,小于等于0的记为0,得到一个128位的simhash值

结果

posted on 2023-09-20 14:41  manyullyn  阅读(48)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3