繁体   English   中英

如何实现字长频率计数器

[英]How to implement a word length frequency counter

文本分析领域使用许多不同的工具来提取有关书面作品的信息。 其中一种方法是词长频率,用于评估写作模式(例如,一位作者可能更喜欢使用简短的“活泼”词,而另一位作者可能更喜欢较长的词)。 此类信息可用于帮助识别(或排除)匿名文本的作者,也可用于改善文本的“流畅性”或可读性。 在最简单的形式中,频率分析计算长度为 1、2、3、...、n 的单词数,其中 n 是给定文本中最长单词的长度。 例如,分析句子“I am a man”会产生输出“2, 1, 1”(即两个长度为 1 的单词(“I”、“a”),一个长度为 2 的单词(“am ") 和一个长度为 3 的单词 ("man")。此作业要求您生成一个基于文本的应用程序(即在命令行运行的程序,而不是图形程序),该应用程序执行此分析,计算范围一段文本的统计数据,分配规范如下:

该程序应该读取一个名为 body.txt 的文件,将其打印出来,并分析其字长频率。 对于“基本”(即及格)分数,您应该计算文本中单词长度的频率并以文本形式显示结果(即仅列出频率)。

到目前为止,我已经得到了下面的代码,并且我真的很想知道如何取得进展,任何人都可以提供任何指示都会真正帮助我。 我是这个论坛的新手并且自己编码,所以如果这是一个基本问题,请不要侮辱我。

import java.io.*;

public class Help1 {

    public static void main(String args[]) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader(
                    "body.txt"));
            String text = null;

            while ((text = reader.readLine()) != null) {

                System.out.println(text);
                // Work in this loop
                // The code takes each line in the file body.txt and
                // prints out each word
                String words[] = text.split(" ");
                for (int i = 0; i < words.length; i++) {
                    System.out.println("words[" + i + "]=" + words[i]);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

您需要一种方法来计算每个字长出现的次数,不是吗。 这是一项任务,任何给出答案的人都会感到羞耻,但这可能会帮助您思考问题:

  • 您需要一种方法来为每个字长维护一个单独的计数器。 对我来说,这听起来像一张地图。 它将按字长进行索引,与每个索引条目相关联的值将是该字长出现的次数。
  • 您的第一步是获取单词的长度。
  • 长度可能不在地图中,在这种情况下,您必须对此做些什么。
  • 如果它在列表中,那么您将不得不做一些稍微不同的事情。

最后,您必须遍历地图并打印结果。

您可以在此处获取有关如何使用地图的详细信息:
http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM