首页 > 其他分享 >个人项目9/12(二)

个人项目9/12(二)

时间:2024-09-14 23:24:47浏览次数:5  
标签:查重 文件 12 个人 项目 text 40 60

软件工程 计科22级12班
作业要求 第二次作业要求
作业目标 通过全流程项目实践,了解软件开发过程中
需要具备的方式与良好的软件功能必须的测试过程

项目地址 github-xuicst

一、项目要求

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

原文示例:今天是星期天,天气晴,今天晚上我要去看电影。

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

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

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

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

二、项目开发记录

PSP表格

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

三、算法代码模块

在开始设计的思路,本查重项目为论文查重,故文件信息量不算很大。查重过程中为找出于原始样本文件相似,即内容上,语句表述上具有极强的相似程度。因此,采用以词为单位,.txt的文件类型。
本项目采用 Term Frequency-Inverse Document Frequency(TF-IDF)的文本处理方式,统计单个词在文章出现频率 \(\text{TF}(t) = \frac{\text{词} t \text{在文档中出现的次数}}{\text{文档中总词数}}\)。将提取出的值进行向量化后,计算两个文本间的相似度,通过 sklearn.metrics.pairwise 库调用cosine_similarity((X: Any, Y: Any)模块,也就是使用 Cosine Similarity 余弦相似度进行处理,也就是 \(\text{Cosine Similarity} = \frac{A \cdot B}{||A|| \cdot ||B||}\)。

整体流程图如下:
block-asr

四、运行结果与代码检测

  • 环境:

    Windows 11
    PyCharm 2024.2.1 (Community Edition)
    Memory: 2008M
    Cores: 16
    scikit-learn~=1.4.1.post1
    jieba~=0.42.1

  • 代码检测:

    Qodana

界面如下:

block-asr
block-asr

五、计算性能

由于在pycharm编译器中实现项目,故利用cProfile进行性能分析。

import cProfile
import test_module
cProfile.run('calculate_similarity(orig_file, plag_file)')
block-asr

六、总结

在项目过程中,查重程序的功能和推广适用性上还略显稚嫩。在后续中,更加完整的考虑项目实现的系统性和多样测试的需要。

标签:查重,文件,12,个人,项目,text,40,60
From: https://www.cnblogs.com/xuicst/p/18414523

相关文章

  • 信息安全数学基础(12)剩余类及完全剩余系
    一、剩余类定义:设 m 是一个正整数,a 是任意整数。模 m 的 a 的剩余类定义为集合 Ca​={c∣c∈Z,c≡a(modm)}。这个集合包含了所有模 m 余数为 a 的整数。解释:剩余类实际上是将整数集 Z 分成了 m 个等价类,每个类中的元素在模 m 运算下是等价的,即它们除以 m......
  • 个人项目
    这个作业属于哪个课程班级链接这个作业要求在哪里作业链接这个作业的目标设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的文件,在答案文件中输出其重复率。Github链接:点击此处PSP表格PSP2.1PersonalSoftwarePeocessS......
  • 个人项目——论文查重
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标个人项目——论文查重一:我的github仓库地址https://github.com/kelin-KL/kelin-KL......
  • 个人项目
    这个作业属于哪个课程计科3班这个作业要求在哪里作业要求这个作业的目标<单元测试,代码性能,PSP表,git的正确使用>GithubPSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划2030·Estimate·估计这个任务......
  • 个人项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改的抄袭版论文的......
  • 个人学习笔记7-5:动手学深度学习pytorch版-李沐
    #人工智能##深度学习##语义分割##计算机视觉##神经网络#计算机视觉13.10转置卷积例如,卷积层和汇聚层,通常会减少下采样输入图像的空间维度(高和宽)。然而如果输入和输出图像的空间维度相同,在以像素级分类的语义分割中将会很方便。转置卷积(transposedconvolution)可以增加......
  • 个人项目
    https://github.com/z-ronin/z-ronin2.开发环境:IntelliJIDEACommunityEdition2024.1PSP表格计算机模块设计与实验类:Main:这是唯一的类,包含了程序的入口点main方法以及用于文件处理、相似度计算和结果输出的辅助方法。函数:main(String[]args):程序的入口点,负责处......
  • CMake构建学习笔记16-使用VS进行CMake项目的开发
    目录1.概论2.详论2.1创建工程2.2加载工程2.3配置文件2.4工程配置2.5调试执行3.项目案例4.总结1.概论在之前的系列博文中,我们学习了如何构建第三方的依赖库,也学习了如何去组建自己的CMake项目,尤其是学习了CMake的核心配置文件CMakeLists.txt如何编写。长期以来,CMakeLis......
  • 个人项目
    所属课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229作业目标学会github的使用,熟悉markdown格式,熟悉个人开发流程,了解项目单元测试Github链接:https://github.com/Qiteng925/Q......
  • 个人项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-12这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220这个作业的目标学会论文查重算法,学会使用git等操作github地址https://github.com/nurimanguli/322......