package edu.umd.hooka.alignment; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.mapred.OutputCollector; import org.apache.hadoop.mapred.Reporter; import edu.umd.hooka.Alignment; import edu.umd.hooka.AlignmentPosteriorGrid; import edu.umd.hooka.PhrasePair; public abstract class AlignmentModel { private List<AlignmentEventListener> _listeners = new ArrayList<AlignmentEventListener>(); public void addAlignmentListener(AlignmentEventListener ael) { _listeners.add(ael); } protected void notifyUnalignablePair(PhrasePair pp, String reason) { for (AlignmentEventListener l : _listeners) { l.notifyUnalignablePair(pp, reason); } } public abstract void clearModel(); public abstract void processTrainingInstance(PhrasePair pp, Reporter r); public abstract void writePartialCounts(OutputCollector<IntWritable,PartialCountContainer> output) throws IOException; public abstract Alignment viterbiAlign(PhrasePair pp, PerplexityReporter reporter); public abstract AlignmentPosteriorGrid computeAlignmentPosteriors(PhrasePair pp); }