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

    用户需求:

    英语的26 个字母的频率在一本小说中是如何分布的?

    某类型文章中常出现的单词是什么?

    某作家最常用的词汇是什么?

    《哈利波特》 中最常用的短语是什么,等等。

    我们就写一些程序来解决这个问题,满足一下我们的好奇心。

    0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。

    字母频率 = 这个字母出现的次数 / (所有A-Za-z字母出现的总数)

    如果两个字母出现的频率一样,那么就按照字典序排列。  如果 S T 出现频率都是 10.21%, 那么, S 要排在T 的前面。

    1步:输出单个文件中的前 N 个最常出现的英语单词。

    作用:一个用于统计文本文件中的英语单词出现频率。

    单词:以英文字母开头,由英文字母和字母数字符号组成的字符串视为一个单词。单词以分隔符分割且不区分大小写。在输出时,所有单词都用小写字符表示。

    英文字母:A-Za-z

    字母数字符号:A-Za-z0-9

    1步:输出单个文件中的前 N 个最常出现的英语单词。

    分割符:空格,非字母数字符号 例:good123是一个单词,123good不是一个单词。goodGoodGOOD是同一个单词。

    相关代码:

    //信1705-2 20173460 李奔                                             Ctrl+C&&Ctrl+V 
    package piao;
    
    import java.io.FileReader;
    import java.util.Scanner;
    
    public class Piao {
    
        @SuppressWarnings("resource")
        public static void main(String[] args) 
        {
            double []list=new double[26];
            int []c=new int[26];
            for(int k=0;k<26;k++)
            {
                list[k]=0;
            }
            for(int k=0;k<26;k++)
            {
                c[k]=k+65;
            }
            String line="";
            int a=0;
            int b=0;
            int s=0;
            try
            {
                FileReader fr=new FileReader("piao_chapter1.txt");
                Scanner in =new Scanner(fr);
                while(in.hasNext())
                {
                    line=in.nextLine();
                    //System.out.println(line);
                    for(int i=0;i<line.length();i++)
                    {
                        a=line.charAt(i);
                        if (a>=65&&a<=90)
                        {
                            b=a-65;
                        }
                        if(a>=97&&a<=122)
                        {
                            b=a-97;
                        }
                        //System.out.println(b);
                        list[b]+=1;
                        s++;
                    }
                }
                for(int t=0;t<26;t++)
                {
                    list[t]=list[t]/s;
                    //System.out.println(list[t]);
                }
                int t,k;
                double d;
                int e;
                for(t=0;t<25;t++)
                {
                    for(k=0;k<25-t;k++)
                    {
                        if(list[k]<list[k+1])
                        {
                            d=list[k+1];
                            list[k+1]=list[k];
                            list[k]=d;
                            
                            e=c[k+1];
                            c[k+1]=c[k];
                            c[k]=e;
                        }
                    }
                }
                for(t=0;t<26;t++)
                {
                    System.out.print((char)(c[t])+"  ");
                    System.out.println(String.format("%.2f", list[t]*100)+"%");
                }
            }
            catch(Exception e)
            {
                
            }
        }
         public static String returnString(String s)
            {
                if(s.equals("the"))
                {
                    return "";
                }
                else
                {
                    
                    return s;
                }
                
            }
    }
    

    运行截图:

  • 相关阅读:
    python操作Excel表格
    Spring的AntPathMatcher(路径匹配)
    【纪中受难记】——Day17:本来能AK
    PAT (Basic Level) Practice (中文)1009 说反话 (20 分)
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)C++ & python 语言实现 —— 题解目录
    PAT (Basic Level) Practice (中文)C++ & python 语言实现 —— 题解目录
    PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
    PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
  • 原文地址:https://www.cnblogs.com/kmxbf2292/p/11070285.html
Copyright © 2011-2022 走看看