From 24523278fbc44732c58407393f8779a8ec41712c Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Wed, 8 Feb 2017 11:06:00 +0800 Subject: fixes phonetic_lookup_heap.h again --- src/lookup/phonetic_lookup.h | 2 ++ src/lookup/phonetic_lookup_heap.h | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/lookup/phonetic_lookup.h b/src/lookup/phonetic_lookup.h index 6b88804..f7d49af 100644 --- a/src/lookup/phonetic_lookup.h +++ b/src/lookup/phonetic_lookup.h @@ -64,6 +64,7 @@ struct trellis_value_t { template static bool inline trellis_value_less_than(const trellis_value_t * exist_item, const trellis_value_t * new_item) { +#if 1 if (nbest > 1) { /* allow longer sentence */ if (exist_item->m_sentence_length + 1 == new_item->m_sentence_length && @@ -74,6 +75,7 @@ static bool inline trellis_value_less_than(const trellis_value_t * exist_item, exist_item->m_poss < new_item->m_poss + LONG_SENTENCE_PENALTY) return true; } +#endif /* the same length but better possibility */ if (exist_item->m_sentence_length == new_item->m_sentence_length && diff --git a/src/lookup/phonetic_lookup_heap.h b/src/lookup/phonetic_lookup_heap.h index 25e69fe..be1bcea 100644 --- a/src/lookup/phonetic_lookup_heap.h +++ b/src/lookup/phonetic_lookup_heap.h @@ -22,10 +22,10 @@ #define PHONETIC_LOOKUP_HEAP_H template -static inline bool trellis_value_more_than(const trellis_value_t &exist_item, - const trellis_value_t &new_item) { +static inline bool trellis_value_comp(const trellis_value_t &exist_item, + const trellis_value_t &new_item) { /* min heap here */ - return trellis_value_less_than(&new_item, &exist_item); + return trellis_value_less_than(&exist_item, &new_item); } template @@ -61,7 +61,7 @@ public: if (m_nelem < nbest) { m_elements[m_nelem] = *item; m_nelem ++; - std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_more_than); + std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_comp); return true; } @@ -69,10 +69,10 @@ public: trellis_value_t * min = m_elements; /* compare new item */ - if (item->m_poss > min->m_poss) { - std_lite::pop_heap(m_elements, m_elements + m_nelem, trellis_value_more_than); + if (trellis_value_less_than(min, item)) { + std_lite::pop_heap(m_elements, m_elements + m_nelem, trellis_value_comp); m_elements[m_nelem - 1] = *item; - std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_more_than); + std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_comp); return true; } -- cgit