From 9f413b389d5a59b01bfe53455e37643d0a15ed6c Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Thu, 9 Feb 2017 16:02:45 +0800 Subject: update pinyin_get_sentence and pinyin_train function --- src/lookup/phonetic_lookup.cpp | 2 -- src/pinyin.cpp | 21 ++++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/lookup/phonetic_lookup.cpp b/src/lookup/phonetic_lookup.cpp index 817f837..e658911 100644 --- a/src/lookup/phonetic_lookup.cpp +++ b/src/lookup/phonetic_lookup.cpp @@ -203,8 +203,6 @@ bool ForwardPhoneticConstraints::diff_result(MatchResult best, assert(add_constraint(pos, next_pos, other_token)); } - /* best and other results should be different. */ - assert(changed); return changed; } diff --git a/src/pinyin.cpp b/src/pinyin.cpp index 9a522bb..6937d55 100644 --- a/src/pinyin.cpp +++ b/src/pinyin.cpp @@ -1172,6 +1172,12 @@ bool pinyin_get_sentence(pinyin_instance_t * instance, pinyin_context_t * & context = instance->m_context; NBestMatchResults & results = instance->m_match_results; + /* check the candidate type. */ + CandidateVector candidates = instance->m_candidates; + lookup_candidate_t * candidate = &g_array_index + (candidates, lookup_candidate_t, index); + assert(NBEST_MATCH_CANDIDATE == candidate->m_candidate_type); + MatchResult result = NULL; assert(index < instance->m_match_results.size()); assert(results.get_result(index, result)); @@ -1919,9 +1925,16 @@ int pinyin_choose_candidate(pinyin_instance_t * instance, pinyin_context_t * context = instance->m_context; PhoneticKeyMatrix & matrix = instance->m_matrix; + ForwardPhoneticConstraints & constraints = instance->m_constraints; + NBestMatchResults & results = instance->m_match_results; - if (BEST_MATCH_CANDIDATE == candidate->m_candidate_type) + if (NBEST_MATCH_CANDIDATE == candidate->m_candidate_type) { + MatchResult best = NULL, other = NULL; + assert(results.get_result(0, best)); + assert(results.get_result(candidate->m_nbest_index, other)); + constraints.diff_result(best, other); return matrix.size() - 1; + } if (ADDON_CANDIDATE == candidate->m_candidate_type) { PhraseItem item; @@ -2048,6 +2061,12 @@ bool pinyin_train(pinyin_instance_t * instance, gint8 index){ PhoneticKeyMatrix & matrix = instance->m_matrix; NBestMatchResults & results = instance->m_match_results; + /* check the candidate type. */ + CandidateVector candidates = instance->m_candidates; + lookup_candidate_t * candidate = &g_array_index + (candidates, lookup_candidate_t, index); + assert(NBEST_MATCH_CANDIDATE == candidate->m_candidate_type); + context->m_modified = true; MatchResult result = NULL; -- cgit