第一次个人编程作业

代码已上传到本人GitCode

PSP表格

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

接口设计与实现过程


所用接口

re.match函数

  • 作用:从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,否则返回None。
  • 代码示例:ppMMgX9.png
  • 运行结果:ppMMfTx.png

jieba.cut

  • 作用:做中文分词,可以进行简单分词、并行分词、命令行分词。
  • 代码示例:ppMMpLR.png
  • 运行结果:ppMMZSe.png

gensim

  • gensim.dictionary.doc2bow
  • 作用: 用以将每个句子样本表示成向量实现bow模型。bow模型忽略掉文本的语法和语序等要素,将所有单词取集合,并对每个单词分配一个ID号。
  • 代码示例:ppMsbi8.png
  • 运行结果:ppMsvss.png
  • gensim.similarities.Similarity
  • 作用:用来计算余弦相似度从而比较文本是否相近。
  • 代码示例:ppMRdxO.png

实现过程

ppMo9Te.jpg

性能改进

  • 注:新版pycharm社区版并不自带代码性能分析功能,分析结果由snakeviz可视化得到
  • 模块性能上所花费的时间如下:
    ppQ7qC4.png
  • 分析:编辑的代码模块中占用运行时间最长的是jieba_use模块,其中lcut所占用时间又是最长,因此考虑试试先用正则表达式匹配删除后再用lcut处理,jieba_use模块修改如下:
    ppQOh7t.png
  • 改进后运行时间结果如下:
    ppQbDk8.png
  • 改进后分析:结果与改进前无大致差异,性能或已是最优

单元测试

测试覆盖率

  • 为便于进行单元测试,程序主代码修改为如下:
    pplFIN4.png
  • 创建unit_test
    pplkC8A.png
  • 代码测试覆盖率为100%
    pplkPgI.png

异常处理说明

posted @ 2023-03-13 22:56  小陈同学起来搬砖了  阅读(67)  评论(0)    收藏  举报