结对第2次作业
分工:
队友:爬虫、博客
ME:C++、查找相关资料
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
• Estimate | • 估计这个任务需要多少时间 | 20 | 30 |
Development | 开发 | 900 | 1500 |
• Analysis | • 需求分析 (包括学习新技术) | 40 | 60 |
• Design Spec | • 生成设计文档 | 20 | 30 |
• Design Review | • 设计复审 | 20 | 15 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
• Design | • 具体设计 | 70 | 130 |
• Coding | • 具体编码 | 400 | 700 |
• Code Review | • 代码复审 | 40 | 40 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 60 | 60 |
• Test Repor | • 测试报告 | 30 | 20 |
• Size Measurement | • 计算工作量 | 15 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 40 | 60 |
.|合计| 825 |1255
解题思路描述与设计实现说明
新增功能:
1.爬取网页论文信息
使用Python爬取网页的信息,用正则式匹配论文标题和摘要的代码,爬取相关信息至result.txt
2.自定义输入输出文件
int main(int argc, const char* argv[])
for (int i = 1; i < argc; i++)
输入文件前面有-i,输出文件前面有-o所以只要在循环分别判断-i,-o即可实现自定义输入输出文件。
3.加权重的词频统计
将Title和Abstract分别放入两个map(存放单词和出现次数)中,在统计时对提取的单词就可按不同的权重计算放入一个新的map(存放单词和权重值)当中。
4.词组词频统计
查找符合的词组,采用双重循环方式,在外围循环中找到符合的单词,在内从循环查找出符合的词组。题目要求不能跨越title和abstract,所以就分开识别统计。
5.自定义词频统计输出
int main(int argc, const char* argv[])
for (int i = 1; i < argc; i++)
在循环中判断是否出现-n,用一个循环将已经排好顺序的单词输出即可
6.多参数的混合使用
int main(int argc, const char* argv[])
for (int i = 1; i < argc; i++)
在循环中判断出现相应的参数是做相应的操作,未出现则采用默认输出方式
旧功能:
1.字符数统计
2.单词数统计
3.有效行数统计
4.单词出现频率统计
-
爬虫使用
使用Python爬虫爬取网页信息
部分爬取结果
0
Title: Embodied Question Answering
Abstract: We present a new AI task -- Embodied ...
1
Title: Learning by Asking Questions
Abstract: We introduce an interactive learning framework ...
2
Title: Finding Tiny Faces in the Wild With Generative Adversarial Network
Abstract: Face detection techniques have been developed for ...
3
Title: Learning Face Age Progression: A Pyramid Architecture of GANs
Abstract: The two underlying requirements of face age progress...
-
代码组织与内部实现设计(类图)
-
说明算法的关键与关键实现部分流程图
关键代码解释
int main(int argc, const char* argv[])
{
for (int i = 1; i < argc; i++)
{
ifstream file;
if (argv[i] == "-i")
{
file.open(argv[i], ios::in);
if (!file) {
cout << "无法打开文件\n";
return -1;
}
file.close();
string mInputFileName = argv[i];
int sum = CountChar(mInputFileName);
int wordnum = CountWordnumber();
int lines = CountLines(mInputFileName);
TenFrequency();
}
if (argv[i] == "-o")
{
ofstream out(argv[i+1]);
out << "characters: " << sum << endl;
out << "words: " << wordnum << endl;
out << "lines: " << lines << endl;
int size = 10;
if (word.size() < 10)
{
size = word.size();
}
vector<pair<string, int>>::iterator vit;
for (vit = word.begin(); vit != word.begin() + size; vit++)
{
out << "<"<<vit->first <<">:"<< " " <<
}
out.close();
}
}
自定义输入输出文件,设置参数实现自定义输入输出文件。
性能分析与改进
-
描述你改进的思路
-
展示性能分析图和程序中消耗最大的函数
单元测试
-
部分单元测试代码
-
测试的函数
-
构造测试数据的思路
Github的代码签入记录
遇到的代码模块异常或结对困难及解决方法
问题描述 | 做过哪些尝试 | 是否解决 | 有何收获 |
---|---|---|---|
经常会理不清解题思路,思路会比较混乱 | 和队友相互沟通,寻求队友和同学的建议 | 适当解决了 | 解决问题前还是要先分析好问题理清思路 |
与队友时间对不上 | 明确分工,分开同时进行 | 解决 | 不管与时间能否对上,都应该要明确分工,需要商讨的部分在有限的重叠时间时讨论。 |
还是基础的问题... | 查阅相关的博客以及文章 | 不能说解决了吧... | 依然是好吃力啊T T |
评价你的队友
-
值得学习的地方
乐于学习新知识,相对我来说会比较主动,学习能力比较强,做事效率高
-
需要改进的地方
和我一样会有点拖延症.相对于其他人来说,和我一样基础不是很好.
学习进度条
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 338 | 338 | 32 | 32 | 理清思路,学习多参数混合使用 |
2 | 94 | 432 | 12 | 44 | 对之前的代码做补充,学习《构建之法》 |
3 | 354 | 786 | 31 | 75 | 求助队友,解决了一些我不懂的问题 |