diff options
Diffstat (limited to 'sourcecodes/k-best/src/ls_XIC.c')
| -rw-r--r-- | sourcecodes/k-best/src/ls_XIC.c | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/sourcecodes/k-best/src/ls_XIC.c b/sourcecodes/k-best/src/ls_XIC.c deleted file mode 100644 index 22d51d04..00000000 --- a/sourcecodes/k-best/src/ls_XIC.c +++ /dev/null @@ -1,82 +0,0 @@ -#include <math.h> -#include <string.h> -#include "get_local_scores.h" -#include "ilogi.h" -#include "ls_XIC.h" - -extern int* nof_vals; -extern int N; - -static int bic = 0; - -#define BIG_XIC_DATA (1<<16) - -/* XIC = log(ML) - 0.5*nof_params*log(n) */ - -score_t big_xic_score(int i, varset_t psi, int nof_freqs){ - - int vc_v = nof_vals[i]; - score_t pcc = get_nof_cfgs(psi); - score_t nof_params = pcc * (vc_v-1); - int* freqp = freqmem; - int* end_freqp = freqp + nof_freqs * vc_v; - - score_t res = bic ? (-0.5 * nof_params * log(N)) : nof_params; - - for(;freqp < end_freqp; freqp += vc_v) { - int pcfreq = 0; - int v; - for(v = 0; v<vc_v; ++v) { - int freq = freqp[v]; - if (freq) { - pcfreq += freq; - res += (freq < BIG_XIC_DATA) ? ilogi[freq] : freq * log(freq); - } - } - res -= (pcfreq < BIG_XIC_DATA) ? ilogi[pcfreq] : pcfreq * log(pcfreq); - } - - return res; -} - -score_t xic_score(int i, varset_t psi, int nof_freqs){ - - int vc_v = nof_vals[i]; - score_t pcc = get_nof_cfgs(psi); - score_t nof_params = pcc * (vc_v-1); - int* freqp = freqmem; - int* end_freqp = freqp + nof_freqs * vc_v; - - score_t res = bic ? (-0.5 * nof_params * log(N)) : -nof_params; - - for(;freqp < end_freqp; freqp += vc_v) { - int pcfreq = 0; - int v; - for(v = 0; v<vc_v; ++v) { - int freq = freqp[v]; - if (freq) { - pcfreq += freq; - res += ilogi[freq]; - } - } - res -= ilogi[pcfreq]; - } - - return res; -} - -scorefun init_XIC_scorer(char* essarg){ - bic = strncmp(essarg,"BIC", 3) == 0; - - if (N<BIG_XIC_DATA){ - ensure_ilogi(N); - return xic_score; - } else { - ensure_ilogi(BIG_XIC_DATA); - return big_xic_score; - } -} - -void free_XIC_scorer(){ - free_ilogi(); -} |
