summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2017-02-08 11:06:00 +0800
committerPeng Wu <alexepico@gmail.com>2017-02-08 11:06:00 +0800
commit24523278fbc44732c58407393f8779a8ec41712c (patch)
tree369a5217434d601a727f9463ead07887845ff328
parent8d404a360f3f5e2515cb8b8c7b3f2ea3b4e65580 (diff)
downloadlibpinyin-24523278fbc44732c58407393f8779a8ec41712c.tar.gz
libpinyin-24523278fbc44732c58407393f8779a8ec41712c.tar.xz
libpinyin-24523278fbc44732c58407393f8779a8ec41712c.zip
fixes phonetic_lookup_heap.h again
-rw-r--r--src/lookup/phonetic_lookup.h2
-rw-r--r--src/lookup/phonetic_lookup_heap.h14
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;
}