0

我正在尝试查找文件中每个单词的频率。

不仅要搜索某个单词的实例数,还要搜索每个单词的频率。

例如,如果文件包含这句话:

“超棒超酷的人真棒!”

它会输出这个:

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

显示每个单词的频率。

我怎样才能在 Java 中做到这一点,但计算整个文件,而不知道我可能正在测试什么单词?

4

1 回答 1

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将包含每个单词的频率。

于 2013-04-22T17:15:33.890 回答