diff --git a/CMakeLists.txt b/CMakeLists.txt index cf3f0d2370576c9bbe83851a3d2f14f3a5e99ee0..9c1ade7f2970596a6570c05ac52ae522064d6035 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,10 @@ SET(CMAKE_C_COMPILER g++) SET(CMAKE_CXX_COMPILER g++) +SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -DUSE_CBLAS") +SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm -lopenblas" ) + + if (${CMAKE_C_COMPILER_VERSION} VERSION_LESS 5.3) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11") # better, but needs CMake >= 3.0 diff --git a/maca_trans_parser/src/context.h b/maca_trans_parser/src/context.h index a204a3e36deb03cd71c1d51b8fa81f16ab3996e2..752d7604488818ef4a6aa109065c88317ebbfa0a 100644 --- a/maca_trans_parser/src/context.h +++ b/maca_trans_parser/src/context.h @@ -24,6 +24,14 @@ #define DEFAULT_VOCABS_TAGPARSER_FILENAME "maca_trans_tagparser.vocab" #define DEFAULT_MODEL_TAGPARSER_FILENAME "maca_trans_tagparser.model" +#define DEFAULT_MULTI_COL_DESC_PARSER_NN_FILENAME "maca_trans_parser_nn.mcd" +#define DEFAULT_FEATURES_MODEL_PARSER_NN_FILENAME "maca_trans_parser_nn.fm" +#define DEFAULT_VOCABS_PARSER_NN_FILENAME "maca_trans_parser_nn.vocab" +#define DEFAULT_MODEL_PARSER_NN_FILENAME "maca_trans_parser_nn.weights" +#define DEFAULT_JSON_PARSER_NN_FILENAME "maca_trans_parser_nn.json" + + + #define DEFAULT_F2P_FILENAME "fP" #define DEFAULT_FPLM_FILENAME "fplm" diff --git a/maca_trans_parser/src/maca_trans_parser_nn.cc b/maca_trans_parser/src/maca_trans_parser_nn.cc index 89322ea78045642ecef37ca8ace8b82744290728..61e9786086e049dfc48d6bb8c4270f02a7a82a26 100644 --- a/maca_trans_parser/src/maca_trans_parser_nn.cc +++ b/maca_trans_parser/src/maca_trans_parser_nn.cc @@ -44,41 +44,40 @@ void maca_trans_parser_nn_check_options(context *ctx){ } } - - void set_linguistic_resources_filenames_parser(context *ctx) { char absolute_filename[500]; - if(!ctx->perc_model_filename){ + if(!ctx->dnn_model_filename){ strcpy(absolute_filename, ctx->maca_data_path); - strcat(absolute_filename, DEFAULT_MODEL_FILENAME); - ctx->perc_model_filename = strdup(absolute_filename); + strcat(absolute_filename, DEFAULT_MODEL_PARSER_NN_FILENAME); + ctx->dnn_model_filename = strdup(absolute_filename); } - if(!ctx->vocabs_filename){ + if(!ctx->json_filename){ strcpy(absolute_filename, ctx->maca_data_path); - strcat(absolute_filename, DEFAULT_VOCABS_FILENAME); - ctx->vocabs_filename = strdup(absolute_filename); + strcat(absolute_filename, DEFAULT_JSON_PARSER_NN_FILENAME); + ctx->json_filename = strdup(absolute_filename); } - /* if(!ctx->mcd_filename){ + if(!ctx->vocabs_filename){ strcpy(absolute_filename, ctx->maca_data_path); - strcat(absolute_filename, DEFAULT_MULTI_COL_DESC_FILENAME); - ctx->mcd_filename = strdup(absolute_filename); - }*/ + strcat(absolute_filename, DEFAULT_VOCABS_PARSER_NN_FILENAME); + ctx->vocabs_filename = strdup(absolute_filename); + } if(!ctx->features_model_filename){ strcpy(absolute_filename, ctx->maca_data_path); - strcat(absolute_filename, DEFAULT_FEATURES_MODEL_FILENAME); + strcat(absolute_filename, DEFAULT_FEATURES_MODEL_PARSER_NN_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); + fprintf(stderr, "dnn_model = %s\n", ctx->dnn_model_filename); + fprintf(stderr, "json = %s\n", ctx->json_filename); + fprintf(stderr, "vocabs %s\n", ctx->vocabs_filename); + fprintf(stderr, "mcd = %s\n", ctx->mcd_filename); + fprintf(stderr, "features_model = %s\n", ctx->features_model_filename); } } @@ -184,16 +183,15 @@ std::vector<Matrix<float> > config2keras_vec(feat_model *fm, config *c) void simple_decoder_parser_arc_eager_nn(context *ctx, Model &model) { FILE *f = (ctx->input_filename)? myfopen(ctx->input_filename, "r") : stdin; - feature_table *ft = feature_table_load(ctx->perc_model_filename, ctx->verbose); + // feature_table *ft = feature_table_load(ctx->perc_model_filename, ctx->verbose); int root_label; int mvt_code; int mvt_type; int mvt_label; - feat_vec *fv = feat_vec_new(10); config *c = NULL; int result; std::vector<Matrix<float> > keras_vec; - + int sentence_nb = 0; root_label = dico_string2int(ctx->dico_labels, ctx->root_label); if(root_label == -1) root_label = 0; @@ -223,11 +221,7 @@ void simple_decoder_parser_arc_eager_nn(context *ctx, Model &model) Matrix<float> argmax = y[0].argmax(); mvt_code = argmax.at(0, 0); - // printf("mvt code = %d\n", mvt_code); - - /* config2feat_vec_cff(ctx->features_model, c, ctx->d_perceptron_features, fv, LOOKUP_MODE); */ - /* mvt_code = feature_table_argmax(fv, ft, &max); */ - + // fprintf(stderr,"mvt code = %d\n", mvt_code); mvt_type = movement_parser_type(mvt_code); mvt_label = movement_parser_label(mvt_code); @@ -247,6 +241,9 @@ void simple_decoder_parser_arc_eager_nn(context *ctx, Model &model) break; case MVT_PARSER_EOS: result = movement_parser_eos(c); + sentence_nb++; + if((sentence_nb % 2) == 0) + fprintf(stderr, "\rsentence %d", sentence_nb); break; case MVT_PARSER_SHIFT: result = movement_parser_shift(c); @@ -262,14 +259,12 @@ void simple_decoder_parser_arc_eager_nn(context *ctx, Model &model) } } } + } - - if(!ctx->trace_mode) - print_word_buffer(c, ctx->dico_labels, ctx->mcd_struct); + fprintf(stderr, "\n"); + print_word_buffer(c, ctx->dico_labels, ctx->mcd_struct); config_free(c); - feat_vec_free(fv); - feature_table_free(ft); if(ctx->input_filename) fclose(f); } @@ -297,10 +292,9 @@ int main(int argc, char *argv[]) fprintf(stderr, "cannot find label names\n"); return 1; } - simple_decoder_parser_arc_eager_nn(ctx, model); - context_free(ctx); + // context_free(ctx); return 0; }