package edu.cmu.minorthird.classify.sequential;
// Compute posterior probabilities using Forward and Backward
public class PosteriorProb {
Forward fwd; // result of the forward algorithm
Backward bwd; // result of the backward algorithm
private double logprob;
PosteriorProb(Forward fwd, Backward bwd) {
this.fwd = fwd; this.bwd = bwd;
logprob = fwd.logprob(); // should equal bwd.logprob()
}
double posterior(int i, int k) // i=index into the seq; k=the HMM state
{ return Math.exp(fwd.f[i][k] + bwd.b[i][k] - logprob); }
}