现代软件工程 作业 文本文件中英语单词的频率
這是《構(gòu)建之法》現(xiàn)代軟件工程課的個人項目作業(yè)
程序的測試,回歸測試,效能測試C/C++/C# 等基本語言的運用和 debug。 考慮到同學(xué)的基礎(chǔ)參差不齊,這個作業(yè)提供了多種要求,請按先易后難的次序?qū)崿F(xiàn)。?
用戶需求:英語的26 個字母的頻率在一本小說中是如何分布的?某類型文章中常出現(xiàn)的單詞是什么?某作家最常用的詞匯是什么?《哈利波特》 中最常用的短語是什么,等等。 我們就寫一些程序來解決這個問題,滿足一下我們的好奇心。?
假設(shè)我們的命令行程序叫 WF.exe? ?(WF: Word Frequence)?
第0步:輸出某個英文文本文件中 26 字母出現(xiàn)的頻率,由高到低排列,并顯示字母出現(xiàn)的百分比,精確到小數(shù)點后面兩位。
命令行參數(shù)是:
wf.exe -c <file name>
一些同學(xué)要復(fù)習(xí)一下程序如何處理命令行參數(shù), 請看別人的經(jīng)驗。?
字母頻率 = 這個字母出現(xiàn)的次數(shù) / (所有A-Z,a-z字母出現(xiàn)的總數(shù))
如果兩個字母出現(xiàn)的頻率一樣,那么就按照字典序排列。? 如果 S 和 T 出現(xiàn)頻率都是 10.21%, 那么, S 要排在T 的前面。
這個程序容易寫吧?? 如果要處理一本大部頭小說 (例如 Gone With The Wind), 你的程序效率如何?有沒有什么可以優(yōu)化的地方?
第一步:輸出單個文件中的前 N 個最常出現(xiàn)的英語單詞。
作用:一個用于統(tǒng)計文本文件中的英語單詞出現(xiàn)頻率的控制臺程序 單詞:以英文字母開頭,由英文字母和字母數(shù)字符號組成的字符串視為一個單詞。單詞以分隔符分割且不區(qū)分大小寫。在輸出時,所有單詞都用小寫字符表示。?
英文字母:A-Z,a-z字母數(shù)字符號:A-Z,a-z,0-9分割符:空格,非字母數(shù)字符號 例:good123是一個單詞,123good不是一個單詞。good,Good和GOOD是同一個單詞
功能列表:
- 功能1:wf.exe -f <file>??
輸出文件中所有不重復(fù)的單詞,按照出現(xiàn)次數(shù)由多到少排列,出現(xiàn)次數(shù)同樣多的,以字典序排列。 - 功能2:wf.exe -d <directory>??指定文件目錄,對目錄下每一個文件執(zhí)行? wf.exe -f <file> 的操作。?
- wf.exe -d -s? <directory>? 同上, 但是會遞歸遍歷目錄下的所有子目錄。
- 功能3:支持 -n 參數(shù),輸出出現(xiàn)次數(shù)最多的前 n 個單詞,? 例如,? -n 10 就是輸出最常出現(xiàn)單詞的前 10 名。 當(dāng)沒有指明數(shù)量的時候,我們默認列出所有單詞的頻率。
- 功能1:wf.exe -f <file>??
現(xiàn)在我們這個程序已經(jīng)有一點復(fù)雜度了, 我們要構(gòu)建一些基本的測試用例來保證程序的基本功能不會在不斷的擴展中出問題。 請看 《構(gòu)建之法》【回歸測試】的內(nèi)容,構(gòu)建一些測試來保證基本功能的正確性。?
第二步:? 支持 stop words
我們從第一步的結(jié)果看出,在一本小說里, 頻率出現(xiàn)最高的單詞一般都是 "a", ?"it", "the", "and", "this", 這些詞, 我們并不感興趣.? 我們可以做一個 stop word 文件 (停詞表), 在統(tǒng)計詞匯的時候,跳過這些詞。? 我們把這個文件叫 "stopwords.txt" file.?
功能 4:支持新的命令行參數(shù), 例如:? ?wf.exe -x <stopwordfile>? -f <file>?
在這一步我們要增加什么回歸測試呢?
第三步:? 我們想看看常用的短語是什么, 怎么辦呢??
先定義短語:"兩個或多個英語單詞, 它們之間只有空格分隔".? ?請看下面的例子:
hello world? ?//這是一個短語
hello, world //這不是一個短語?
功能 5:支持新的命令行參數(shù)? -p <number>?
參數(shù) <number> 說明要輸出多少個詞的短語,并按照出現(xiàn)頻率排列。同一頻率的詞組, 按照字典序來排列。?
在這一步我們要增加什么回歸測試呢??
第四步:把動詞形態(tài)都統(tǒng)一之后再計數(shù)。?
我們想找到常用的單詞和短語,但是發(fā)現(xiàn)英語動詞經(jīng)常有時態(tài)和語態(tài)的變化,導(dǎo)致同一個詞,同一個短語卻被認為是不同的。 怎么解決這個問題呢?
假設(shè)我們有這樣一個文本文件,這個文件的每一行都是這樣構(gòu)成:
動詞原型? 動詞變形1 動詞變形2...?
詞之間用空格分開。
e.g.? 動詞 TAKE 有下面的各種變形
take takes took taken taking
我們希望在實現(xiàn)上面的各種功能的時候,有一個選項, 就是把動詞的各種變形都歸為它的原型來統(tǒng)計。?
功能 6:支持動詞形態(tài)的歸一化,參數(shù)為 -v
wf.exe -v <verb file>? 其中 <verb file> 是紀(jì)錄動詞形態(tài)的文本文件。?
實現(xiàn)這些功能, 分析程序的效能??(link: 現(xiàn)代軟件工程講義 2 開發(fā)技術(shù) - 效能分析),?
每一步都至少要簽入源代碼控制 (github 或其他工具)一次,同時把回歸測試的測試用例也寫好簽入到適當(dāng)?shù)哪夸浿小?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的现代软件工程 作业 文本文件中英语单词的频率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度链接解析_【集合】百度分享链接解析的
- 下一篇: 微软认知服务应用秘籍 – 与机器人聊知识