diff --git a/maca_trans_parser/src/simple_decoder_parser_arc_eager.c b/maca_trans_parser/src/simple_decoder_parser_arc_eager.c index 24e0bb816ccde999dea763734451c0ebd682b727..bd7eb7062aea36c8da7f3d56ac9c0cb9fc4f8fc9 100644 --- a/maca_trans_parser/src/simple_decoder_parser_arc_eager.c +++ b/maca_trans_parser/src/simple_decoder_parser_arc_eager.c @@ -155,6 +155,7 @@ void simple_decoder_parser_arc_eager(context *ctx) double currentSumExp; double ScoreTranslation; int FlagNotInitExp; + double ProbaDivider = 10; // TO SETUP word* word_scored; @@ -166,7 +167,7 @@ void simple_decoder_parser_arc_eager(context *ctx) sumExp = 0; currentSumExp = 0; - ScoreTranslation = -10; + ScoreTranslation = -10; // TO SETUP FlagNotInitExp = 1; if(ctx->debug_mode){ @@ -200,21 +201,18 @@ void simple_decoder_parser_arc_eager(context *ctx) int b3 = respect_buffer_constraint(ctx->partial_mode, c, movement_parser_type(vcode_array[i].class_code), movement_parser_label(vcode_array[i].class_code)); if(b1 && b2 && b3){ - printf("\n*** %f %f %d %f \n",ScoreTranslation,vcode_array[i].score, i, sumExp); if(FlagNotInitExp){ - printf(" %f %f %d $$$$$$\n",ScoreTranslation,vcode_array[i].score, i); - ScoreTranslation += vcode_array[i].score; - printf(" %f $$$$$$\n" ,ScoreTranslation); + ScoreTranslation += vcode_array[i].score/ProbaDivider; FlagNotInitExp = 0; } - if(vcode_array[i].score - ScoreTranslation > 0){ - sumExp += exp(vcode_array[i].score - ScoreTranslation); + if(vcode_array[i].score/ProbaDivider - ScoreTranslation > 0){ + sumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); } } } currentSumExp = 0.; - for(int i=0; i < ft->classes_nb && i < 1000; i++){ + for(int i=0; i < ft->classes_nb && i < 10; i++){ printf("%d\t", i); movement_parser_print(stdout, vcode_array[i].class_code, ctx->dico_labels); printf("\t%.4f", vcode_array[i].score); @@ -223,10 +221,10 @@ void simple_decoder_parser_arc_eager(context *ctx) int b2 = respect_stack_constraint(ctx->partial_mode, c, movement_parser_type(vcode_array[i].class_code), movement_parser_label(vcode_array[i].class_code)); int b3 = respect_buffer_constraint(ctx->partial_mode, c, movement_parser_type(vcode_array[i].class_code), movement_parser_label(vcode_array[i].class_code)); if(b1 && b2 && b3){ - if(vcode_array[i].score - ScoreTranslation > 0){ + if(vcode_array[i].score/ProbaDivider - ScoreTranslation > 0){ printf(" %f %f %f",sumExp, currentSumExp,ScoreTranslation); printf(" [%f-",currentSumExp/sumExp); - currentSumExp += exp(vcode_array[i].score - ScoreTranslation); + currentSumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); printf("%f[", currentSumExp/sumExp); } printf("\t<----");