結對程式設計 - 馬爾科夫鍊
學習參考
- 請先閱讀:http://www.cnblogs.com/vertextao/p/6725858.html
需求
通過“學習”一篇文章後,随機輸出新的文章。
參考資源:《瓦爾登湖》
- 僅考慮英文輸入輸出
- 從檔案讀入待”學習“文章
- 能處理标點符号(參考材料中有說明)
- 能控制輸出文章的篇幅
- 通過參數指定輸出的單詞數
- 誤差控制
- 生成的語句要能完整結束(比如遇到句号、問号、感歎号等結束标志)。
- 為了能實作上述條件,允許輸出的單詞數量誤差 ±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
-
生成文章篇幅 ±50100
-
存儲生成文章的檔案名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...
-
處理了1230個字,耗時121毫秒processed words: 1230, cost 121ms
-
分析後的前字尾關系,任意展示10條part of the parsed chain:
-
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分
- 嚴禁抄襲,違反者列入抄襲作業者的曝光台