ssa-perin / mtool /inspector.py
larkkin's picture
Add supporting code from perin
7daaa6b
import sys;
from graph import Graph;
def summarize(graphs, golds):
ids = None;
if golds is not None:
ids = dict();
for gold in golds:
language = gold.language();
if language not in ids: ids[language] = dict();
targets = gold.targets();
if targets is None: targets = [gold.framework];
for target in targets:
if target not in ids[language]: ids[language][target] = set();
ids[language][target].add(gold.id);
counts = dict();
seen = dict();
targets = dict();
targets["eng"] = ["eds", "ptg", "ucca", "amr", "drg"];
targets["ces"] = ["ptg"];
targets["deu"] = ["ucca", "drg"];
targets["zho"] = ["amr"];
for language in ["eng", "ces", "deu", "zho"]:
counts[language] = dict();
seen[language] = dict();
for key in targets[language]:
counts[language][key] = 0;
seen[language][key] = set();
for graph in graphs:
language = graph.language();
if language is None: language = "eng";
framework = graph.framework;
if golds is None or \
language in ids and framework in ids[language] and \
graph.id in ids[language][framework]:
counts[language][framework] += 1;
if graph.id in seen[language][framework]:
print("inspector.summarize(): ignoring duplicate {} {} graph #{}."
"".format(language, framework, graph.id),
file = sys.stderr);
else:
seen[language][framework].add(graph.id);
complete = True;
for language in ["eng", "ces", "deu", "zho"]:
for key in targets[language]:
if len(ids[language][key]) != counts[language][key]: complete = False;
counts["complete"] = complete;
return counts;