【发布时间】:2016-03-10 13:40:58
【问题描述】:
早安
我写了一个函数来计算一个词的频率:
public static int tfCalculator(String[] totalterms, String termToCheck) {
int count = 0; //to count the overall occurrence of the term termToCheck
for (String s : totalterms) {
if (s.equalsIgnoreCase(termToCheck)) {
count++;
}
}
return count;
}
然后我在下面的代码中使用它来计算String[] words中的每个单词
for(String word:words){
int freq = tfCalculator(words, word);
System.out.println(word + "|" + freq);
mm+=word + "|" + freq+"\n";
}
我遇到的问题是这里重复的单词是例如结果:
- 细胞骨架|2
- 网络|1
- 启用|1
- 等于|1
- 主轴|1
- 细胞骨架|2
- ...
- ...
所以有人可以帮我删除重复的单词并得到这样的结果:
- 细胞骨架|2
- 网络|1
- 启用|1
- 等于|1
- 主轴|1
- ...
- ...
非常感谢!
【问题讨论】:
-
将数组放入
Set,重复项就消失了 -
@KevinEsche 不好计算频率。我会使用
Map<Integer, String>将单词映射到它们的频率。话又说回来,有很多更好的方法来计算频率本身,但那是另一回事了。 -
能否请您发布完整的程序?
-
关于代码质量的旁注:您的一些变量(如 mm)或方法的名称......非常糟糕。如果你给你的方法起一个名字来说明它的真正作用;事情变得清晰得多。喜欢:
int countOccurancesOfTerm(String term, String[] stringsToCheck)或类似的东西。 -
@Mena 谢谢你的回答,你能解释一下我如何使用
Map<Integer, String>,或者另一种计算词频的方法