20162302 - 20162319 结对编程项目-马尔科夫
结对编程项目-马尔科夫
-
需求分析
1、实现对文章的拆分
2、建立单词对后面可能跟的单词的映射
3、根据需求生成文章
4、控制篇幅
5、避免出现环
-
设计思路
首先是对文章进行学习-分为两步:第一步是记录下文章中出现的所有单词,第二步是建立单词之间的映射。
接下来进行的是文章的生成。
最后一步是检查文章。
-
一、拆分
在对文章进行分析的时候要先分析文章所有的单词,这也就需要对文章进行拆分下面的ArcToSec
类负责以句号为间断,把文章拆成句子。
package Markov;
import java.util.StringTokenizer;
public class ArcToSec {
public String [] ats (String article){
StringTokenizer token = new StringTokenizer(article);
int n = article.length();
int j = 0, l = 0;
//分析句子个数
for (int i=0;i<n;i++) {
char c = article.charAt(i);
if (c == '.')
l++;
}
String[] sentence = new String[l+1];
for (int i=0;i<n;i++){
char c = article.charAt(i);
if (c == '.') {
sentence[j] += c;
j++;
}
else
sentence[j]+=c;
}
return sentence;
}
}
而SecToWor
类是用于以空格为依据把句子拆分成单词
package Markov;
import java.util.StringTokenizer;
public class SecToWor {
public String[] stw (String write){
StringTokenizer token = new StringTokenizer(write);
int n = write.length();
int j = 0, l = 0;
//分析单词个数
for (int i=0;i<n;i++) {
char c = write.charAt(i);
if (c == ' ')
l++;
}
String[] words = new String[l+1];
//以空格为依据拆分句子
for (int i=0;i<n;i++){
char c = write.charAt(i);
if (c == ' ')
j++;
else
words[j]+=c;
}
return words;
}
}
然而后来我发现,拆分文章的类实属多余,会增加使用时的复杂性。
在建立映射关系的时候使用Hashtable<K, v>
方法,我计划把拆分以后的所有单词放到一个集合里面,然后再转换成数组,K处放单词对应数组中的位置。然后逐一分析单词,两个一组,v处放第二个单词。但是因为临近期末,有很多科目需要复习,项目做到这里就中止了。
-
代码托管
-
UML图
这仅仅是一个相对完整的思路,其中Learner
类负责对文章的学习,会引用SecToWor
类来拆分单词,然后学习的结果由Data来保存。然后在生成文章的时候,由Creativer
类调用Data中的数据生成文章。
-
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 1000 | 190 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 40 | 30 |
· Design Spec | · 生成设计文档 | 40 | 20 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 50 | 0 |
· Design | · 具体设计 | 100 | 60 |
· Coding | · 具体编码 | 100 | 60 |
· Code Review | · 代码复审 | 100 | 0 |
· Test | · 测试(自我测试,修改代码,提交修改) | 200 | 10 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 20 | 10 |
· Size Measurement | · 计算工作量 | 20 | 0 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 40 | 10 |