package joshua.discriminative.feature_related.feature_template;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.logging.Logger;
import joshua.decoder.ff.tm.Rule;
import joshua.decoder.hypergraph.HGNode;
import joshua.decoder.hypergraph.HyperEdge;
import joshua.discriminative.DiscriminativeSupport;
public class TableBasedBaselineFT extends AbstractFeatureTemplate{
private double baselineScale;
private String baselineFeatName = null;
private HashMap<HyperEdge, Double> baselineScoreTbl;
private static Logger logger = Logger.getLogger(TableBasedBaselineFT.class.getName());
public TableBasedBaselineFT(String baselineFeatName, double baselineScale){
this.baselineFeatName = baselineFeatName;
this.baselineScale = baselineScale;
}
public void getFeatureCounts(HyperEdge dt, HashMap<String, Double> featureTbl, HashSet<String> restrictedFeatureSet, double scale) {
if(restrictedFeatureSet == null || restrictedFeatureSet.contains(baselineFeatName)==true){
double val = baselineScoreTbl.get(dt) * baselineScale;
//System.out.println("baseline is " + val + " ; baselineScale = " + baselineScale);
DiscriminativeSupport.increaseCount(featureTbl, baselineFeatName, val*scale);
}
}
public void getFeatureCounts(Rule rule, List<HGNode> antNodes, HashMap<String, Double> featureTbl, HashSet<String> restrictedFeatureSet, double scale) {
logger.severe("unimplement function");
System.exit(0);
}
// sentence specific
public void setBaselineScoreTbl(HashMap<HyperEdge, Double> baselineScoreTbl_){
baselineScoreTbl = baselineScoreTbl_;
System.out.println("tbl size is " + baselineScoreTbl.size());
}
public void estimateFeatureCounts(Rule rule, HashMap<String, Double> featureTbl, HashSet<String> restrictedFeatureSet, double scale) {
logger.severe("unimplement function");
System.exit(0);
}
}