summaryrefslogtreecommitdiff
path: root/vest/mr_vest_generate_mapper_input.cc
diff options
context:
space:
mode:
Diffstat (limited to 'vest/mr_vest_generate_mapper_input.cc')
-rw-r--r--vest/mr_vest_generate_mapper_input.cc27
1 files changed, 19 insertions, 8 deletions
diff --git a/vest/mr_vest_generate_mapper_input.cc b/vest/mr_vest_generate_mapper_input.cc
index f66b5082..5ab5c689 100644
--- a/vest/mr_vest_generate_mapper_input.cc
+++ b/vest/mr_vest_generate_mapper_input.cc
@@ -183,20 +183,27 @@ struct oracle_directions {
Sentences model_hyps;
- vector<OracleBleu::ScoreP> model_scores;
+ vector<ScoreP> model_scores;
bool have_doc;
void Init() {
have_doc=!decoder_translations_file.empty();
if (have_doc) {
model_hyps.Load(decoder_translations_file);
+ if (verbose) model_hyps.Print(cerr,5);
model_scores.resize(model_hyps.size());
+ if (dev_set_size!=model_hyps.size()) {
+ cerr<<"You supplied decoder_translations with a different number of lines ("<<model_hyps.size()<<") than dev_set_size ("<<dev_set_size<<")"<<endl;
+ abort();
+ }
+ cerr << "Scoring model translations " << model_hyps << endl;
for (int i=0;i<model_hyps.size();++i) {
- //FIXME: what is scoreccand? with / without clipping? do without for consistency w/ oracle
+ //TODO: what is scoreCcand? without clipping? do without for consistency w/ oracle
model_scores[i]=oracle.ds[i]->ScoreCandidate(model_hyps[i]);
- if (verbose) cerr<<"Before model["<<i<<"]: "<<ds().ScoreDetails()<<endl;
- if (verbose) cerr<<"model["<<i<<"]: "<<model_scores[i]->ScoreDetails()<<endl;
- oracle.doc_score->PlusEquals(*model_scores[i]);
- if (verbose) cerr<<"After model["<<i<<"]: "<<ds().ScoreDetails()<<endl;
+ assert(model_scores[i]);
+ if (verbose) cerr<<"Before model["<<i<<"]: "<<ds().ScoreDetails()<<endl;
+ if (verbose) cerr<<"model["<<i<<"]: "<<model_scores[i]->ScoreDetails()<<endl;
+ oracle.doc_score->PlusEquals(*model_scores[i]);
+ if (verbose) cerr<<"After model["<<i<<"]: "<<ds().ScoreDetails()<<endl;
}
//TODO: compute doc bleu stats for each sentence, then when getting oracle temporarily exclude stats for that sentence (skip regular score updating)
}
@@ -249,8 +256,12 @@ struct oracle_directions {
o=oracle.ComputeOracle(oracle.MakeMetadata(hg,i),&hg,origin);
if (verbose) {
cerr << o;
- cerr<<"After oracle: "<<ds().ScoreDetails()<<endl
- <<" oracle="<<oracle.GetScore(o.hope.sentence,i)->ScoreDetails()<<endl
+ ScoreP hopesc=oracle.GetScore(o.hope.sentence,i);
+ oracle.doc_score->PlusEquals(*hopesc,1);
+ cerr<<"With hope: "<<ds().ScoreDetails()<<endl;
+ oracle.doc_score->PlusEquals(*hopesc,-1);
+ cerr<<"Without hope: "<<ds().ScoreDetails()<<endl;
+ cerr<<" oracle="<<oracle.GetScore(o.hope.sentence,i)->ScoreDetails()<<endl
<<" model="<<oracle.GetScore(o.model.sentence,i)->ScoreDetails()<<endl;
if (have_doc)
cerr<<" doc (should = model): "<<model_scores[i]->ScoreDetails()<<endl;