我正在尝试查找文件中每个单词的频率。
不仅要搜索某个单词的实例数,还要搜索每个单词的频率。
例如,如果文件包含这句话:
“超棒超酷的人真棒!”
它会输出这个:
Super - 2
Awesome - 2
Cool - 1
People - 1
Are - 1
显示每个单词的频率。
我怎样才能在 Java 中做到这一点,但计算整个文件,而不知道我可能正在测试什么单词?
我正在尝试查找文件中每个单词的频率。
不仅要搜索某个单词的实例数,还要搜索每个单词的频率。
例如,如果文件包含这句话:
“超棒超酷的人真棒!”
它会输出这个:
Super - 2
Awesome - 2
Cool - 1
People - 1
Are - 1
显示每个单词的频率。
我怎样才能在 Java 中做到这一点,但计算整个文件,而不知道我可能正在测试什么单词?
尝试以下操作:
// 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
将包含每个单词的频率。