201671030118 詞頻統計軟件項目報告
阿新 • • 發佈:2019-03-20
planning 順序輸出 odin 過程改進 tex 問題 imp bubuko odi
—文本中的詞頻數降序顯示前K個單詞以及柱狀圖
擴展功能:
目前沒有
(一).需求分析
—程序可讀入任意的英文文本文件,該文件中的英文詞數大於等於一個。
—能夠讀取容納英文原版《哈利波特》10萬詞以上的文章。
—.要有指定單詞的詞頻統計功能,即用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖;
—高頻單詞統計功能,即用戶共鍵盤輸入高頻詞輸出個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞;
—統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt
(二)功能設計
基本功能:
—統計文件中單詞,並輸出到指定文件
—根據題目要求讀入文件
— 查詢文件中單詞出現的次數
擴展功能:
目前沒有
(三).設計實現
Figure.java :統計前K個出現的頻次最高的單詞及詞頻的柱狀圖
StatisticalWord.java: 輸入一個單詞統計單詞在文章中出現的個數,如果不在提示不在!
WordList.java :統計文件中單詞出現的頻數並輸出到文件
這三個類和一個Main()函數,用戶可以根據不同功能進行選擇
(四).測試運行
功能1: 統計單詞個數,並把結果存到result.txt中。
功能2:輸入一個單詞,統計其在文中出現的詞數。
沒有此單詞:
功能3:出入前最高K個詞頻從多到少並用柱狀圖(由於圖片大小緣故柱狀圖沒有顯示明顯的差距。)
(五).關鍵代碼
顯示柱狀圖:
System.out.println("請輸入要查看的最高詞頻的個數:");
int k = sc.nextInt();
if(k>0&&k<=ordlist.size())
{
System.out.println("----------詞頻最高的前"+k+"個單詞及其柱狀圖-----------");
for (Map.Entry<String, Integer> entry : ordlist) { System.out.printf("單詞 "+"%-8s" + "出現" +"%-3d"+"次 ",entry.getKey(),entry.getValue()); //用符號個數來顯示模擬柱狀圖 for(int i=entry.getValue();i>0;i--) { System.out.print("▏"); } System.out.println(); //System.out.println(entry.getKey() + ":" + entry.getValue()); if(--k==0) break;//k=0,則不再輸出後面的詞頻 } System.out.println("------------------------------------------------"); }else{ System.out.println("輸入有誤!請重新輸入!"); }
將輸出結果發送到results.txt中:
try
{
FileWriter fw= new FileWriter("src\\results.txt");
System.out.println("詞頻統計結果已輸出列 result.txt文件·");
}
catch (IOException e)
{
e.printStackTrace();
}
進行排序
Comparator<Map.Entry<String, Integer>> valcom = new Comparator<Map.Entry<String,Integer>>() {
public int compare(Map.Entry<String, Integer> rst1,Map.Entry<String, Integer> rst2) {
int sortrst=rst2.getValue()-rst1.getValue();
return sortrst;
}
};
List<Map.Entry<String, Integer>> ordlist = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(ordlist,valcom);
(六).總結
通過這次的項目發現,之前學過的JAVA忘的一幹二凈,本來就基礎不好,學到的一點也忘了,所以這次代碼編寫花費了很多時間,需要通過網上和課本以及同學的幫助下大概的完成了項目,但還是有很多問題,需要我花更多的時間學習。
(七).psp
psp | 任務內容 | 計劃共完成需要的時間(min) | 實際完成需要的時間(min) |
---|---|---|---|
Planning | 計劃 | 15 | 10 |
Estimate | 估計這個任務需要多少時間,並規劃大致的工作步驟 | 5 | 10 |
Development | 開發 | 120 | 150 |
Analysis | 需求分析(包括學習新技術) | 30 | 60 |
Design Spec | 生成設計文檔 | 30 | 20 |
Design Review | 設計復審(和同學審核設計文檔) | 15 | 10 |
Coding Standard | 代碼規範化(為目前的開發制定合適的規範) | 20 | 30 |
Design | 具體設計 | 120 | 180 |
Coding | 具體編碼 | 180 | 220 |
Code Review | 代碼復審 | 30 | 20 |
Test | 測試(自我測試,修改代碼,提交修改) | 20 | 15 |
Reporting | 報告 | 50 | 35 |
Test Report | 測試報告 | 20 | 15 |
Size Measurement | 計算工作量 | 10 | 10 |
Postmortem &Process Improvement plan | 事後總結,並提出過程改進計劃 | 15 | 10 |
源代碼
GitHub
201671030118 詞頻統計軟件項目報告