Julius 4.1.5
|
00001 00018 /* 00019 * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University 00020 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00021 * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology 00022 * All rights reserved 00023 */ 00024 00025 #include <sent/stddefs.h> 00026 #include <sent/ngram2.h> 00027 00033 NGRAM_INFO * 00034 ngram_info_new() 00035 { 00036 NGRAM_INFO *new; 00037 00038 new = (NGRAM_INFO *)mymalloc(sizeof(NGRAM_INFO)); 00039 new->n = 0; 00040 new->d = NULL; 00041 new->bo_wt_1 = NULL; 00042 new->p_2 = NULL; 00043 new->bos_eos_swap = FALSE; 00044 00045 return(new); 00046 } 00047 00048 static void 00049 free_ngram_tuple(NGRAM_TUPLE_INFO *t) 00050 { 00051 if (t->is24bit) { 00052 if (t->bgn_upper) free(t->bgn_upper); 00053 if (t->bgn_lower) free(t->bgn_lower); 00054 } else { 00055 if (t->bgn) free(t->bgn); 00056 } 00057 if (t->num) free(t->num); 00058 if (t->nnid2wid) free(t->nnid2wid); 00059 free(t->prob); 00060 if (t->bo_wt) free(t->bo_wt); 00061 if (t->nnid2ctid_upper) free(t->nnid2ctid_upper); 00062 if (t->nnid2ctid_lower) free(t->nnid2ctid_lower); 00063 } 00069 void 00070 ngram_info_free(NGRAM_INFO *ndata) 00071 { 00072 int i; 00073 /* bin test only */ 00074 /* free word names */ 00075 if (ndata->from_bin) { 00076 free(ndata->wname[0]); 00077 free(ndata->wname); 00078 } else { 00079 WORD_ID w; 00080 for(w=0;w<ndata->max_word_num;w++) { 00081 free(ndata->wname[w]); 00082 } 00083 free(ndata->wname); 00084 } 00085 /* free 2-gram for the 1st pass */ 00086 if (ndata->bo_wt_1) free(ndata->bo_wt_1); 00087 if (ndata->p_2) free(ndata->p_2); 00088 /* free n-gram */ 00089 if (ndata->d) { 00090 for(i=0;i<ndata->n;i++) { 00091 free_ngram_tuple(&(ndata->d[i])); 00092 } 00093 free(ndata->d); 00094 } 00095 /* free name index tree */ 00096 free_ptree(ndata->root); 00097 /* free whole */ 00098 free(ndata); 00099 }