第一次个人项目
| 这个作业属于 | 首页 - 计科22级12班 - 广东工业大学 - 班级博客 - 博客园 (cnblogs.com) |
|---|---|
| 这个作业要求在哪 | 个人项目 - 作业 - 计科22级12班 - 班级博客 - 博客园 (cnblogs.com) |
| 这个作业的目标 | 尝试个人项目的实现,熟悉开发环境 |
Github项目链接
futureseek/SE-test: SE-test (github.com)
PSP表格
| *PSP2.1* | *Personal Software Process Stages* | *预估耗时(分钟)* | *实际耗时(分钟)* |
|---|---|---|---|
| Planning | 计划 | 60 | 60 |
| · Estimate | · 估计这个任务需要多少时间 | 480 | 360 |
| Development | 开发 | 120 | 90 |
| · Analysis | · 需求分析 (包括学习新技术) | 150 | 300 |
| · Design Spec | · 生成设计文档 | 60 | 30 |
| · Design Review | · 设计复审 | 60 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 45 |
| · Design | · 具体设计 | 120 | 60 |
| · Coding | · 具体编码 | 120 | 100 |
| · Code Review | · 代码复审 | 20 | 20 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 20 | 30 |
| Reporting | 报告 | 120 | 150 |
| · Test Repor | · 测试报告 | 120 | 120 |
| · Size Measurement | · 计算工作量 | 20 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 30 |
| · 合计 | 1530 | 1445 |
项目设计
主函数
对控制台参数进行处理,调用各个模块代码依次进行。
Jieba类
对长语段进行分词处理
计算词频函数
对分开来的所有词语进行统计,计算在原语段的出现频率
计算余弦相似度
将不同的词出现频率作为空间向量各个维,所有的词语出现频率相乘作为点积,除以俩个语段的模长,求出余弦值。

程序流程图

算法的关键有三处:利用cppjie库分词处理,统计词频,计算余弦相似度
计算模块接口部分的性能改进
内存方面

utf-8后缀文件由cppjieba分词库所调用,这些文件占据了文件IO的主要部分
通过减少单词库可以减少文件IO方面的消耗,或者选用模型更下的分词算法。
各函数消耗时间


由图可知,大量的时间消耗在了构建分词模型上
异常处理说明
读取文件接口
void readfile(string& text, string path) {
ifstream fstream;
fstream.open(path);
if (fstream.is_open()) {
string line;
while (getline(fstream, line)) {
//cout<<line<<endl;
text += line;
}
}
else {
cout << "Failed to open the file" << endl;
return;
}
//cout<<text<<endl;
cout << "read over" << endl;
fstream.close();
}
检测输出流是否正确打开
对于输出文件接口做同样操作
控制台参数读取
try {
if (argc < 4) {
throw string("the input is error");
}
}
catch (string e) {
cout << e << endl;
return 0;
}
判断是否输入正确的参数

浙公网安备 33010602011771号