diff options
author | Peng Wu <alexepico@gmail.com> | 2017-02-08 11:06:00 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2017-02-08 11:06:00 +0800 |
commit | 24523278fbc44732c58407393f8779a8ec41712c (patch) | |
tree | 369a5217434d601a727f9463ead07887845ff328 | |
parent | 8d404a360f3f5e2515cb8b8c7b3f2ea3b4e65580 (diff) | |
download | libpinyin-24523278fbc44732c58407393f8779a8ec41712c.tar.gz libpinyin-24523278fbc44732c58407393f8779a8ec41712c.tar.xz libpinyin-24523278fbc44732c58407393f8779a8ec41712c.zip |
fixes phonetic_lookup_heap.h again
-rw-r--r-- | src/lookup/phonetic_lookup.h | 2 | ||||
-rw-r--r-- | 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 <gint32 nbest> 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 <gint32 nbest> -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<nbest>(&new_item, &exist_item); + return trellis_value_less_than<nbest>(&exist_item, &new_item); } template <gint32 nbest> @@ -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<nbest>); + std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_comp<nbest>); 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<nbest>); + if (trellis_value_less_than<nbest>(min, item)) { + std_lite::pop_heap(m_elements, m_elements + m_nelem, trellis_value_comp<nbest>); m_elements[m_nelem - 1] = *item; - std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_more_than<nbest>); + std_lite::push_heap(m_elements, m_elements + m_nelem, trellis_value_comp<nbest>); return true; } |