#include #include #include "../lib/iotools.h" #define _CMDLINE_FILE "../gue/cmdline.h" #define CONFIGFILE1 "/home/ynka/utt/utt-0.9/conf/gue.conf" #define CONFIGFILE2 "/home/ynka/utt/utt-0.9/conf/gue.conf" #include "../common/common.h" #include "common_guess.h" #include "guess.h" #include "cmdline.h" #define W_SUFF 0.6 #define W_PREF 0.4 int main(int argc, char** argv) { // int non_standard_config=0; gengetopt_args_info args; if(cmdline_parser(argc, argv, &args) != 0) exit(1); process_config_files(&args,argv[0]); process_common_options(&args,argv[0]); process_guess_options(&args); // PONIŻEJ POPRZEDNI KOD (JUSTYNY) // //preliminary command-line parsing - for configuration file info only // gengetopt_args_info pre_args; // if (cmdline_parser(argc, argv, &pre_args) != 0) // exit(1); // if(pre_args.config_given){ // printf("podano config: %s\n",pre_args.config_arg); // non_standard_config=1; // } // //configuration file 1 parsing // struct cmdline_parser_params *params; // params = cmdline_parser_params_init(); // params->initialize = 1; // if(cmdline_parser_config_file(CONFIGFILE1,&args, params)!=0){ // printf("System-wide configuration file parsing error!\n"); // exit(1); // } // //configuration file 2 parsing-overriding // params->initialize=0; // params->override=1; // char* config2=(non_standard_config)?pre_args.config_arg:CONFIGFILE2; // if(cmdline_parser_config_file(config2,&args, params)!=0){ // printf("User configuration file parsing error!\n"); // return 1; // } // params->initialize=0; // params->override=1; // //params->check_required=1; // free(params); // //command-line options parsing-overriding // if (cmdline_parser(argc, argv, &args) != 0) // exit(1); char line[MAX_LINE]; char outline[MAX_LINE]; char parms[MAX_LINE], desc[MAX_LINE], lemma[MAX_LINE]; long line_count = 0; Guess guess(dictionary); int words_count=0; time_t start_time = time(NULL); // Segment seg; Words tab; while (fgets(line, MAX_LINE, inputf)) { line_count++; int start, len; line[strlen(line)-1] = '\0'; if (!process_seg(line, args)) fputs(line,outputf); else { char form[MAX_FORM]; words_count++; tab.clear(); getfield(line,input_field_prefix,form); if (form==NULL) continue;//BZDURA guess.ana(form, tab); if ((tab.count()==0) && (!args.no_fail_flag)) // no guesses - analysis was unsuccessful fputs(line, failedf); else { // if (copy_processed) // fputs(line, stdout); // continue; // } // we've got some guesses. Do we want to print it? // if (args.only_fail_flag) // continue; float last_weight=0; int i=0; int count=0; unsigned first=1; char* parms_end = parms; char last_lemma[MAX_LINE]; count = 1; while (count < tab.count() && count <= guess_count) if (first || tab[count].w_suf() >= cut_off && tab[count].w_suf() >= delta * last_weight) { first=0; last_weight = tab[i].w_suf(); count++; } else break; // drukujemy count pierwszych z tab if(one_line) { char* descp=desc; for (int i=0; i< count; ++i) { descp += sprintf(descp," %s%s,%s", output_field_prefix, tab[i].lemma(), tab[i].descr()); if(weights) descp += sprintf(descp,":%d",(int)tab[i].w_suf()); } strcpy(outline,line); outline[strlen(outline)-1]='\0'; strcat(outline,desc); strcat(outline,"\n"); fputs(outline, outputf); if (copy_processed) fputs(line,outputf); } else if(one_field) { char* descp=desc; for (int i=0; i< count; ++i) if(i==0) { descp += sprintf(descp," %s%s,%s", output_field_prefix, tab[i].lemma(), tab[i].descr()); if(weights) descp += sprintf(descp,":%d",(int)tab[i].w_suf()); } else { if(strcmp(tab[i].lemma(),tab[i-1].lemma())==0) descp += sprintf(descp,",%s",tab[i].descr()); else descp += sprintf(descp,";%s,%s",tab[i].lemma(),tab[i].descr()); if(weights) descp += sprintf(descp,":%d",(int)tab[i].w_suf()); } strcpy(outline,line); outline[strlen(outline)-1]='\0'; strcat(outline,desc); strcat(outline,"\n"); fputs(outline, outputf); if (copy_processed) fputs(line,outputf); } else { for (int i=0; i< tab.count(); ++i) { // kolejne opisy - kolejne linie. char* descp=desc; descp += sprintf(desc, " %s%s,%s\n", output_field_prefix, tab[i].lemma(), tab[i].descr()); if(weights) descp += sprintf(descp,":%d",(int)tab[i].w_suf()); strcpy(outline,line); outline[strlen(outline)-1]='\0'; strcat(outline,desc); fputs(outline, outputf); } if (copy_processed) fputs(line,outputf); } } } if(args.interactive_flag) fflush(outputf), fflush(failedf); } cmdline_parser_free(&args); } // while ((i=tab.next()) != -1 && count++