我需要实现当前的公式.它用于对分类中的节点进行评分.基本上,节点的分数取决于子节点的数量及其分数((nodes(h+1))是下一级节点的数量,Cl(concept)是一组子节点).
在我的用例中,术语频率仅定义为现在的叶子.我已经实现了一个实现,但问题是当节点有2个子节点时,实现只会转到一边.
对于给定的分类:
1
/ \
2 3
| |
4 17
/ \
11 13
Run Code Online (Sandbox Code Playgroud)
的频率被给定:freq(11) = 3,freq(13) = 5和freq(17) = 10.当我试图获得分数时node(1),结果是0.0,因为递归不会进入后代node(4),它只检索freq(17)它就是它.通常,结果应为7.
这是实施:
public static float calcScore(int keyID, Map<Integer, Integer> frequencies, Map<Integer, Integer> subTaxonomy) {
float res = 0f;
int nodes = 0;
if (frequencies.containsKey(keyID)) {
return frequencies.get(keyID) + 0f;
}
for (Map.Entry<Integer, Integer> entry : subTaxonomy.entrySet()) {
if (entry.getValue() - …Run Code Online (Sandbox Code Playgroud)