#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<getopt.h> #include"context.h" #include"movement_parser.h" #include"oracle_parser.h" #include"feat_fct.h" #include"feature_table.h" #include"dico.h" #include"beam.h" #include"simple_decoder_parser.h" /*#include"dnn_decoder.h"*/ #include"config2feat_vec.h" void decode_help_message(context *ctx) { context_general_help_message(ctx); context_beam_help_message(ctx); context_conll_help_message(ctx); fprintf(stderr, "INPUT\n"); context_input_help_message(ctx); context_mcd_help_message(ctx); context_model_help_message(ctx); context_vocabs_help_message(ctx); context_features_model_help_message(ctx); context_root_label_help_message(ctx); } void decode_check_options(context *ctx){ if(ctx->help /*!ctx->conll_filename*/ /* || !ctx->perc_model_filename || !ctx->mcd_filename || !ctx->vocabs_filename || !ctx->features_model_filename*/ ){ decode_help_message(ctx); exit(1); } } void set_linguistic_resources_filenames_parser(context *ctx) { char absolute_path[500]; char absolute_filename[500]; absolute_path[0] = '\0'; if(ctx->maca_data_path) strcat(absolute_path, ctx->maca_data_path); else strcat(absolute_path, getenv("MACAON_DIR")); strcat(absolute_path, "/"); strcat(absolute_path, ctx->language); strcat(absolute_path, "/bin/"); if(!ctx->perc_model_filename){ strcpy(absolute_filename, absolute_path); strcat(absolute_filename, DEFAULT_MODEL_FILENAME); ctx->perc_model_filename = strdup(absolute_filename); } if(!ctx->vocabs_filename){ strcpy(absolute_filename, absolute_path); strcat(absolute_filename, DEFAULT_VOCABS_FILENAME); ctx->vocabs_filename = strdup(absolute_filename); } /* if(!ctx->mcd_filename){ strcpy(absolute_filename, absolute_path); strcat(absolute_filename, DEFAULT_MULTI_COL_DESC_FILENAME); ctx->mcd_filename = strdup(absolute_filename); }*/ if(!ctx->features_model_filename){ strcpy(absolute_filename, absolute_path); strcat(absolute_filename, DEFAULT_FEATURES_MODEL_FILENAME); ctx->features_model_filename = strdup(absolute_filename); } if(ctx->verbose){ fprintf(stderr, "perc_model_filename = %s\n", ctx->perc_model_filename); fprintf(stderr, "vocabs_filename = %s\n", ctx->vocabs_filename); fprintf(stderr, "mcd_filename = %s\n", ctx->mcd_filename); fprintf(stderr, "perc_features_model_filename = %s\n", ctx->features_model_filename); } } int main(int argc, char *argv[]) { context *ctx; ctx = context_read_options(argc, argv); decode_check_options(ctx); set_linguistic_resources_filenames_parser(ctx); ctx->features_model = feat_model_read(ctx->features_model_filename, ctx->verbose); ctx->vocabs = dico_vec_read(ctx->vocabs_filename, ctx->hash_ratio); mcd_link_to_dico(ctx->mcd_struct, ctx->vocabs, ctx->verbose); ctx->dico_labels = dico_vec_get_dico(ctx->vocabs, (char *)"LABEL"); if(ctx->dico_labels == NULL){ fprintf(stderr, "cannot find label names\n"); return 1; } ctx->mvt_nb = ctx->dico_labels->nbelem * 2 + 1; /* load models */ ctx->d_perceptron_features = dico_vec_get_dico(ctx->vocabs, (char *)"d_perceptron_features"); if(ctx->beam_width == 1){ simple_decoder(ctx); } /* else beam_decoder(conll_file, ctx->mcd_struct, ctx->d_perceptron_features, ctx->dico_labels, ft, ctx->features_model, ctx->verbose, root_label, ctx->beam_width, ctx->mvt_nb); }*/ context_free(ctx); return 0; }