zoukankan      html  css  js  c++  java
  • 单词统计

    用户需求: 英语的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(); } } }
  • 相关阅读:
    Angularjs总结(一)表单验证
    list集合中指定字段去重
    NodeJS学习笔记—2.AMD规范
    NodeJS学习笔记—1.CommonJS规范
    WCF上传、下载、删除文件
    .net RAW(16)与GUID互相转换
    Angularjs总结(六) 上传附件
    可以打开mdb文件的小软件
    数据库导出导入操作(expdp,impdp)
    用Ueditor存入数据库带HTML标签的文本,从数据库取出来后,anjular用ng-bind-html处理带HTML标签的文本
  • 原文地址:https://www.cnblogs.com/Evak/p/11064015.html
Copyright © 2011-2022 走看看