软工作业2:python实现论文查重

github项目链接

软件工程 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13014
作业目标 了解熟悉个人开发流程,实现项目单元测试,使用python实现论文查重软件,使用命令行参数

PSP表格

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

模块与接口设计

remove_punctuation(text):

这个函数负责接受一个文本字符串并删除其中的标点符号。这个函数是一个文本预处理步骤,用于清理文本数据。

read_file(file_path):

这个函数用于从文件中读取文本内容,接受文件路径作为参数,返回读取的文本内容。它用于读取原始论文和要检查的论文。

tokenize_chinese_text(text):

这个函数使用jieba分词工具将中文文本进行分词,返回分词后的文本字符串。这个函数用于将文本转换为可用于相似性计算的格式。

calculate_similarity(original_text, text_to_check):

这个函数接受两个文本字符串,分别是原始论文和要检查的论文,然后使用TF-IDF向量化方法计算它们之间的余弦相似性。最后,它将相似性值保留小数点后两位并返回。

main():

主函数是程序的入口点,它负责解析命令行参数,调用其他函数来执行查重任务,最后将查重结果写入输出文件。

模块之间的关系:

remove_punctuation、read_file、tokenize_chinese_text 和 calculate_similarity 这些函数都是被 main 函数调用的,它们分别用于文本预处理、文本读取、文本分词和相似性计算。

main 函数协调了整个查重任务的流程,首先解析命令行参数,然后调用其他函数来完成文本处理和相似性计算,最后将相似性结果写入输出文件。

性能分析

算法实现

去除文本中的标点符号和空格,换行,使用jieba库进行分词后使用TF-IDF向量化方法计算它们之间的余弦相似性

性能瓶颈主要是由第三方库产生的,目前难以优化

单元测试

测试结果:


代码覆盖率

异常处理

文件读取

如果文件未找到,会引发 FileNotFoundError 异常。在这种情况下,你的代码会捕获这个异常,并打印一条错误消息,指出文件未找到。然后,sys.exit(1) 被调用,使程序退出,并返回状态码 1,表示异常终止。
如果除 FileNotFoundError 以外的其他异常发生,同样会被捕获。在这种情况下,代码会打印一条通用错误消息,指示发生了异常,并使用 sys.exit(1) 终止程序

命令行参数


确保参数个数正确

posted @ 2023-09-18 00:13  $iQi$  阅读(81)  评论(0编辑  收藏  举报