第一次个人编程作业

这个作业属于哪个课程 < 软件工程 >
这个作业要求在哪里 < 作业要求 >
这个作业的目标 < 论文查重算法设计 + 学习PSP表格 + Git管理 >

作业链接( GitHub )

编译环境 :python3.9 IDE:pycharm

PSP表

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

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

  • 模块依赖关系


其中unit_test.py是单元测试文件,main.py是程序入口。

  • 函数关系(流程图)

  • 接口解释

    • 1.jieba.cut

      用于对中文句子进行分词,功能很强大。jiba.cut 支持四种分词模式:精确模式,试图将句子最精确地切开,适合文本分析;
      全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
      搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
      paddle模式,利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。
      例如:
      text = "我来到广东工业大学"
      seg_list = jieba.lcut(text, cut_all=False)
      print(seg_list)
      
      运行结果:
      我/ 来到/ 广东工业大学
      
    • 2.re.match

      使用match方法进行匹配操作
      result = re.match(正则表达 式,要匹配的字符串),使用正则表达式来筛选掉符号,换行符等等。
    • 3.gensim.dictionary.doc2bow

      Doc2Bow是gensim中封装的一个方法,主要用于实现Bow模型。是最早出现在自然语言处理和信息检索领域的模型。它会把两个文档中出现的单词构建一个词典(dictionary),每个词典有一个索引值,可以用一个向量来表示每个索引值出现的次数。
    • 4.gensim.similarities.Similarity

      计算余弦相似度
        def calc_similarity(text_1, text_2):
            texts = [text_1, text_2]
            dictionary = gensim.corpora.Dictionary(texts)
            corpus = [dictionary.doc2bow(text) for text in texts]
            a_similarity = gensim.similarities.Similarity('-Similarity-index', corpus,num_features=len(dictionary))
            test_corpus_1 = dictionary.doc2bow(text_1)
            cosine_sim = a_similarity[test_corpus_1][1]
            return cosine_sim
    
  • 性能分析


    用pycharm自带的插件检查性能分析。其中filter函数时间最长,由于里面有cut跟re.match函数,所以时间是最长的。
  • 覆盖率


    用pycharm插件自带的插件查看覆盖率,运行了unit_test.py文件,里面是单元测试,methon.py里面是函数,函数的覆盖率为 100% 符合要求。
  • 单元测试


    图中对应orig_0.8_add、orig_0.8_del、orig_0.8_dis_1、orig_0.8_dis_10、orig_0.8_dis_15等等

个人总结:

  • PSP表给了对软件开发过程还在懵懂的我很大的启发
  • 第一次单人编程作业还有许多不习惯的地方,希望以后能更进一步。
posted @ 2021-09-18 11:11  Zi/YO  阅读(59)  评论(1)    收藏  举报