summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2017-02-09 16:02:45 +0800
committerPeng Wu <alexepico@gmail.com>2017-02-09 16:02:45 +0800
commit9f413b389d5a59b01bfe53455e37643d0a15ed6c (patch)
tree74b634d3df26f3b9a5c28fad32d504a2191aba4e
parent915bbf4b2719d4d4829a318e92538fd10e59a395 (diff)
downloadlibpinyin-9f413b389d5a59b01bfe53455e37643d0a15ed6c.tar.gz
libpinyin-9f413b389d5a59b01bfe53455e37643d0a15ed6c.tar.xz
libpinyin-9f413b389d5a59b01bfe53455e37643d0a15ed6c.zip
update pinyin_get_sentence and pinyin_train function
-rw-r--r--src/lookup/phonetic_lookup.cpp2
-rw-r--r--src/pinyin.cpp21
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;