summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2010-11-09 12:50:01 +0800
committerPeng Wu <alexepico@gmail.com>2010-11-09 12:50:01 +0800
commitb4785a45c0d83fbba1e652b483a42363f3c6cccf (patch)
treedf15da2fd712db7a3ead7714f91f95f30b513978
parent33d4a4dba293513531d8b4734b7e1053bc30f1e8 (diff)
downloadlibpinyin-b4785a45c0d83fbba1e652b483a42363f3c6cccf.tar.gz
libpinyin-b4785a45c0d83fbba1e652b483a42363f3c6cccf.tar.xz
libpinyin-b4785a45c0d83fbba1e652b483a42363f3c6cccf.zip
fixes a bug in phrase lookup
-rw-r--r--src/lookup/phrase_lookup.cpp14
-rw-r--r--utils/segment/ngseg.cpp9
2 files changed, 16 insertions, 7 deletions
diff --git a/src/lookup/phrase_lookup.cpp b/src/lookup/phrase_lookup.cpp
index e3bf2d9..86c9077 100644
--- a/src/lookup/phrase_lookup.cpp
+++ b/src/lookup/phrase_lookup.cpp
@@ -104,7 +104,7 @@ bool PhraseLookup::search_unigram(int nstep, phrase_token_t token){
lookup_value_t * max_value = &g_array_index(lookup_content, lookup_value_t, 0);
/* find the maximum node */
- for ( size_t i = 1; i < m_steps_content->len; ++i ){
+ for ( size_t i = 1; i < lookup_content->len; ++i ){
lookup_value_t * cur_value = &g_array_index(lookup_content, lookup_value_t, i);
if ( cur_value->m_poss > max_value->m_poss )
max_value = cur_value;
@@ -217,20 +217,20 @@ bool PhraseLookup::save_next_step(int next_step_pos, lookup_value_t * cur_value,
bool PhraseLookup::final_step(MatchResults & results ){
//reset results
g_array_set_size(results, m_steps_content->len);
- for ( size_t i = 0; i < m_steps_content->len; ++i ){
+ for ( size_t i = 0; i < results->len; ++i ){
phrase_token_t * token = &g_array_index(results, phrase_token_t, i);
*token = null_token;
}
//find max element
size_t last_step_pos = m_steps_content->len - 1;
- GArray * last_step_array = (GArray *) g_ptr_array_index(m_steps_content, last_step_pos);
- if ( last_step_array->len == 0 )
+ GArray * last_step_content = (GArray *) g_ptr_array_index(m_steps_content, last_step_pos);
+ if ( last_step_content->len == 0 )
return false;
- lookup_value_t * max_value = &g_array_index(last_step_array, lookup_value_t, 0);
- for ( size_t i = 1; i < last_step_array->len; ++i ){
- lookup_value_t * cur_value = &g_array_index(last_step_array, lookup_value_t, i);
+ lookup_value_t * max_value = &g_array_index(last_step_content, lookup_value_t, 0);
+ for ( size_t i = 1; i < last_step_content->len; ++i ){
+ lookup_value_t * cur_value = &g_array_index(last_step_content, lookup_value_t, i);
if ( cur_value->m_poss > max_value->m_poss )
max_value = cur_value;
}
diff --git a/utils/segment/ngseg.cpp b/utils/segment/ngseg.cpp
index dd8a704..ccb88d7 100644
--- a/utils/segment/ngseg.cpp
+++ b/utils/segment/ngseg.cpp
@@ -57,6 +57,15 @@ bool deal_with_segmentable(GArray * current_utf16){
char * result_string = NULL;
MatchResults results = g_array_new(FALSE, FALSE, sizeof(phrase_token_t));
g_phrase_lookup->get_best_match(current_utf16->len, (utf16_t *) current_utf16->data, results);
+#if 0
+ for ( size_t i = 0; i < results->len; ++i) {
+ phrase_token_t * token = &g_array_index(results, phrase_token_t, i);
+ if ( *token == null_token )
+ continue;
+ printf("%d:%d\t", i, *token);
+ }
+ printf("\n");
+#endif
g_phrase_lookup->convert_to_utf8(results, "\n", result_string);
printf("%s\n", result_string);
g_array_free(results, TRUE);