Exemple #1
0
def test_topdown_walk():
    assert list(mp.walk(m0, method='top-down')) == []
    assert list(mp.walk(m1, method='top-down')) == [(0, 10000, ':/H>')]
    assert list(mp.walk(m2,
                        method='top-down')) == [(0, 10003, ':/H>'),
                                                (10003, 10002, ':ARG1/NEQ>')]
    assert list(mp.walk(m2, start=10001,
                        method='top-down')) == [(10001, 10002, ':ARG1/EQ>')]
    assert list(mp.walk(m3,
                        method='top-down')) == [(0, 10004, ':/H>'),
                                                (10004, 10003, ':ARG1/NEQ>')]
Exemple #2
0
def test_headed_walk():
    assert list(mp.walk(m0)) == []
    assert list(mp.walk(m1)) == [(0, 10000, ':/H>')]
    assert list(mp.walk(m2)) == [(0, 10003, ':/H>'),
                                 (10003, 10002, ':ARG1/NEQ>'),
                                 (10002, 10001, '<ARG1/EQ:'),
                                 (10002, 10000, '<RSTR/H:')]
    assert list(mp.walk(m2, start=10002)) == [(10002, 10001, '<ARG1/EQ:'),
                                              (10002, 10000, '<RSTR/H:')]
    assert list(mp.walk(m3)) == [(0, 10004, ':/H>'),
                                 (10004, 10003, ':ARG1/NEQ>'),
                                 (10003, 10001, '<ARG1/EQ:'),
                                 (10003, 10002, '<ARG1/EQ:'),
                                 (10003, 10000, '<RSTR/H:')]
Exemple #3
0
def test_bottomup_walk():
    assert list(mp.walk(m0, method='bottom-up')) == []
    assert list(mp.walk(m1, method='bottom-up')) == []
    assert list(mp.walk(m1, start=10000,
                        method='bottom-up')) == [(10000, 0, '</H:')]
    assert list(mp.walk(m2, start=10002,
                        method='bottom-up')) == [(10002, 10001, '<ARG1/EQ:'),
                                                 (10002, 10003, '<ARG1/NEQ:'),
                                                 (10003, 0, '</H:'),
                                                 (10002, 10000, '<RSTR/H:')]
    assert list(mp.walk(m3, start=10003,
                        method='bottom-up')) == [(10003, 10001, '<ARG1/EQ:'),
                                                 (10003, 10002, '<ARG1/EQ:'),
                                                 (10003, 10004, '<ARG1/NEQ:'),
                                                 (10004, 0, '</H:'),
                                                 (10003, 10000, '<RSTR/H:')]
Exemple #4
0
def semantic_test_result(prof_path):
    # todo: consider i-wf
    res =dict([
        ('i-ids', set()),
        ('result', 0), #
        ('no-mrs', 0), #
        ('bad-mrs', 0), #
        ('disconnected', 0), # connected MRS
        ('ill-formed', 0), # well-formed MRS
        ('non-headed', 0),
        ('error', 0)
        # ('scope', 0), # MRSs that scope well
        # ('headed', 0) # fully headed MRSs (can be tree-ified)
    ])
    prof = itsdb.ItsdbProfile(prof_path, index=False)

    for row in prof.join('parse', 'result'):
        iid, rid = row['parse:i-id'], row['result:result-id']
        mrs = row['result:mrs']

        res['i-ids'].add(iid)
        res['result'] += 1

        faults = []
        if mrs:
            try:
                m = simplemrs.loads_one(mrs)
                if not m.is_well_formed():
                    faults.append('ill-formed')
                if not m.is_connected():
                    faults.append('disconnected')
                headed_nids = [n for _, n, _ in mp.walk(m) if n != 0]
                if set(headed_nids) != set(m.nodeids()):
                    faults.append('non-headed')
            except XmrsError:
                faults.append('bad-mrs')
            except:
                faults.append('error')
        else:
            faults.append('no-mrs')
        if faults:
            info('{iid}-{rid}\t{faults}'
                 .format(iid=iid, rid=rid, faults=' '.join(faults)))
            if 'error' in faults:
                debug(mrs)
            for fault in faults:
                res[fault] += 1
        else:
            debug('{iid}-{rid}'.format(iid=iid, rid=rid))
    return res