00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "idngram2lm.h"
00022
00023 unsigned short num_of_types(int k,
00024 int ind,
00025 ng_t *ng) {
00026
00027 int start;
00028 int end;
00029
00030 start = get_full_index(ng->ind[k][ind],
00031 ng->ptr_table[k],
00032 ng->ptr_table_size[k],
00033 ind);
00034
00035 if (k>0) {
00036
00037 if (ind < (ng->num_kgrams[k]-1)) {
00038
00039 end = get_full_index(ng->ind[k][ind+1],
00040 ng->ptr_table[k],
00041 ng->ptr_table_size[k],
00042 ind+1);
00043 }
00044
00045 else {
00046
00047 end = ng->num_kgrams[k+1];
00048
00049 }
00050
00051 }
00052 else {
00053 if (ind < ng->vocab_size) {
00054 end = get_full_index(ng->ind[k][ind+1],
00055 ng->ptr_table[k],
00056 ng->ptr_table_size[k],
00057 ind+1);
00058 }
00059
00060 else {
00061
00062 end = ng->num_kgrams[k+1];
00063
00064 }
00065 }
00066
00067 return(end-start);
00068
00069 }