第一次编程作业

Github链接:https://github.com/evaxusong/evaxusong(github上不去还未能够上传)

作业要求:

这个作业属于哪个课程 工程概论
这个作业要求在哪里 作业要求
这个作业的目标 学习进行Github项目管理 实现论文查重功能

需求分析

题目:论文查重

描述如下:

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

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

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

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

编码环境:

操作系统:windows11
ide:idea java11

代码设计:

我定义了两个文档的路径,这些路径是用来读取要比较的两个文本文档的。
在 main 方法中,我们首先调用 readDocument 方法来读取这两个文档的内容,并将其存储在字符串变量 document1 和 document2 中。
我们调用 calculateSimilarity 方法来计算两个文档的相似度,并将结果存储在 similarity 变量中。
再打印出计算得到的相似度结果。
代码中使用的文本查重算法是基于 Jaccard 系数的。具体算法如下:
先通过tokenize方法将文档内容分词,将每个单词作为词元,并将其存储在一个 Set 集合中。
创建两个 Set 集合 words1 和 words2,分别存储文档1和文档2的词元集合。
计算这两个集合的交集 intersection,即同时存在于两个文档中的词元。
计算这两个集合的并集 union,包括两个文档中所有的词元。
我们计算相似度值,即交集的大小除以并集的大小,得到一个范围在 0 到 1 之间的相似度值。相似度越高,表示两个文档越相似。

测试截图:


PSP表格:

PSP2.1 Personal Software Process Stages 预估耗时(min) 实际耗时(min)
Planning 计划 10 10
Estimate 估计这个任务需要多少时间 10 6
Development 开发 50 50
Analysis 需求分析 (包括学习新技术) 120 100
Design Spec 生成设计文档 2 2
Design Review 设计复审 10 10
Coding Standard 代码规范 25 20
Design 具体设计 10 10
Coding 具体编码 20 19
Code Review 代码复审 10 15
Test 测试 40 30
Reporting 报告 40 40
Test Repor 测试报告 10 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 5 5
total 合计 382 287
posted @   方宇凡  阅读(4)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示