Skip to content
Snippets Groups Projects
Commit 1a95c2ff authored by Alexis Nasr's avatar Alexis Nasr
Browse files

did a horrible hack in parser to take car of sentences without ending punctuation

parent cc969704
No related branches found
No related tags found
No related merge requests found
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#define word_set_cpos(w, val) (w)->wf_array[MCD_WF_CPOS] = (val) #define word_set_cpos(w, val) (w)->wf_array[MCD_WF_CPOS] = (val)
#define word_set_pos(w, val) (w)->wf_array[MCD_WF_POS] = (val) #define word_set_pos(w, val) (w)->wf_array[MCD_WF_POS] = (val)
#define word_set_feats(w, val) (w)->wf_array[MCD_WF_FEATS] = (val) #define word_set_feats(w, val) (w)->wf_array[MCD_WF_FEATS] = (val)
#define word_set_gov(w, val) (w)->wf_array[MCD_WF_GOV] = (val) #define word_set_gov(w, val) ((w)->wf_array[MCD_WF_GOV] = (val))
#define word_set_label(w, val) (w)->wf_array[MCD_WF_LABEL] = (val) #define word_set_label(w, val) (w)->wf_array[MCD_WF_LABEL] = (val)
#define word_set_stag(w, val) (w)->wf_array[MCD_WF_STAG] = (val) #define word_set_stag(w, val) (w)->wf_array[MCD_WF_STAG] = (val)
#define word_set_sent_seg(w, val) (w)->wf_array[MCD_WF_SENT_SEG] = (val) #define word_set_sent_seg(w, val) (w)->wf_array[MCD_WF_SENT_SEG] = (val)
......
...@@ -70,6 +70,7 @@ int movement_left_arc_undo(config *c) ...@@ -70,6 +70,7 @@ int movement_left_arc_undo(config *c)
int movement_right_arc(config *c, int movement_code, int label) int movement_right_arc(config *c, int movement_code, int label)
{ {
if(stack_is_empty(config_get_stack(c))) return 0; if(stack_is_empty(config_get_stack(c))) return 0;
if(word_buffer_end(config_get_buffer(c))) return 0;
word *gov = stack_top(config_get_stack(c)); word *gov = stack_top(config_get_stack(c));
word *dep = word_buffer_b0(config_get_buffer(c)); word *dep = word_buffer_b0(config_get_buffer(c));
...@@ -140,8 +141,8 @@ int movement_reduce_undo(config *c) ...@@ -140,8 +141,8 @@ int movement_reduce_undo(config *c)
int movement_root(config *c, int movement_code, int root_code) int movement_root(config *c, int movement_code, int root_code)
{ {
if(stack_is_empty(config_get_stack(c))) return 0;
word *s0 = stack_top(config_get_stack(c)); word *s0 = stack_top(config_get_stack(c));
if(s0 == NULL) return 0;
word_set_gov(s0, 0); word_set_gov(s0, 0);
word_set_label(s0, root_code); word_set_label(s0, root_code);
s0->is_root = 1; s0->is_root = 1;
......
...@@ -60,6 +60,20 @@ void simple_decoder_parser_arc_eager(context *ctx) ...@@ -60,6 +60,20 @@ void simple_decoder_parser_arc_eager(context *ctx)
mvt_type = movement_parser_type(mvt_code); mvt_type = movement_parser_type(mvt_code);
mvt_label = movement_parser_label(mvt_code); mvt_label = movement_parser_label(mvt_code);
if(ctx->debug_mode){
fprintf(stdout, "***********************************\n");
config_print(stdout, c);
vcode *vcode_array = feature_table_get_vcode_array(fv, ft);
for(int i=0; i < 5; i++){
printf("%d\t", i);
movement_parser_print(stdout, vcode_array[i].class_code, ctx->dico_labels);
printf("\t%.4f\n", vcode_array[i].score);
}
free(vcode_array);
}
if(ctx->trace_mode){ if(ctx->trace_mode){
index = word_get_index(word_buffer_b0(config_get_buffer(c))); index = word_get_index(word_buffer_b0(config_get_buffer(c)));
fprintf(stdout, "%d\t", index); fprintf(stdout, "%d\t", index);
...@@ -103,6 +117,14 @@ void simple_decoder_parser_arc_eager(context *ctx) ...@@ -103,6 +117,14 @@ void simple_decoder_parser_arc_eager(context *ctx)
} }
} }
/* horrible hack */
if(stack_nbelem(config_get_stack(c)) && (stack_top(config_get_stack(c)) == NULL))
stack_pop(config_get_stack(c));
while(!stack_is_empty(config_get_stack(c)) && (stack_top(config_get_stack(c)) != NULL))
movement_parser_root(c, root_label);
/* end of horrible hack */
if(!ctx->trace_mode) if(!ctx->trace_mode)
print_word_buffer(c, ctx->dico_labels); print_word_buffer(c, ctx->dico_labels);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment