结对编程 - 马尔科夫链

结对编程 - 马尔科夫链

学习参考

需求

通过“学习”一篇文章后,随机输出新的文章。

参考资源:《瓦尔登湖》

  • 仅考虑英文输入输出

  • 从文件读入待”学习“文章

  • 能处理标点符号(参考材料中有说明)

  • 能控制输出文章的篇幅

    • 通过参数指定输出的单词数
    • 误差控制
      • 生成的语句要能完整结束(比如遇到句号、问号、感叹号等结束标志)。
      • 为了能实现上述条件,允许输出的单词数量误差 ±50。
  • 避免环

    • 举例说明:假设通过分析文章得出以下部分短语关系:
        ...
        
        "this is" -> ["a"]
        "is a" -> ["good", "dog"]
        "a dog" -> ["and", "where"]
        "dog and" -> ["it", "this"]
        "and this" -> ["is"]
        
        ...
    
    • 带环的输出示例:
        ... this is a dog and this is a dog and this is a dog ...
    
    • 以上环比较小,容易发现,如果是比较长的环呢,比如输出1000个单词后进入环,如何检测环,请思考。
  • 程序执行效率分析

    • 读入文章耗费多少时间(毫秒), 附上读入文章篇幅(单词数)
    • “学习”(分析)文章耗费多长时间(毫秒)
    • 输出一篇文章耗费的时间(毫秒), 附上输出文章篇幅(单词数)

示例

输入参数示例:

# java TextGenerator abc.txt 100 1.txt
  • abc.txt 输入文本
  • 100 生成文章篇幅 ±50
  • 1.txt 存储生成文章的文件名

输出示例:

processing abc.txt...
processed words: 1230, cost 121ms
part of the parsed chain:
        We have -> ['a']
        an amazing -> ['people']
        and endurance. -> ['Another']
        and worship -> ['according']
        the threat -> ['of']
        have a -> ['beautiful']
        the promise -> ['of', 'the', 'that']
        also upon -> ['us.']
        our people. -> ['America']
        that has -> ['cherished']
generating text into 1.txt
  • processing abc.txt... 可选
  • processed words: 1230, cost 121ms 处理了1230个字,耗时121毫秒
  • part of the parsed chain: 分析后的前后缀关系,任意展示10条
  • generating text into 1.txt 可选

1.txt内容示例:

Not to advance is to go back. What do you want to do about supper? Don't press the wrong button. It doesn't really matter. Do you enjoy making me feeling like the dead? You sit here, Tom, and you sit over there, Mary. A drop of sweat ran down Tom's back. I am thinking of changing my job. Don't bite the hand that feeds you. I couldn't disagree with you more. The distinction is not always precise. Tom tried to catch the rabbit. Tom was ashamed of himself. It was nice of him to help. It's wrong to trick people like that. Don't read too much into this. I forgot. Have you been out at all? I'm glad to have passed at all. Why are we voting for Tom?

要求

  • 博客

    • 需求分析(描述自己对需求的理解,以及后续扩展的可能性
    • 设计思路( 输出UML类图
    • 数据结构
      • 如何存储自己读取的数据?
      • 如何存储自己分析出来的数据?
      • 如何查找待输出的数据?
    • 如何避免环?
    • 实现过程中的关键代码解释
    • 遇到的困难及解决方法
    • 随机提供10行的文章分析结果(前缀后缀关系),如:
        We have -> ['a']
        an amazing -> ['people']
        and endurance. -> ['Another']
        and worship -> ['according']
        the threat -> ['of']
        have a -> ['beautiful']
        the promise -> ['of', 'the', 'that']
        also upon -> ['us.']
        our people. -> ['America']
        that has -> ['cherished']
    
    • 提供3篇随机生成的文章(每篇100个单词左右)
      • 你可以生成一篇较长的文章,并取其中一部分在这里展示。
    • 对结对的小伙伴做出评价(重点指出需要改进的地方
    • 博客内容中如需展示两人的共同成果,请进行说明
    • 如有参考或引用的设计、实现,请进行说明
  • PSP

    • 实现之前先在PSP中预估时间

    • 实施后各个环节实际花费多少时间也请做记录

    • 表中有一项: Estimate 指的“预估”这个活动,“预估时间”也是一项任务。

      • 例如:我估计自己需要花30分钟来估算出整个项目需要多少时间完成,结果我花了20分钟估算出整个项目需要6个小时完成。Estimate这一项应该在“预估耗时”填写30分钟,实际耗时填写“20”分钟。
    • 一级和二级活动的包含关系:

      • Planning 这个一级活动包含了1个二级活动(Estimate)
      • Development 这个一级活动包含了8个二级活动
      • Reporting 这个一级活动包含了3个二级活动
    • 大家在记录时间的时候, 只用记录二级活动, 然后把总数加了, 就是相应的一级活动的时间

    • 这个时间的长短并不会对分数有直接影响,这是为了大家自己总结。

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
· Estimate · 估计这个任务需要多少时间
Development 开发
· Analysis · 需求分析 (包括学习新技术)
· Design Spec · 生成设计文档
· Design Review · 设计复审 (和同事审核设计文档)
· Coding Standard · 代码规范 (为目前的开发制定合适的规范)
· Design · 具体设计
· Coding · 具体编码
· Code Review · 代码复审
· Test · 测试(自我测试,修改代码,提交修改)
Reporting 报告
· Test Report · 测试报告
· Size Measurement · 计算工作量
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划
合计

打分细则

  • 本次作业满分100分

  • 不按时交作业,0分

  • 越期一周不交作业,倒扣本次作业分数

  • 作业检查项:

    • 从文件完整读入文章 5分
    • 正确分析文章(正确生成前缀后缀关系) 10分
    • 能处理标点符号 5分
    • 能随机输出文章 5分
    • 能控制输出文章篇幅 5分
    • 能避免环 5分
    • 程序执行效率分析 5分
    • 测试( 请上传自己测试使用的文本文件,给出链接
      • 能处理超过10000字(英文单词数)的文本输入 5分
      • 能处理超过100000字(英文单词数)的文本输入 10分
    • 扩展
      • 能处理中文 5分
      • 能生成诗词 10分
    • 博客
      • 基础分(按时提交)5分
      • PSP表格 5分
      • 需求分析 5分
      • 设计思路 5分
      • 数据结构 5分
      • 如何避免环 5分
      • 实现过程中的关键代码解释 5分
      • 遇到的困难及解决方法 5分
      • 对结对小伙伴做出评价 5分
  • 附加分:在作业过程及时反馈,提供建议被采纳可追加附加分,最高不超过10分

  • 严禁抄袭,违反者列入抄袭作业者的曝光台

posted @ 2017-05-20 13:15  0x1000  阅读(317)  评论(4编辑  收藏  举报