• 单词统计


    用户需求: 英语的26 个字母的频率在一本小说中是如何分布的? 某类型文章中常出现的单词是什么? 某作家最常用的词汇是什么? 《哈利波特》 中最常用的短语是什么,等等。 我们就写一些程序来解决这个问题,满足一下我们的好奇心。 第0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。 字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数) 如果两个字母出现的频率一样,那么就按照字典序排列。 如果 S 和 T 出现频率都是 10.21%, 那么, S 要排在T 的前面。 第1步:输出单个文件中的前 N 个最常出现的英语单词。 作用:一个用于统计文本文件中的英语单词出现频率。 单词:以英文字母开头,由英文字母和字母数字符号组成的字符串视为一个单词。单词以分隔符分割且不区分大小写。在输出时,所有单词都用小写字符表示。 英文字母:A-Z,a-z 字母数字符号:A-Z,a-z,0-9 第1步:输出单个文件中的前 N 个最常出现的英语单词。 分割符:空格,非字母数字符号 例:good123是一个单词,123good不是一个单词。good,Good和GOOD是同一个单词。 package test; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class W1 { public static void main(String[] args) throws IOException { try { //IO操作读取文件内容 FileReader fr = new FileReader("d:\文件\单词.txt"); BufferedReader br = new BufferedReader(fr); NumberFormat nf = NumberFormat.getInstance(); // 设置精确到小数点后2位 nf.setMaximumFractionDigits(2); HashMap map = new HashMap(); String string =null; Integer count = 0;//每个字母的次数 Integer total = 0;//总共多少个字母 while ((string=br.readLine())!=null) { char[] ch = string.toCharArray(); for (int i = 0; i < ch.length; i++) { if (ch[i] > 'A' && ch[i]< 'z') { total++; ch[i] = Character.toLowerCase(ch[i]); count = map.get(ch[i]+""); if (count == null) { count = 1; }else { count++; } map.put(ch[i]+"", count); } } } ArrayList list = new ArrayList(); list.addAll(map.keySet()); //将单词添加到list中 //排序按照出现次数降序排列 for(int i = 0;i < list.size();i++) { for(int j = 0;j < (list.size() - i-1);j++) //list.size() - i-1因为要用到i+1要考虑是否超出范围的问题 { if(map.get(list.get(j)) < map.get(list.get(j+1))) { String t = list.get(j); list.set(j, list.get(j+1)); list.set( j+1, t); } } } for(int i = 0 ; i < list.size();i++) { System.out.println(list.get(i) + ":" + map.get(list.get(i)) +" "+ nf.format((float)(map.get(list.get(i)))*100/total) + "%"); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/Evak/p/11064015.html
Copyright © 2020-2023  润新知