查找文件中每个单词的频率

时间:2013-04-22 16:47:59

标签: java

我试图找到文件中每个单词的频率。

不只是搜索某个单词的实例数,而是每个单词的频率。

例如,如果文件中包含以下句子:

  

"超级棒超级酷的人真棒!"

它会输出:

Super - 2
Awesome - 2
Cool - 1
People - 1
Are - 1

显示每个单词的频率。

我如何在Java中执行此操作,但是计算整个文件,而不知道我可能会测试哪些单词?

1 个答案:

答案 0 :(得分:4)

尝试以下方法:

// This will match all non-word characters, i.e. characters that are
// not in [a-zA-Z_0-9]. This should match whitespaces and interpunction.
String nonWordDelimiter="[\W]+";

String[] words = text.split(nonWordDelimiter);

Map<String, Integer> frequencies = new LinkedHashMap<String, Integer>();
for (String word : words) {
    if (!word.isEmpty()) {
        Integer frequency = frequencies.get(word);

        if (frequency == null) {
            frequency = 0;
        }

        ++frequency;
        frequencies.put(word, frequency);
    }
}

最后,地图frequencies将包含每个单词的频率。