package edu.stanford.nlp.semparse.open.model.candidate;
import java.util.*;
import edu.stanford.nlp.semparse.open.dataset.Example;
import edu.stanford.nlp.semparse.open.model.FeatureVector;
/**
* A Candidate is a possible set of predicted entities.
*/
public class Candidate {
public final Example ex;
public final CandidateGroup group;
public final TreePattern pattern;
public final List<String> predictedEntities;
public FeatureVector features;
public Candidate(CandidateGroup group, TreePattern pattern) {
this.pattern = pattern;
this.group = group;
group.candidates.add(this);
// Perform shallow copy
this.ex = group.ex;
this.predictedEntities = group.predictedEntities;
}
public int numEntities() {
return group.numEntities();
}
public double getReward() {
return group.ex.expectedAnswer.reward(this);
}
public Map<String, Double> getCombinedFeatures() {
Map<String, Double> map = new HashMap<>();
features.increment(1, map);
group.features.increment(1, map);
return map;
}
// ============================================================
// Debug Print
// ============================================================
public String sampleEntities() {
return group.sampleEntities();
}
public String allEntities() {
return group.allEntities();
}
}