From 4b20a7029c24a9645dea56682d527b8137150cd2 Mon Sep 17 00:00:00 2001 From: Yibing Liu Date: Tue, 7 Nov 2017 17:10:15 +0800 Subject: [PATCH] skip scoring the end when using character-based scorer --- decoders/swig/ctc_beam_search_decoder.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/decoders/swig/ctc_beam_search_decoder.cpp b/decoders/swig/ctc_beam_search_decoder.cpp index 0f33e8573..4a63af26a 100644 --- a/decoders/swig/ctc_beam_search_decoder.cpp +++ b/decoders/swig/ctc_beam_search_decoder.cpp @@ -148,11 +148,11 @@ std::vector> ctc_beam_search_decoder( } } // end of loop over time - // score the last word/character of each prefix - if (ext_scorer != nullptr) { + // score the last word of each prefix that doesn't end with space + if (ext_scorer != nullptr && !ext_scorer->is_character_based()) { for (size_t i = 0; i < beam_size && i < prefixes.size(); ++i) { auto prefix = prefixes[i]; - if (prefix->character != space_id && !prefix->is_empty()) { + if (!prefix->is_empty() && prefix->character != space_id) { float score = 0.0; std::vector ngram = ext_scorer->make_ngram(prefix); score = ext_scorer->get_log_cond_prob(ngram) * ext_scorer->alpha;