package edu.umd.hooka.alignment;
public class PerplexityReporter {
double totalProb;
int totalWords;
public PerplexityReporter() {
totalProb = 0.0;
totalWords = 0;
}
public void addFactor(double logProb, int wordCount) {
totalWords += wordCount;
totalProb -= logProb;
}
public void plusEquals(PerplexityReporter rhs) {
totalWords += rhs.totalWords;
totalProb += rhs.totalProb;
}
public double getTotalLogProb() {
return totalProb;
}
public int getTotalWordCount() {
return totalWords;
}
public double getCrossEntropy() {
return totalProb / (double)totalWords;
}
public void reset() {
totalProb = 0.0;
totalWords = 0;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("CROSS ENTROPY: ").append(getCrossEntropy()).append("\tPERPLEXITY: ")
.append(Math.pow(2.0, getCrossEntropy()));
return sb.toString();
}
}