1. 程式人生 > >實訓一——詞頻統計

實訓一——詞頻統計

 

 

1. 學號:16012019 姜海睿 16012006 劉晨

    GIT的提交地址:https://gitee.com/bubblerui/0619/tree/master

2. 實訓照片

3. 本次作業的解題思路

老五在寢室吹牛他熟讀過《魯濱遜漂流記》,在女生面前吹牛熱愛《呼嘯山莊》《簡愛》和《飄》,在你面前說通讀了《戰爭與和平》。但是,他的四級至今沒過。你們幾個私下商量,這幾本大作的單詞量怎麼可能低於四級,大家聽說你學習《構建之法》,一致推舉你寫個程式名字叫wf,統計英文作品的單詞量並給出每個單詞出現的次數,準備用於打臉老五。

希望實現以下效果:

  • 1.讀取檔案,檔案內包可含英文字元,及常見標點,空格級換行符。
  • 2.統計英文單詞在本檔案的出現次數
  • 3.將統計結果排序
  • 4.顯示排序結果
import java.io.BufferedReader;  
import java.io.FileReader;  
import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.List;  
import java.util.Map;  
import java.util.Map.Entry;  
import java.util.TreeMap; /** * * @author cute * * * 實現從檔案中讀入英文文章,統計單詞個數,並按值從大到小輸出 */ public class wf { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new FileReader("F:\\BUBBLE\\文章.txt")); List
<String> lists = new ArrayList<String>(); //儲存過濾後單詞的列表 String readLine = null; while((readLine = br.readLine()) != null){ String[] wordsArr1 = readLine.split("[^a-zA-Z]"); //過濾出只含有字母的 for (String word : wordsArr1) { if(word.length() != 0){ //去除長度為0的行 lists.add(word); } } } br.close(); Map<String, Integer> wordsCount = new TreeMap<String,Integer>(); //儲存單詞計數資訊,key值為單詞,value為單詞數 //單詞的詞頻統計 for (String li : lists) { if(wordsCount.get(li) != null){ wordsCount.put(li,wordsCount.get(li) + 1); }else{ wordsCount.put(li,1); } } SortMap(wordsCount); //按值進行排序 } //按value的大小進行排序 public static void SortMap(Map<String,Integer> oldmap){ ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){ public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue() - o1.getValue(); //降序 } }); for(int i = 0; i<list.size(); i++){ System.out.println(list.get(i).getKey()+ ": " +list.get(i).getValue()); } } }

通過檢索文字文件上的英文文章,統計英文單詞出現的次數,通過使用迴圈,排序,定義類,資料夾批量處理,並且需要使用排序方法實現降序輸出

4. 本次作業的執行結果截圖

5. 小結感受:這次通過兩個人.一起配合,一起完成了此次任務,一個指揮一個操作,相比一個人來說更加容易,正所謂人心齊泰山移,在遇到困難時通過查詢資料,上網和尋求同學幫助問題迎刃而解。對於Java的認知還不深,以至於後面關於排序那部分程式碼搞不清,我覺得自己以後需要加強練習,並且學會逐漸地積累閱讀各種型別難度程式碼,這樣才能對以後遇到的各種問題不至於手足無措。

6.優缺點:在此次實訓中,配合還是相對默契,沒有過多的磨合,而是彼此很瞭解,也為此次實訓減輕了一些困難,但是在此次實訓中,也發現了自身還有很多知識點掌握不牢固或者沒有掌握,也因為平時操作少,對於一些基本概念沒有很深的理解,為實訓增加了困難。