14 using namespace shogun;
20 "CImplicitWeightedSpecFeatures()",
"\n");
89 for (int32_t i=0; i<
degree; i++)
95 num_strings(orig.num_strings),
96 alphabet_size(orig.alphabet_size), spec_size(orig.spec_size)
124 uint16_t* vec2=sf->strings->get_feature_vector(vec_idx2, len2, free_vec2);
129 for (int32_t d=0; d<
degree; d++)
131 mask = mask | (1 << (degree-d-1));
138 while (left_idx < len1 && right_idx < len2)
140 uint16_t lsym=vec1[left_idx] & masked;
141 uint16_t rsym=vec2[right_idx] & masked;
145 int32_t old_left_idx=left_idx;
146 int32_t old_right_idx=right_idx;
148 while (left_idx<len1 && (vec1[left_idx] & masked) ==lsym)
151 while (right_idx<len2 && (vec2[right_idx] & masked) ==lsym)
154 result+=weight*(left_idx-old_left_idx)*(right_idx-old_right_idx);
164 sf->strings->free_feature_vector(vec2, vec_idx2, free_vec2);
184 for (int32_t j=0; j<len1; j++)
190 for (int32_t d=0; d<
degree; d++)
192 mask = mask | (1 << (degree-d-1));
222 for (int32_t j=0; j<len1; j++)
226 for (int32_t d=0; d<
degree; d++)
228 mask = mask | (1 << (degree-d-1));
257 SG_ERROR(
"Index out of bounds (number of strings %d, you "
261 wspec_feature_iterator* it=SG_MALLOC(wspec_feature_iterator, 1);
263 it->vidx=vector_index;
276 wspec_feature_iterator* it=(wspec_feature_iterator*) iterator;
280 if (it->j < it->vlen-1)
293 it->mask = it->mask | (1 << (
degree-d-1));
297 index=it->offs + idx;
307 wspec_feature_iterator* it=(wspec_feature_iterator*) iterator;
320 for (int32_t i=1; i<=
degree; i++)