Source code for scripts.evaluate_db

#!/usr/bin/env python3
"""
The evaluation software for UCCA layer 1.
"""

from argparse import ArgumentParser

from ucca import convert, constructions
from ucca.evaluation import evaluate
from ucca_db import api


[docs]def main(args): keys = [args.guessed, args.ref] xmls = api.get_by_xids(db_name=args.db_filename, host_name=args.host, xids=keys) if args.from_xids else \ api.get_xml_trees(db_name=args.db_filename, host_name=args.host, pid=args.pid, usernames=keys) guessed, ref = [convert.from_site(x) for x in xmls] if args.units or args.fscore or args.errors: evaluate(guessed, ref, units=args.units, fscore=args.fscore, errors=args.errors, constructions=args.constructions, verbose=True)
if __name__ == '__main__': argparser = ArgumentParser(description="Evaluate passages on UCCA DB") argparser.add_argument("--db", "-d", required=True, dest="db_filename", help="the db file name") argparser.add_argument("--host", "--hst", help="the host name") group = argparser.add_mutually_exclusive_group() group.add_argument("-p", "--pid", type=int, help="the passage ID") group.add_argument("-x", "--from_xids", action="store_true", help="interpret the ref and the guessed parameters as Xids in the db") argparser.add_argument("--guessed", "-g", required=True, help="if a db is defined - the username for the guessed annotation; " "else - the xml file name for the guessed annotation") argparser.add_argument("-r", "--ref", required=True, help="if a db is defined - the username for the reference annotation; " "else - the xml file name for the reference annotation") argparser.add_argument("-u", "--units", action="store_true", help="the units the annotations have in common, and those each has separately") argparser.add_argument("-f", "--fscore", action="store_true", help="outputs the traditional P,R,F instead of the scene structure evaluation") argparser.add_argument("-e", "--errors", action="store_true", help="prints the error distribution according to its frequency") constructions.add_argument(argparser) main(argparser.parse_args())