//############################################################################################################ static int process_some_linkages(Sentence sent, Parse_Options opts , int num ,char * tmp_path,char * file_name) //############################################################################################################ { int c; int i, num_displayed, num_to_query; Linkage linkage; double corpus_cost; if (verbosity > 0) print_parse_statistics(sent, opts); if (!parse_options_get_display_bad(opts)) { num_to_query = MIN(sentence_num_valid_linkages(sent), DISPLAY_MAX); } else { num_to_query = MIN(sentence_num_linkages_post_processed(sent), DISPLAY_MAX); } for (i=0, num_displayed=0; i<num_to_query; i++) { /*###########################*/ if (i==num) { /*###########################*/ if ((sentence_num_violations(sent, i) > 0) && (!parse_options_get_display_bad(opts))) { continue; } linkage = linkage_create(i, sent, opts); if (verbosity > 0) { if ((sentence_num_valid_linkages(sent) == 1) && (!parse_options_get_display_bad(opts))) { // fprintf(stdout, " Unique linkage, "); } else if ((parse_options_get_display_bad(opts)) && (sentence_num_violations(sent, i) > 0)) { // fprintf(stdout, " Linkage %d (bad), ", i+1); } else { // fprintf(stdout, " Linkage %d, ", i+1); } if (!linkage_is_canonical(linkage)) { // fprintf(stdout, "non-canonical, "); } if (linkage_is_improper(linkage)) { // fprintf(stdout, "improper fat linkage, "); } if (linkage_has_inconsistent_domains(linkage)) { // fprintf(stdout, "inconsistent domains, "); } corpus_cost = linkage_corpus_cost(linkage); if (corpus_cost < 0.0f) { /* fprintf(stdout, "cost vector = (UNUSED=%d DIS=%d AND=%d LEN=%d)\n", linkage_unused_word_cost(linkage), linkage_disjunct_cost(linkage), linkage_and_cost(linkage), linkage_link_cost(linkage));*/ } else { /* fprintf(stdout, "cost vector = (CORP=%6.4f UNUSED=%d DIS=%d AND=%d LEN=%d)\n", corpus_cost, linkage_unused_word_cost(linkage), linkage_disjunct_cost(linkage), linkage_and_cost(linkage), linkage_link_cost(linkage)); */ } } //################################################## process_linkage(linkage, opts,tmp_path,file_name); //################################################## // process_linkage(linkage, opts); linkage_delete(linkage); if (++num_displayed < num_to_query) { if (verbosity > 0) { // fprintf(stdout, "Press RETURN for the next linkage.\n"); } c = fget_input_char(stdin, stdout, opts); if (c != '\n') return c; } /*##################*/ } // if num /*#################*/ } return 'x'; }
void process_some_linkages(Sentence sent, Parse_Options opts) { int i, c, num_displayed, num_to_query; Linkage linkage; if (verbosity > 0) print_parse_statistics(sent, opts); if (!parse_options_get_display_bad(opts)) { num_to_query = MIN(sentence_num_valid_linkages(sent), DISPLAY_MAX); } else { num_to_query = MIN(sentence_num_linkages_post_processed(sent), DISPLAY_MAX); } for (i=0, num_displayed=0; i<num_to_query; ++i) { if ((sentence_num_violations(sent, i) > 0) && (!parse_options_get_display_bad(opts))) { continue; } linkage = linkage_create(i, sent, opts); if (verbosity > 0) { if ((sentence_num_valid_linkages(sent) == 1) && (!parse_options_get_display_bad(opts))) { fprintf(stdout, " Unique linkage, "); } else if ((parse_options_get_display_bad(opts)) && (sentence_num_violations(sent, i) > 0)) { fprintf(stdout, " Linkage %d (bad), ", i+1); } else { fprintf(stdout, " Linkage %d, ", i+1); } if (!linkage_is_canonical(linkage)) { fprintf(stdout, "non-canonical, "); } if (linkage_is_improper(linkage)) { fprintf(stdout, "improper fat linkage, "); } if (linkage_has_inconsistent_domains(linkage)) { fprintf(stdout, "inconsistent domains, "); } fprintf(stdout, "cost vector = (UNUSED=%d DIS=%d AND=%d LEN=%d)\n", linkage_unused_word_cost(linkage), linkage_disjunct_cost(linkage), linkage_and_cost(linkage), linkage_link_cost(linkage)); } process_linkage(linkage, opts); linkage_delete(linkage); if (++num_displayed < num_to_query) { if (verbosity > 0) { fprintf(stdout, "Press RETURN for the next linkage.\n"); } if ((c=fget_input_char(stdin, stdout, opts)) != '\n') { ungetc(c, stdin); input_pending = TRUE; break; } } } }