计算文本的字母熵

时间:2018-05-08 17:08:29

标签: java entropy

此方法计算字母的熵。计算熵,为 每个字母,计算频率计数的比率(比如说p) 写入所有字母的总频率计数。然后,计算 以下值:p * Math.log(1 / p)。返回值的总和,舍入 到最接近的整数值。

public int computeEntropy() {
    int FreqCount = 0;
    double sum = 0;
    char[] O = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    for(int k = 0; k < O.length; k++) {
        if(FreqCount > 0) {
            FreqCount = 0;
        }
    for(int j = 0; j < N.size(); j++) {
        for(int i = 0; i < N.get(j).length(); i++) {
            if(O[k] == N.get(j).charAt(i) || Character.toUpperCase(O[k]) == N.get(j).charAt(i)) {
                FreqCount++;
            }
            else 
                FreqCount += 0;
        }
    }
    p = FreqCount/RawCount;
    sum += p * Math.log (1 / p);
    return (int)sum;
}

我已经获得了String的ArrayList(N),它是由空格分隔的单词。 我测试了这种方法,但仍无法得到正确的答案。此方法的描述位于顶部。有人能帮助我吗?

0 个答案:

没有答案