diff --git a/Files/fm1.txt b/Files/fm1.txt deleted file mode 100644 index cd1b0f49d25f624ac162a3faca1539ffe1ac7b8c..0000000000000000000000000000000000000000 --- a/Files/fm1.txt +++ /dev/null @@ -1 +0,0 @@ -feat_pos s1 diff --git a/Files/fm2.txt b/Files/fm2.txt deleted file mode 100644 index a17f75409717b3a79d96c653b3acfd207171a171..0000000000000000000000000000000000000000 --- a/Files/fm2.txt +++ /dev/null @@ -1,3 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s1 s2 diff --git a/Files/fm3.txt b/Files/fm3.txt deleted file mode 100644 index 78aa77381b018d72c19ac7dea05657da118d41ec..0000000000000000000000000000000000000000 --- a/Files/fm3.txt +++ /dev/null @@ -1,5 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s3 -feat_pos s1 s2 -feat_pos s1 s2 s3 diff --git a/Files/fm4.txt b/Files/fm4.txt deleted file mode 100644 index 281ac4d6ea5fa0b1303466f33ad20fae9b31a549..0000000000000000000000000000000000000000 --- a/Files/fm4.txt +++ /dev/null @@ -1,7 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s3 -feat_pos s4 -feat_pos s1 s2 -feat_pos s1 s2 s3 -feat_pos s1 s2 s3 s4 diff --git a/Files/fm5.txt b/Files/fm5.txt deleted file mode 100644 index 44aeee5b083a3e56b29b623b7168d51099fac063..0000000000000000000000000000000000000000 --- a/Files/fm5.txt +++ /dev/null @@ -1,9 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s3 -feat_pos s4 -feat_pos s5 -feat_pos s1 s2 -feat_pos s1 s2 s3 -feat_pos s1 s2 s3 s4 -feat_pos s1 s2 s3 s4 s5 diff --git a/Files/fm6.txt b/Files/fm6.txt deleted file mode 100644 index fce00f9152b7e5391d19960888392a024a66a312..0000000000000000000000000000000000000000 --- a/Files/fm6.txt +++ /dev/null @@ -1,11 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s3 -feat_pos s4 -feat_pos s5 -feat_pos s6 -feat_pos s1 s2 -feat_pos s1 s2 s3 -feat_pos s1 s2 s3 s4 -feat_pos s1 s2 s3 s4 s5 -feat_pos s1 s2 s3 s4 s5 s6 diff --git a/Files/fm7.txt b/Files/fm7.txt deleted file mode 100644 index 69e20c33f0ba97f11ef10f409354f9f2fb798a47..0000000000000000000000000000000000000000 --- a/Files/fm7.txt +++ /dev/null @@ -1,13 +0,0 @@ -feat_pos s1 -feat_pos s2 -feat_pos s3 -feat_pos s4 -feat_pos s5 -feat_pos s6 -feat_pos s7 -feat_pos s1 s2 -feat_pos s1 s2 s3 -feat_pos s1 s2 s3 s4 -feat_pos s1 s2 s3 s4 s5 -feat_pos s1 s2 s3 s4 s5 s6 -feat_pos s1 s2 s3 s4 s5 s6 s7 diff --git a/maca_morpho/src/fplm_fct.c b/maca_morpho/src/fplm_fct.c index fb8662638a9b5ad92375f65c43531c6adea0890e..2cdc9878cd3957fe90bd7b79a278aa07e6880b47 100644 --- a/maca_morpho/src/fplm_fct.c +++ b/maca_morpho/src/fplm_fct.c @@ -13,10 +13,10 @@ FPLM* new_fplm(void) void free_fplm(FPLM* fplm) { - free(fplm->form); - free(fplm->pos); - free(fplm->lemma); - free(fplm->morpho); + if(fplm->form != NULL) free(fplm->form); + if(fplm->pos != NULL) free(fplm->pos); + if(fplm->lemma != NULL) free(fplm->lemma); + if(fplm->morpho != NULL) free(fplm->morpho); free(fplm); } diff --git a/maca_morpho/src/maca_morpho_feat_fct.c b/maca_morpho/src/maca_morpho_feat_fct.c index 06d367f237075372c085ad9c308beb5bff51b94e..d78750ef0f37ed54271e48c11cfe377b081bc68d 100644 --- a/maca_morpho/src/maca_morpho_feat_fct.c +++ b/maca_morpho/src/maca_morpho_feat_fct.c @@ -165,6 +165,31 @@ int feat_pos(FPLM* fplm) return code; } +int lemma_s1(FPLM* fplm) +{ + char16* tmp = utf8tochar16(fplm->lemma); + int size = char16_strlen(tmp); + if(tmp == NULL || size - 1 < 0) + return -1; + return tmp[size - 1]; +} +int lemma_s2(FPLM* fplm) +{ + char16* tmp = utf8tochar16(fplm->lemma); + int size = char16_strlen(tmp); + if(tmp == NULL || size - 2 < 0) + return -1; + return tmp[size - 2]; +} +int lemma_s3(FPLM* fplm) +{ + char16* tmp = utf8tochar16(fplm->lemma); + int size = char16_strlen(tmp); + if(tmp == NULL || size - 3 < 0) + return -1; + return tmp[size - 3]; +} + feat_lib *feat_lib_build(void) { feat_lib *fl = feat_lib_new(); @@ -184,5 +209,8 @@ feat_lib *feat_lib_build(void) { feat_lib_add(fl, 1, (char *)"feat_number", feat_number); feat_lib_add(fl, 1, (char *)"feat_gender", feat_gender); feat_lib_add(fl, 1, (char *)"feat_tense", feat_tense); + feat_lib_add(fl, 1, (char *)"lemma_s1", lemma_s1); + feat_lib_add(fl, 1, (char *)"lemma_s2", lemma_s2); + feat_lib_add(fl, 1, (char *)"lemma_s3", lemma_s3); return fl; } diff --git a/maca_morpho/src/predict_fct.c b/maca_morpho/src/predict_fct.c index 105650f08fa5d2d058a902976e61dda6f68e84fb..dd759fc33b15578290a991083006944f0ed0e19b 100644 --- a/maca_morpho/src/predict_fct.c +++ b/maca_morpho/src/predict_fct.c @@ -347,7 +347,6 @@ void predict_target(context* ctx) char predict_name[50]; FPLM* fplm = new_fplm(); TARGET target; - FILE* tmp = fopen("../../Files/tmp.txt","w"); init_input_files(in_files, ctx->fplm_filename, ctx->code_class_filename, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); if(fscanf(in_files->code_class,"%s",target_name)!=1) { @@ -377,7 +376,6 @@ void predict_target(context* ctx) } continue; } - fprintf(tmp,"%s\t%s\t%s\t%s\n",fplm->form, fplm->pos, fplm->lemma, fplm->morpho); line_nb++; if(ctx->cascade) fprintf(out_files->new_fplm,"%s\t%s\t%s\t",fplm->form, fplm->pos, fplm->lemma); @@ -535,6 +533,9 @@ void predict_each_and_all_targets(context* ctx) } compare_morpho_predicted_and_real_morphos(in_files->all_real_morphos, out_files->morpho_predicted, line_nb); printf("Global success rate : %lf %%\n", 100-((float)global_error*100/line_nb)); + free_fplm(fplm); + free_input_files(in_files); + free_output_files(out_files); } void calculate_global_success_rate(context* ctx, Input_files* in_files, FILE* morpho_predicted, int* global_error, int* class_predicted_array,char* morpho)