首页 > 其他分享 >第一次软件工程项目--论文查重

第一次软件工程项目--论文查重

时间:2024-09-13 21:14:28浏览次数:9  
标签:查重 jieba 20 -- 30 软件工程 path main 分词

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229
这个作业的目标 个人项目——论文查重

GitHub地址:https://github.com/samuhaer4581/3122004581.git

psp表格

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

设计算法

Python文本相似度计算
设计思路

  • Python依赖

jieba
本文使用Python的jieba库对文本进行分词。

Python jieba库的使用说明

一、jieba库基本介绍
(1)、jieba库概述

     jieba是优秀的中文分词第三方库

     - 中文文本需要通过分词获得单个的词语
     - jieba是优秀的中文分词第三方库,需要额外安装

     - jieba库提供三种分词模式,最简单只需掌握一个函数

(2)、jieba分词的原理

     Jieba分词依靠中文词库

     - 利用一个中文词库,确定汉字之间的关联概率
     - 汉字间概率大的组成词组,形成分词结果

     - 除了分词,用户还可以添加自定义的词组

二、jieba库使用说明
(1)、jieba分词的三种模式

     精确模式、全模式、搜索引擎模式

     - 精确模式:把文本精确的切分开,不存在冗余单词
     - 全模式:把文本中所有可能的词语都扫描出来,有冗余

     - 搜索引擎模式:在精确模式基础上,对长词再次切分

(2)、jieba库常用函数
gensim
本文使用Python的gensim库计算文本相似度。

  • 核心算法

    点击查看代码
import unittest

class Test(unittest.TestCase):
    orig_path = "../data/test1/orig.txt"
    ans_path = "answer.txt"

    def test_dis15_2(self, orig_path=orig_path, ans_path=ans_path):
        test_path = "../data/test2/orig_0.8_dis_15.txt"
        text1 = main.filter_words(main.read_file(orig_path))
        text2 = main.filter_words(main.read_file(test_path))
        main.save_answer(ans_path, main.calc_similarity(text1, text2))
        main.get_answer(ans_path)

if __name__ == '__main__':
    unittest.main()

测试覆盖率


对代码覆盖结果进行分析,可以得到,未被覆盖代码主要是异常检测部分。

异常处理

  • ValueError
    执行main.py时需要传递三个参数(原文文件路径,抄袭文件路径,答案文件),若参数缺失,则会引发ValueError异常,需要对其进行捕获。

  • FileNotFoundError
    读取的文件不存在是会引发FileNotFoundError异常,需要对其进行捕获。

总结

由于是第一次学习对代码进行性能分析和测试,故本次个人编程项目主要的时间花费在学习性能分析工具的使用和测试模块的编写上。

不足

算法部分没有做过多优化,选取了最简单的词袋模型,故准确度不够理想,算法仍有改进的空间。

标签:查重,jieba,20,--,30,软件工程,path,main,分词
From: https://www.cnblogs.com/4581sS/p/18412892

相关文章

  • UiBot教程:实现复杂流程图的高效方法
    ​在自动化测试和RPA(机器人流程自动化)领域,使用UiBot绘制复杂流程图是日常工作中常见的挑战之一。如何在繁杂的逻辑中保持高效?如何实现复杂流程的自动化设计而不迷失于其中?这是许多测试工程师和自动化开发者所面临的问题。 面对复杂的业务流程,如何利用UiBot有效地绘制和实现高......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的2的......
  • FFT
    FFT简介用于求卷积(\(a,b\)已知):\[\sum_{i=0}^na_ib_{n-i}\]或者多项式乘法(\(A(x),B(x)\)已知):\[C(x)=A(x)B(x)\]\(A(x)=\sum_{i=0}^{n}a_ix^i\\B(x)=\sum_{i=0}^{m}b_ix^i\)可见\(C(x)\)是\(n+m\)次多项式。如果我们把卷积的\(a_i,b_i\)看成多项式的系数,卷积......
  • Rust使用Actix-web和SeaORM开发WebAPI通过Swagger UI查看接口文档
    本文将介绍Rust语言使用Actix-web和SeaORM库,数据库使用PostgreSQL,开发增删改查项目,同时可以通过SwaggerUI查看接口文档和查看标准Rust文档开始项目首先创建新项目,名称为rusty_crab_apicargonewrusty_crab_apiCargo.toml[dependencies]sea-orm={version="1.0.0-rc.5......
  • 标题是唐晓翼
    最大收益棋盘分割一定要好好看看,不会赶紧补题解删数问题其实从两边删就是句废话,又没有影响一次性删:\(|a[i]-a[j]|(j-i+1)\)分段删:\(f[i][k]+f[k+1][j]\)恐狼后卫小贪心,攻击某只狼必须打死,枚举最后一只狼,左右两个区间被这只狼隔开了,就变成了两个子问题$f_{i,j}=min(f_{i,k......
  • P5985 [PA2019] Muzyka pop 题解
    P5985[PA2019]Muzykapop题解是蛮有意思的一道题。\(n\le200\),第一感觉是区间dp,但是又不好设出状态。考虑\(b\)单调递增的过程中的性质,考虑后得到\(b\)的最高含\(1\)的位一定是单调不降的,于是我们考虑将最高的含\(1\)的位设入状态。第一反应是设\(f_{i,j}\)表示......
  • 章12——异常exception
    异常快捷键ctrl+alt+t选中try-catch如果进行异常处理,即使出现了异常,程序可以继续执行。异常介绍开发过程中的语法错误和逻辑错误不是异常。执行过程中所发生的异常事件可分为如下两大类:异常体系图小结:常见的运行时异常没有关联的类不能进行上下转型异常处......
  • APB总线总结
    APB总结一、简介APB提供了一个低功耗的接口,并降低了接口的复杂性。APB接口用在低带宽和不需要高性能总线的外围设备上。APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计流程,每个传输至少耗用两个周期。二、信号列表信号名来源描述PC......
  • 使用pdo 连接sqlsrv 报错 ssl错误。
     报错:SQLSTATE[08001]:[Microsoft][ODBCDriver17forSQLServer]SSLProvider:[error:0A0C0103:SSLroutines::internalerror]或者:SQLSTATE[08001]:[Microsoft][ODBCDriver17forSQLServer]SSLProvider:[error:0A000102:SSLroutines::unsupportedprotocolubu......
  • SFM(structure from motion从运动恢复结构)和MVS(multi-view stereo多视图立体视觉)
    最近在开始新的领域,三维重建,其实是想做adas领域的4dlabel相关的工作。无奈啊,对computergraphics的东西,我一向很排斥,然后现在不得已要面对了。首先推荐一本书,MultipleViewGeometryinComputerVision(SecondEdition),英语版本可能读着顺利些,中文的看反馈说翻译的不好。顾名......