diff options
Diffstat (limited to 'decoder')
| -rw-r--r-- | decoder/decoder.cc | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/decoder/decoder.cc b/decoder/decoder.cc index f90e6bc0..2c53ff62 100644 --- a/decoder/decoder.cc +++ b/decoder/decoder.cc @@ -142,6 +142,7 @@ struct DecoderImpl {    ~DecoderImpl();    bool Decode(const string& input, DecoderObserver*);    void SetWeights(const vector<double>& weights) { +    feature_weights = weights;    }    void forest_stats(Hypergraph &forest,string name,bool show_tree,bool show_features,WeightVector *weights=0,bool show_deriv=false) { @@ -745,6 +746,7 @@ bool DecoderImpl::Decode(const string& input, DecoderObserver* o) {      //Add 1-best translation (trans) to psuedo-doc vectors      oracle.IncludeLastScore(&cerr);    } +  o->NotifyTranslationForest(smeta, &forest);    // TODO I think this should probably be handled by an Observer    if (conf.count("forest_output") && !has_ref) { @@ -824,6 +826,7 @@ bool DecoderImpl::Decode(const string& input, DecoderObserver* o) {           const prob_t z = Inside<prob_t, EdgeProb>(forest);           cerr << "  Contst. partition  log(Z): " << log(z) << endl;        } +      o->NotifyAlignmentForest(smeta, &forest);        if (conf.count("forest_output")) {          ForestWriter writer(str("forest_output",conf), sent_id);          if (FileExists(writer.fname_)) { @@ -889,12 +892,14 @@ bool DecoderImpl::Decode(const string& input, DecoderObserver* o) {        }        if (conf.count("graphviz")) forest.PrintGraphviz();      } else { +      o->NotifyAlignmentFailure(smeta);        cerr << "  REFERENCE UNREACHABLE.\n";        if (write_gradient) {          cout << endl << flush;        }      }    } +  o->NotifyDecodingComplete(smeta);    return true;  } | 
