Julius 4.2
|
00001 00018 /* 00019 * Copyright (c) 1991-2011 Kawahara Lab., Kyoto University 00020 * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology 00021 * Copyright (c) 2005-2011 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 new->mroot = NULL; 00045 00046 return(new); 00047 } 00048 00049 static void 00050 free_ngram_tuple(NGRAM_TUPLE_INFO *t) 00051 { 00052 if (t->is24bit) { 00053 if (t->bgn_upper) free(t->bgn_upper); 00054 if (t->bgn_lower) free(t->bgn_lower); 00055 } else { 00056 if (t->bgn) free(t->bgn); 00057 } 00058 if (t->num) free(t->num); 00059 if (t->nnid2wid) free(t->nnid2wid); 00060 free(t->prob); 00061 if (t->bo_wt) free(t->bo_wt); 00062 if (t->nnid2ctid_upper) free(t->nnid2ctid_upper); 00063 if (t->nnid2ctid_lower) free(t->nnid2ctid_lower); 00064 } 00070 void 00071 ngram_info_free(NGRAM_INFO *ndata) 00072 { 00073 int i; 00074 /* bin test only */ 00075 /* free word names */ 00076 if (ndata->from_bin) { 00077 free(ndata->wname[0]); 00078 free(ndata->wname); 00079 } else { 00080 WORD_ID w; 00081 for(w=0;w<ndata->max_word_num;w++) { 00082 free(ndata->wname[w]); 00083 } 00084 free(ndata->wname); 00085 } 00086 /* free 2-gram for the 1st pass */ 00087 if (ndata->bo_wt_1) free(ndata->bo_wt_1); 00088 if (ndata->p_2) free(ndata->p_2); 00089 /* free n-gram */ 00090 if (ndata->d) { 00091 for(i=0;i<ndata->n;i++) { 00092 free_ngram_tuple(&(ndata->d[i])); 00093 } 00094 free(ndata->d); 00095 } 00096 /* free name index tree */ 00097 if (ndata->mroot) mybfree2(&(ndata->mroot)); 00098 /* free whole */ 00099 free(ndata); 00100 }