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;
                }
                
            }
    }
    

    运行截图:

  • 相关阅读:
    最小费用最大流问题
    成大事必备9种能力、9种手段、9种心态
    转 fpga学习经验2
    算法 FFT理论1
    FPGA进阶之路1
    FPGA:亲和力激活竞争力
    1030 又回来了
    转 fpga学习经验1
    调查:近半大学生愿接受15002000元月薪
    转 观点:哪些人适合做FPGA开发(精华)
  • 原文地址:https://www.cnblogs.com/kmxbf2292/p/11070285.html
Copyright © 2011-2022 走看看