我试图找到文件中每个单词的频率。
不只是搜索某个单词的实例数,而是每个单词的频率。
例如,如果文件中包含以下句子:
"超级棒超级酷的人真棒!"
它会输出:
Super - 2
Awesome - 2
Cool - 1
People - 1
Are - 1
显示每个单词的频率。
我如何在Java中执行此操作,但是计算整个文件,而不知道我可能会测试哪些单词?
答案 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
将包含每个单词的频率。