package edu.berkeley.cs.nlp.ocular.lm; import tberg.murphy.indexer.Indexer; import java.util.Set; import edu.berkeley.cs.nlp.ocular.lm.SingleLanguageModel; /** * @author Dan Garrette (dhgarrette@gmail.com) */ public class UniformLanguageModel implements SingleLanguageModel { private static final long serialVersionUID = 398523984923L; final private Set<Integer> activeCharacters; final private Indexer<String> charIndexer; final private int maxOrder; final private boolean[] isActive; final private double prob; public UniformLanguageModel(Set<Integer> activeCharacters, Indexer<String> charIndexer, int maxOrder) { this.activeCharacters = activeCharacters; this.charIndexer = charIndexer; this.maxOrder = maxOrder; isActive = new boolean[charIndexer.size()]; for (int c : activeCharacters) { isActive[c] = true; } this.prob = 1.0 / activeCharacters.size(); } public Set<Integer> getActiveCharacters() { return activeCharacters; } public int[] shrinkContext(int[] context) { return context; } public boolean containsContext(int[] context) { return true; } public double getCharNgramProb(int[] context, int c) { if (isActive[c]) return prob; else return 0.0; } public Indexer<String> getCharacterIndexer() { return charIndexer; } public int getMaxOrder() { return maxOrder; } }