Skip to content
Snippets Groups Projects
Select Git revision
  • 1b0ec83f16e46440df19ff4294260b9d65b32f75
  • master default protected
  • johannes
  • partial_parser
  • Aloui_Dary
  • ignore_punct
  • AC
  • classifier
  • fixhelp
  • libmacaon2
  • error_predictor
  • morpho
  • ssrnn
  • tfparsing
  • silvio
  • tagger_options
  • maca_trans_frame_parser
  • alexis
  • new_config
  • tagparse
  • maca_graph_parser
21 results

fplm2cff.c

Blame
  • user avatar
    Alexis Nasr authored
    1b0ec83f
    History
    fplm2cff.c 1.73 KiB
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #include "context.h"
    #include "feat_model.h"
    #include "feat_vec.h"
    #include "dico.h"
    #include "util.h"
    
    #define LOOKUP_MODE 1
    #define TRAIN_MODE 2
    
    int get_feat_value(feat_model *fm, char *form, dico *dico_features, int feat_nb, int mode)
    {
      feat_desc *fd = fm->array[feat_nb];
      int i;
      int feat_val;
      char str[10];
    
      /*  the name of the feature is built in fm->string and its value in the dictionnary (dico_features) is returned */
      fm->string[0] = '\0';
      for(i=0; i < fd->nbelem; i++){
        strcat(fm->string, fd->array[i]->name);
        feat_val = fd->array[i]->fct(form);
        sprintf(str, "%d", feat_val);
        strcat(fm->string, str);
    
        /* catenate_int(fm->string, feat_val); */
      }
      if(mode == LOOKUP_MODE){
        if(fm->string)
        return dico_string2int(dico_features, fm->string);
      } 
      return dico_add(dico_features, fm->string);
    }
    
    
    feat_vec *form2fv(char *form, feat_vec *fv, feat_model *fm, dico *dico_features)
    {
      int i;
      feat_vec_empty(fv);
      for(i=0; i < fm->nbelem; i++)
        feat_vec_add(fv, get_feat_value(fm, form, dico_features, i, TRAIN_MODE));
      return fv;
    }
    
    
    int main(int argc, char *argv[])
    {
      context *ctx = context_read_options(argc, argv);
      feat_vec *fv = feat_vec_new(10);
      dico *dico_features = dico_new("dico_features", 1000);
      feat_model *fm = feat_model_read(ctx->fm_filename, feat_lib_build(), ctx->verbose); 
      char form[100];
      while(strcmp(form, "end")){
        fscanf(stdin, "%s", form);
        printf("form = %s\n", form);
        form2fv(form, fv, fm, dico_features);
    /* void      feat_vec_print_string(feat_vec *fv, dico *dico_features); */
        feat_vec_print(stdout, fv);
      }
      /* dico_print_fh(stdout, dico_features); */
      dico_print("xx", dico_features);
    
    
      
    }