From 5939e421cd789a11338ad0aa045d9830e49c33be Mon Sep 17 00:00:00 2001 From: Michael Wayne Goodman Date: Fri, 18 May 2018 16:39:59 -0700 Subject: [PATCH] Add basic support for reading from XMT profiles --- mrs_to_penman.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) mode change 100644 => 100755 mrs_to_penman.py diff --git a/mrs_to_penman.py b/mrs_to_penman.py old mode 100644 new mode 100755 index 0187bf7..dc8fa2d --- a/mrs_to_penman.py +++ b/mrs_to_penman.py @@ -32,7 +32,7 @@ def run(args): def process(items, args): for item_id, snt, mrss in items: print('# ::id {}\n# ::snt {}'.format(item_id, snt)) - for mrs in mrss: + for mrs in mrss[:args.n]: try: print(make_penman(mrs, args)) except penman.penman.EncodeError as ex: @@ -72,19 +72,30 @@ def parse_input(in_fh, args): def read_profile(f, args): p = itsdb.ItsdbProfile(f) + mrs_dataspec = args inputs = dict((r['i-id'], r['i-input']) for r in p.read_table('item')) cur_id, mrss = None, [] - for row in p.join('parse', 'result'): - mrs = simplemrs.loads_one(row['result:mrs']) + + if p.exists('p-result'): + rows = p.read_table('p-result') + id_spec = 'i-id' + mrs_spec = 'mrs' + else: + rows = p.join('parse', 'result') + id_spec = 'parse:i-id' + mrs_spec = 'result:mrs' + + for row in rows: + mrs = simplemrs.loads_one(row[mrs_spec]) if cur_id is None: - cur_id = row['parse:i-id'] + cur_id = row[id_spec] - if cur_id == row['parse:i-id']: + if cur_id == row[id_spec]: mrss.append(mrs) else: yield (cur_id, inputs[cur_id], mrss) - cur_id, mrss = row['parse:i-id'], [mrs] + cur_id, mrss = row[id_spec], [mrs] if mrss: yield (cur_id, inputs[cur_id], mrss)