结对编程-马尔可夫链-自动生成短文
结对伙伴:20162307 张韵琪
需求分析
1.通过“学习”一篇文章后,随机输出新的文章。
参考资源:《瓦尔登湖》
2.仅考虑英文输入输出
3.从文件读入待”学习“文章
4.能处理标点符号
5.能控制输出文章的篇幅
6.通过参数指定输出的单词数
7.误差控制
生成的语句要能完整结束(比如遇到句号、问号、感叹号等结束标志)。
为了能实现上述条件,允许输出的单词数量误差 ±50。
避免环
实现过程中的关键代码解释
读入文章,生成的文章要依据此文章改进
Chain chain = new Chain (); int nwords = Integer.parseInt ( args[0] ); FileInputStream fis = new FileInputStream ( new File ( "C:\Users\think\Desktop\syx.txt" ) ); //要读入的文章,之后生成的文章要依据此文章改进 chain.build ( fis ); chain.generate ( nwords ); }
储存生成的文章
public void generate(int nwords) throws IOException { FileWriter fw = new FileWriter("C:\Users\think\Desktop\qq.txt");//生成的文章储存在qq.txt中 prefix = new Prefix(NPREF,NOWORD); for(int i=0; i<nwords; i++){ List<String> suf = stateTable.get(prefix); int r = Math.abs(random.nextInt() % suf.size()); String word = suf.get(r); if(word.equals(NOWORD)){ break; } System.out.print(word+" "); if (word.equals(".")){ fw.write("\n"); } else fw.write(word+" "); prefix.pref.remove(0); prefix.pref.add(word); } fw.close();
运行过程截图
这个是我的截图,下面为伙伴的截图
代码在伙伴的电脑上能分行,在我的idea上就无法正常分行,目前还没找到原因。
代码托管地址
遇到的困难及解决方法
时间比较紧急,因此基本只进行了粗略的考虑,没有规划具体,出现了许多的漏洞,结尾的标点,分段问题都没有注意。
代码在伙伴的电脑上能分行,在我的idea上就无法正常分行,目前还没找到原因。
对结对的小伙伴做出评价(重点指出需要改进的地方)
我和我的结对伙伴是室友,整个结对过程都是坐在一起,面对面的进行讨论与修改,互相指出对方的错误,提出新的思路与想法,修改了许多bug。
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 610 | 920 |
Development | 开发 | 50 | 40 |
· Analysis | · 需求分析 (包括学习新技术) | 30 | 20 |
· Design Spec | · 生成设计文档 | 30 | 50 |
· Design Review | · 设计复审 (和同事审核设计文档) | 60 | 100 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 100 | 90 |
· Coding | · 具体编码 | 100 | 300 |
· Code Review | · 代码复审 | 30 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 90 |
Reporting | 报告 | 60 | 60 |
· Test Report | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 20 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 610 | 920 |