个人项目作业-论文查重

这个作业属于哪个课程软件工程
这个作业要求在哪里个人项目作业
这个作业的目标1.PSP表格
2.实现论文查重
3.进行测试
其他参考文献gitee,CSDN

一、项目地址

项目地址

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划3020
·Estimate· 估计这个任务需要多少时间3015
Development开发180210
· Analysis· 需求分析 (包括学习新技术)12080
· Design Spec· 生成设计文档1010
· Design Review· 设计复审105
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)55
· Design· 具体设计2030
· Coding· 具体编码6030
· Code Review· 代码复审3020
· Test· 测试(自我测试,修改代码,提交修改)60120
Reporting报告6050
· Test Repor· 测试报告2020
· Size Measurement· 计算工作量2010
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划3020
· 合计685645

三、计算模块接口的设计与实现过程

函数名功能
get_file_content(path)获取指定路径文件内容
selector(string)将文件内容进行分词,并筛选
compute_similarity(t1, t2)计算相似度

算法实现步骤

  1. 输入原文文件和抄袭文件路径
  2. 判断文件路径是否正确
  3. 获取文件内容
  4. 对文件内容进行分词并筛选
  5. 计算文件内容相似度
  6. 将结果录入指定答案文件
  7. 输出文件相似度

算法关键

  1. 精确模式返回string分词后的列表变量:string = jieba.lcut(string)
  2. 对于分词后的string,只保留英文字母、数字和中文
            if re.match(u"[a-zA-Z0-9\u4e00-\u9fa5]", tags):
                result.append(tags)
            else:
                pass            
  1. 计算相似度
   	   ts = [t1, t2]
       dict = gensim.corpora.Dictionary(ts)
       corpus = [dict.doc2bow(text) for text in ts]
       similar = gensim.similarities.Similarity('Similar', corpus, num_features=len(dict))
       test_corpus_1 = dict.doc2bow(t1)
       cosine = similar[test_corpus_1][1]

四、计算模块接口部分的性能改进

性能分析图

五、计算模块部分单元测试展示

单元测试代码

from main import CheckingAlgorithm

class TestChecking(unittest.TestCase):
    def test_add(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_add.txt")
        

    def test_del(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_del.txt")

    def test_dis_1(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_dis_1.txt")

    def test_dis_10(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_dis_10.txt")
    
    def test_dis_15(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_dis_15.txt")

    def test_empty_1(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\orig_empty.txt")
    
    def test_empty_2(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig_empty.txt",r"F:\3221005155\3221005155\MyObject1\orig_empty.txt")

    def test_not_found_1(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\ori.txt",r"F:\3221005155\3221005155\MyObject1\orig_0.8_dis_15.txt")

    def test_not_found_2(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\3221005155\MyObject1\ori_0.8_dis_15.txt")

    def test_not_txt(self):
        c=CheckingAlgorithm()
        c.main(r"F:\3221005155\3221005155\MyObject1\orig.txt",r"F:\3221005155\hello.py")

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

思路

  1. 五个抄袭文件与原文文件构成5个案例
    在这里插入图片描述

  2. 测试原文文件与抄袭文件路径分别错误构成2个案例
    在这里插入图片描述

  3. 测试原文文件与抄袭文件路径分别为空构成2个案例
    在这里插入图片描述

  4. 文件非txt构成1个案例
    在这里插入图片描述

截图

测试覆盖率截图

六、计算模块部分异常处理说明

如果输入的原文文件路径或抄袭文件路径错误,引发异常,提示“XX文件不存在,可能文件名错误”
异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值