diff options
-rw-r--r-- | decoder/decoder.cc | 2 | ||||
-rw-r--r-- | mteval/scorer.cc | 8 | ||||
-rw-r--r-- | utils/sparse_vector.h | 6 |
3 files changed, 9 insertions, 7 deletions
diff --git a/decoder/decoder.cc b/decoder/decoder.cc index d8dd0c61..ff068be9 100644 --- a/decoder/decoder.cc +++ b/decoder/decoder.cc @@ -942,7 +942,7 @@ bool DecoderImpl::Decode(const string& input, DecoderObserver* o) { } else if (csplit_output_plf) { cout << HypergraphIO::AsPLF(forest, false) << endl; } else { - if (!graphviz && !has_ref && !joshua_viz) { + if (!graphviz && !has_ref && !joshua_viz && !SILENT) { vector<WordID> trans; ViterbiESentence(forest, &trans); cout << TD::GetString(trans) << endl << flush; diff --git a/mteval/scorer.cc b/mteval/scorer.cc index 04eeaa93..64ce63af 100644 --- a/mteval/scorer.cc +++ b/mteval/scorer.cc @@ -410,8 +410,7 @@ void BLEUScore::ScoreDetails(string* details) const { float bleu = ComputeScore(&precs, &bp); for (int i=N();i<4;++i) precs[i]=0.; - char *bufn; - bufn=buf+sprintf(buf, "BLEU = %.2f, %.1f|%.1f|%.1f|%.1f (brev=%.3f)", + sprintf(buf, "BLEU = %.2f, %.1f|%.1f|%.1f|%.1f (brev=%.3f)", bleu*100.0, precs[0]*100.0, precs[1]*100.0, @@ -427,7 +426,10 @@ float BLEUScore::ComputeScore(vector<float>* precs, float* bp) const { int count = 0; for (int i = 0; i < N(); ++i) { if (hyp_ngram_counts[i] > 0) { - float lprec = log(correct_ngram_hit_counts[i]) - log(hyp_ngram_counts[i]); + float cor_count = correct_ngram_hit_counts[i]; + // smooth bleu + if (!cor_count) { cor_count = 0.01; } + float lprec = log(cor_count) - log(hyp_ngram_counts[i]); if (precs) precs->push_back(exp(lprec)); log_bleu += lprec; ++count; diff --git a/utils/sparse_vector.h b/utils/sparse_vector.h index e3721b50..a55436fb 100644 --- a/utils/sparse_vector.h +++ b/utils/sparse_vector.h @@ -42,14 +42,14 @@ BOOST_CLASS_TRACKING(SparseVector<double>,track_never) #include "fast_sparse_vector.h" #define SparseVector FastSparseVector -template <class T> -SparseVector<T> operator*(const SparseVector<T>& a, const double& b) { +template <class T, typename S> +SparseVector<T> operator*(const SparseVector<T>& a, const S& b) { SparseVector<T> result = a; return result *= b; } template <class T> -SparseVector<T> operator*(const SparseVector<T>& a, const T& b) { +SparseVector<T> operator*(const SparseVector<T>& a, const double& b) { SparseVector<T> result = a; return result *= b; } |