統計英文名著中單詞出現頻率
統計單詞出現的次數,不同的單詞數,單詞的重複率
目的
之前在一本學習英文的書中看到成人中文常用詞彙5000字,英文大概2-3萬字,感到很詫異,所以就有了這兩篇文章。之前的中文名著統計 統計名著中漢字出現頻率,紙上得來終覺淺,絕知此事要躬行。
思路
這次統計的英文名著是以《簡愛》為例,處理的方法和之前一樣,就是處理單詞時變了:先把一行單詞大寫轉小寫,然後根據空格分割出單詞,並檢查每個單詞的最後一個字元是不是標點符號,是的話就去掉。
實現
程式碼基本和之前的一篇文章一樣,只是處理文字的方法變了
public class StatisticCharacter {
public static double totalCount = 0;
public static double diffWord = 0;
public static Map<String, Integer> characterMap = new HashMap<String, Integer>();
public static ArrayList<Map.Entry<String, Integer>> sortWordList;
public static void main(String[] args) throws IOException {
String fileName = "/Users/gary/Documents/JaneEyre.txt";
StringBuilder words = new StringBuilder();
File file = new File(fileName);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String str;
while ((str = bufferedReader.readLine()) != null) {
//sumChineseWordNum(str);
sumEnglishWordNum(str);
}
bufferedReader.close();
System.out.println("總字數------" + totalCount);
System.out.println("不同的字數------" + diffWord);
sort(characterMap);
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter("/Users/gary/Documents/Study/output.txt");
for (Map.Entry<String, Integer> entry : sortWordList) {
// System.out.println(entry.getKey() + "------" + entry.getValue());
words.append(entry.getKey()).append("------").append(entry.getValue()).append("\r\n");
}
fileWriter.write(words.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileWriter != null) {
fileWriter.close();
}
}
System.out.println("重複率-----" + ((totalCount-diffWord)/totalCount));
}
/**
* 統計英文總字數和每個字出現的次數
*
* 大寫轉小寫,過濾非英文字元
*
* @param str
*/
public static void sumEnglishWordNum(String str) {
if(StringUtils.isBlank(str)){
return;
}
int num;
String[] strArr = str.toLowerCase().split(" ", -1);
if(strArr.length < 1){
return;
}
for (int i = 0; i < strArr.length; i++) {
if (StringUtils.isBlank(strArr[i])) {
continue;
}
char lastCharacter = strArr[i].charAt(strArr[i].length() - 1);
if(!(lastCharacter >='a' && lastCharacter <= 'z')){
strArr[i] = strArr[i].substring(0, strArr[i].length() - 1);
}
if (StringUtils.isBlank(strArr[i])) {
continue;
}
totalCount++;
if (!characterMap.containsKey(strArr[i])) {
num = 1;
diffWord++;
characterMap.put(strArr[i], num);
} else {
num = characterMap.get(strArr[i]) + 1;
characterMap.put(strArr[i], num);
}
}
}
/**
* 按value排序hashmap,統計單詞的頻率從高到低
* @param map
*/
public static void sort(Map<String, Integer> map){
sortWordList = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(sortWordList,new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> map1 , Map.Entry<String, Integer> map2){
return (map2.getValue() - map1.getValue());
}
});
}
}
結果
總字數------185684.0
不同的字數------17575.0
重複率-----0.9053499493763598
相關文章
- Javafx-【直方圖】文字頻次統計工具 中文/英文單詞統計Java直方圖
- python實現詞頻統計Python
- python統計英文文字中的迴文單詞數Python
- 詞語詞頻統計
- 詞頻統計
- python 計算txt文字詞頻率Python
- 詞頻統計mapreduce
- 統計一個字串出現頻率最高的字母/數字字串
- python如何統計詞頻Python
- 計算出一段英文中出現頻率最高的單詞(第一次面試時沒做出來,現在都記憶深刻)...面試
- 呼叫MapReduce對檔案中單詞出現次數進行統計
- python TK庫 統計word文件單詞詞頻程式 UI選擇文件PythonUI
- SQL 操作指令 英文單詞SQL
- C語言英文單詞C語言
- MATLAB自帶的函式tabulate統計一個陣列中各數字(元素)出現的頻數、頻率Matlab函式陣列
- 海量資料場景面試題:出現頻率最高的 100 個詞面試題
- matlab中如何能統計點出現的頻次呢?Matlab
- PostgreSQL全文檢索-詞頻統計SQL
- **呼叫MapReduce對檔案中各個單詞出現的次數進行統計**
- 在Linux中呼叫MapReduce對檔案中各個單詞出現次數進行統計Linux
- 中國傳統文化英文詞彙100個
- 文字挖掘之語料庫、分詞、詞頻統計分詞
- sensitive-word v0.13 特性版本釋出 支援英文單詞全詞匹配
- Trie樹:字串頻率統計排序字串排序
- 詞頻統計任務程式設計實踐程式設計
- 英文單詞縮寫----DXNRY – Dictionary 字典
- 統計檔案中出現的單詞次數
- Python統計四六級考試的詞頻Python
- 用Python如何統計文字檔案中的詞頻?(Python練習)Python
- 背單詞 純英文 2024年09月
- 統計numpy陣列中最頻繁出現的值陣列
- Java、Scala、Python ☞ 本地WordCount詞頻統計對比JavaPython
- C++ 統計單詞數C++
- python做頻率統計圖 完整版Python
- 瓦爾登湖各單詞出現頻次,並按排次由高到低排序排序
- 程式設計師快速記憶英文單詞的專屬訣竅程式設計師
- 資料庫redolog切換頻率統計分析資料庫
- java 英文單詞拼寫糾正框架(Word Checker)Java框架