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 e3a3dfbf61df10f4512f66a098455a0cb7bb47f4..b675300fa81c879c7eb9015e0a774b00b86a6e61 100644 --- a/maca_trans_parser/src/simple_decoder_parser_arc_eager.c +++ b/maca_trans_parser/src/simple_decoder_parser_arc_eager.c @@ -170,7 +170,7 @@ void simple_decoder_parser_arc_eager(context *ctx) double currentSumExp; double ScoreTranslation; int FlagNotInitExp; - double ProbaDivider = 100; // TO SETUP + // double ProbaDivider = 100; // TO SETUP double randomFloat; srand(mix(clock(), time(NULL), getpid())); @@ -186,7 +186,7 @@ void simple_decoder_parser_arc_eager(context *ctx) sumExp = 0; currentSumExp = 0; - ScoreTranslation = -10; // TO SETUP + ScoreTranslation = -60; // TO SETUP FlagNotInitExp = 1; if(ctx->debug_mode){ @@ -224,8 +224,9 @@ void simple_decoder_parser_arc_eager(context *ctx) ScoreTranslation += vcode_array[i].score/ProbaDivider; FlagNotInitExp = 0; } - if(vcode_array[i].score/ProbaDivider - ScoreTranslation > 0){ - sumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); +// if(vcode_array[i].score/ProbaDivider - ScoreTranslation > 0){ + if(vcode_array[i].score - ScoreTranslation > 0){ + sumExp += exp(ScoreTranslation - vcode_array[i].score ); } } } @@ -240,10 +241,11 @@ 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/ProbaDivider - ScoreTranslation > 0){ + // if(vcode_array[i].score/ProbaDivider - ScoreTranslation > 0){ + if(vcode_array[i].score - ScoreTranslation > 0){ printf(" %f %f %f",sumExp, currentSumExp,ScoreTranslation); printf(" [%f-",currentSumExp/sumExp); - currentSumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); + currentSumExp += exp(ScoreTranslation - vcode_array[i].score); printf("%f[", currentSumExp/sumExp); } printf("\t<----"); @@ -283,7 +285,8 @@ 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){ - currentSumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); + // currentSumExp += exp(vcode_array[i].score/ProbaDivider - ScoreTranslation); + currentSumExp += exp(ScoreTranslation - vcode_array[i].score); if(currentSumExp/sumExp >= randomFloat){ printf("The %d th move has been selected by the probabilistic parser.\n",i); mvt_code = vcode_array[i].class_code;