def main(args): for spec in read_specs(args, converters=FROM_FORMAT): scores = [] if not args.verbose: spec.passages = tqdm( spec.passages, unit=" passages", desc="Parsing " + (spec.out_dir if spec.out_dir != "." else spec.lang)) for passage, parsed in parse(spec.passages, spec.lang, spec.udpipe, args.verbose): map_labels(parsed, args.label_map) normalize(parsed, extra=True) if args.write: write_passage(parsed, args) if args.evaluate: evaluator = EVALUATORS.get(args.output_format) converter = TO_FORMAT.get(args.output_format) if converter is not None: passage, parsed = map(converter, (passage, parsed)) if evaluator is not None: scores.append( evaluator.evaluate(parsed, passage, verbose=args.verbose > 1)) if scores: Scores(scores).print()
def main(args): for passages, out_dir, lang in read_specs(args): scores = [] if not args.verbose: passages = tqdm(passages, unit=" passages", desc="Parsing " + out_dir) for passage, parsed in ANNOTATORS[args.parser](passages, lang, args.verbose): if args.write: write_passage(parsed, args) else: map_labels(parsed, args.label_map) if args.evaluate: evaluator = EVALUATORS[args.output_format] _, converter = CONVERTERS[args.output_format] if converter is not None: passage, parsed = map(converter, (passage, parsed)) scores.append(evaluator.evaluate(parsed, passage, verbose=args.verbose > 1)) if scores: Scores(scores).print()
if __name__ == "__main__": argparser = ArgumentParser(description="Visualize the given passages as graphs.") argparser.add_argument("passages", nargs="+", help="Passages in any format") argparser.add_argument("--tikz", action="store_true", help="print tikz code rather than showing plots") argparser.add_argument("--out-dir", help="directory to save figures in (otherwise displayed immediately)") group = argparser.add_mutually_exclusive_group() group.add_argument("--no-normalize", action="store_false", dest="normalize", help="do not normalize passage") group.add_argument("-e", "--extra-normalization", action="store_true", help="more normalization rules") argparser.add_argument("--label-map", help="CSV file specifying mapping of input edge labels to output edge labels") argparser.add_argument("-i", "--node-ids", action="store_true", help="print tikz code rather than showing plots") args = argparser.parse_args() if args.out_dir: os.makedirs(args.out_dir, exist_ok=True) for passage in get_passages_with_progress_bar(args.passages, desc="Visualizing", converters=FROM_FORMAT): map_labels(passage, args.label_map) if args.normalize: normalize(passage, extra=args.extra_normalization) if args.tikz: tikz = visualization.tikz(passage, node_ids=args.node_ids) if args.out_dir: with open(os.path.join(args.out_dir, passage.ID + ".tikz.txt"), "w") as f: print(tikz, file=f) else: with tqdm.external_write_mode(): print(tikz) else: plt.figure(figsize=(19, 10)) visualization.draw(passage, node_ids=args.node_ids) if args.out_dir: plt.savefig(os.path.join(args.out_dir, passage.ID + ".png"))