|
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; |
|
|