这个作业属于哪个课程 | 计科21级1 2班 |
---|---|
这个作业要求在哪里 | 个人项目 |
这个作业的目标 | 熟悉个人项目开发流程 |
项目Github | 点击这里 |
PSP表
PSP2.1 | Personal Software Process | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 5 | 5 |
Development | 开发 | 800 | 830 |
· Analysis | · 需求分析 (包括学习新技术) | 210 | 180 |
· Design Spec | · 生成设计文档 | 50 | 30 |
· Design Review | · 设计复审 | 10 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
· Design | · 具体设计 | 30 | 20 |
· Coding | · 具体编码 | 210 | 310 |
· Code Review | · 代码复审 | 60 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 90 | 120 |
Reporting | 报告 | 60 | 60 |
· Test Report | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | 20 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 20 |
· 合计 | 815 | 845 |
运行环境
Visual Studio 2022
计算模块接口的设计与实现过程
计算模块是 TextSimilarity
类的成员函数 TextSimilarity::get_cosine()
首先将会对两段文本进行分词,分词使用的库是 cppjieba,其次计算词频保存到成员变量t1_word_frequency_
和t2_word_frequency_
中
分词之后依据词频降序,筛选出词频最高的_maxWordNumber
(默认20个)个词语乘以IDF逆文档频率构建词频向量,
在之后拿词频向量计算词语的独热码并最终用于余弦相似度计算
性能分析
由图可知算法主要瓶颈在jieba库(占用了80%)主要算法部分占用了20%不到