• 单词统计续


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

    功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列。

    功能2:输出出现次数最多的前 n 个单词, 

     例如, 提示统计统计前多少名:输入10。 就是输出最常出现单词的前 10 名。 当没有指明数量的时候,我们默认列出所有单词的频率。

    2步:第二步:  支持 stop words

    在一本小说里, 频率出现最高的单词一般都是 "a",  "it", "the", "and", "this", 这些词, 可以做一个 stop word 文件 (停词表), 在统计词汇的时候,跳过这些词。  我们把这个文件叫 "stopwords.txt" file.  

    第三步:  想看看常用的短语是什么, 怎么办呢?  

    先定义短语:"两个或多个英语单词, 它们之间只有空格分隔".   请看下面的例子:

      hello world   //这是一个短语

      hello, world //这不是一个短语

    同一频率的词组, 按照字典序来排列。

    //统计文章中的字母次数
    package Word;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.text.DecimalFormat;
    
    public class WordFind {
    
        public static void main(String[] args) {
            WordFind2[] word=new WordFind2[100];
            for(int i=0;i<100;i++) {
                word[i]=new WordFind2();
            }
            word[0].input(word);
            word[0].showAsc(word);
        }
    
    }
    
    class WordFind2{
        private char word;
        private int num;
        private static double time=0;
        public WordFind2() {
            word='0';
            num=1;
        }
        public static double getTime() {
            return time;
        }
        public char getWord() {
            return word;
        }
        public void setWord(char word) {
            this.word = word;
        }
        public int getNum() {
            return num;
        }
        public void setNum(int num) {
            this.num = num;
        }
        public void addnum() {
            num++;
        }
        public void input(WordFind2[] word) {
            String str;
            try {
                BufferedReader in=new BufferedReader(new FileReader("word.txt"));
                while((str = in.readLine())!=null) {
                    change(str,word);
                }
                in.close();
            }
            catch (IOException e) {
                System.out.println("缓冲区错误");
        }
        }
        private void change(String str, WordFind2[] word2) {
            char[] s1=str.toCharArray();
            for(int i=0,j=0;i<s1.length;i++) {
                if((s1[i]>=65&&s1[i]<=90)||(s1[i]>=97&&s1[i]<=122)) {
                    add(s1[i],word2);
                    time++;
                }
            }
            
        }
        private void add(char s, WordFind2[] word2) {
            int j=0;
            boolean f=false;
            for(int i=0;i<word2.length;i++) {
                if(word2[i].getWord()=='0') {f=true;j=i;break;}
                if(s==word2[i].getWord()) {word2[i].addnum();break;}
            }
            if(f==true) {
                word2[j]=new WordFind2();
                word2[j].setWord(s);
            }
        }
        void show(WordFind2[] word2) {
            DecimalFormat df = new DecimalFormat( "0.0000");
            double b=0;
            for(int i=0;word2[i].getWord()!='0';i++) {
                b=word2[i].getNum()/word2[i].getTime();
                System.out.println(word2[i].getWord()+"	"+df.format(b));
            }
        }
        void showAsc(WordFind2[] word2) {
            WordFind2 word=new WordFind2();
            for(int i=0;word2[i].getWord()!='0';i++) {
                //if(word2[i].getWord().equals("")) continue;
                for(int j=i+1;word2[j].getWord()!='0';j++) {
                        if(word2[i].getNum()<word2[j].getNum()) {
                            word.setWord(word2[i].getWord());
                            word.setNum(word2[i].getNum());
                            word2[i].setWord(word2[j].getWord());
                            word2[i].setNum(word2[j].getNum());
                            word2[j].setWord(word.getWord());
                            word2[j].setNum(word.getNum());
                        }
                    
                }
            }
            for(int i=0;word2[i].getWord()!='0';i++) {
                //if(word2[i].getWord().equals(""))continue;
                System.out.println(word2[i].getWord()+"	"+word2[i].getNum());//
            }
        }
    
    }

    MENU.java:

    package Word;
    
    import java.util.Scanner;
    
    public class Menu {
    
        public static void main(String[] args) {
            Scanner in =new Scanner(System.in);
            ShowMenu();
            int n=0;
            while((n=in.nextInt())!=4) {
                switch(n) {
                case 0:{
                    WordFind2[] word=new WordFind2[100];
                    for(int i=0;i<100;i++) {
                        word[i]=new WordFind2();
                    }
                    word[0].input(word);
                    word[0].showAsc(word);
                };break;
                case 1:{
                    WordFind3[] word=new WordFind3[999999];
                    for(int i=0;i<word.length;i++) {
                        word[i]=new WordFind3();
                    }
                    word[0].input(word);
                    word[0].showAsc(word);
                };break;
                case 2:{
                    System.out.println("请输入n的数值");
                    int n2=in.nextInt();
                    WordFind3[] word=new WordFind3[999999];
                    for(int i=0;i<word.length;i++) {
                        word[i]=new WordFind3();
                    }
                    word[0].input(word);
                    word[0].showAsc(word,n2);
                };break;
                default:System.out.println("输入错误!请重新输入");
                }
                ShowMenu();
            }
            
        }
        
        public static void ShowMenu() {
            System.out.println("请选择:");
            System.out.println("0:输出全部的字母");
            System.out.println("1:输出全部的单词");
            System.out.println("2:输出前n项单词");
            System.out.println("3:退出");
        }
    
    }
  • 相关阅读:
    rabbitMq交换机direct、topics
    rabbitMq及安装、fanout交换机-分发(发布/订阅)
    rabbitmq
    .sh文件启动 jenkins
    雪花算法、二进制运算
    收银台数据库存储AES加解密
    数据库事物
    excel技巧
    日期计算、正则、sequence、索引、表连接、mybatis
    oracle常用函数介绍
  • 原文地址:https://www.cnblogs.com/huan-ch/p/11070174.html
Copyright © 2020-2023  润新知