package edu.stanford.nlp.ie;
import java.util.List;
import edu.stanford.nlp.sequences.ListeningSequenceModel;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.Index;
/**
* Uniform prior to be used for generic Gibbs inference in the ie.crf.CRFClassifier.
* If used, CRF will do generic Gibbs inference without any priors.
*
* @author Mihai
*/
public class UniformPrior<IN extends CoreMap> implements ListeningSequenceModel {
protected int[] sequence;
protected final int backgroundSymbol;
protected final int numClasses;
protected final int[] possibleValues;
protected final Index<String> classIndex;
protected final List<IN> doc;
public UniformPrior(String backgroundSymbol, Index<String> classIndex, List<IN> doc) {
this.classIndex = classIndex;
this.backgroundSymbol = classIndex.indexOf(backgroundSymbol);
this.numClasses = classIndex.size();
this.possibleValues = new int[numClasses];
for (int i=0; i<numClasses; i++) {
possibleValues[i] = i;
}
this.doc = doc;
}
@Override
public double scoreOf(int[] sequence) {
return 0;
}
@Override
public double[] scoresOf (int[] sequence, int position) {
double[] probs = new double[numClasses];
for(int i = 0; i < probs.length; i ++)
probs[i] = 0.0;
return probs;
}
@Override
public int[] getPossibleValues(int position) {
return possibleValues;
}
@Override
public int leftWindow() {
return Integer.MAX_VALUE; // not Markovian!
}
@Override
public int length() {
return doc.size();
}
@Override
public int rightWindow() {
return Integer.MAX_VALUE; // not Markovian!
}
@Override
public double scoreOf(int[] sequence, int position) {
return 0.0;
}
@Override
public void setInitialSequence(int[] sequence) {
}
@Override
public void updateSequenceElement(int[] sequence, int pos, int oldVal) {
}
}