Exemple #1
0
def test_from_dmrs(dogs_bark):
    from delphin import dmrs
    m = mrs.MRS(**dogs_bark)
    d = dmrs.DMRS(
        top=10002,
        index=10002,
        nodes=[
            dmrs.Node(10000, 'udef_q'),
            dmrs.Node(10001, '_dog_n_1', type='x',
                      properties={'NUM': 'pl'}),
            dmrs.Node(10002, '_bark_v_1', type='e',
                      properties={'TENSE': 'pres'})],
        links=[
            dmrs.Link(10000, 10001, 'RSTR', 'H'),
            dmrs.Link(10002, 10001, 'ARG1', 'NEQ')])
    _m = mrs.from_dmrs(d)

    # Issue #248
    labels = set(ep.label for ep in _m.rels)
    hcons = {hc.hi: hc.lo for hc in _m.hcons}
    assert _m.top not in labels
    assert _m.top in hcons
    assert hcons[_m.top] in labels
    # ensure equivalency
    assert mrs.is_isomorphic(m, _m)

    # try with no hook
    d.top = None
    d.index = None
    # it won't be isomorphic, just check for errors
    _m = mrs.from_dmrs(d)
    assert _m.top is None
    assert _m.index is None
    assert len(_m.rels) == 3
    assert len(_m.hcons) == 1
Exemple #2
0
 def test_sortinfo(self):
     n = dmrs.Node(1, '_dog_n_1')
     assert n.sortinfo == {}
     n = dmrs.Node(1, '_dog_n_1', type='x')
     assert n.sortinfo == {'cvarsort': 'x'}
     n = dmrs.Node(1, '_dog_n_1', properties={'NUM': 'sg'})
     assert n.sortinfo == {'NUM': 'sg'}
     n = dmrs.Node(1, '_dog_n_1', type='x', properties={'NUM': 'sg'})
     assert n.sortinfo == {'cvarsort': 'x', 'NUM': 'sg'}
Exemple #3
0
 def test__eq__(self):
     n = dmrs.Node(1, '_dog_n_1', type='x', properties={'NUM': 'sg'})
     assert n == dmrs.Node(2,
                           '_dog_n_1',
                           type='x',
                           properties={'NUM': 'sg'})
     assert n != dmrs.Node(
         1, '_dog_n_2', type='x', properties={'NUM': 'sg'})
     assert n != dmrs.Node(
         2, '_dog_n_1', type='e', properties={'NUM': 'sg'})
     assert n != dmrs.Node(
         2, '_dog_n_1', type='x', properties={'NUM': 'pl'})
Exemple #4
0
def dogs_bark():
    return {
        'top':
        10000,
        'index':
        10000,
        'nodes': [
            dmrs.Node(10000, '_bark_v_1_rel', type='e'),
            dmrs.Node(10001, 'udef_q_rel'),
            dmrs.Node(10002, '_dog_n_1_rel', type='x')
        ],
        'links': [
            dmrs.Link(10000, 10002, 'ARG1', 'NEQ'),
            dmrs.Link(10001, 10002, 'RSTR', 'H')
        ]
    }
Exemple #5
0
def eds_to_dmrs(eds_rep):
    node_counter = 10000
    new_node_ids = {}
    dmrs_nodes = []
    for node in eds_rep.nodes:
        new_node_ids[node.id] = node_counter
        dmrs_nodes.append(d_dmrs.Node(node_counter, node.predicate, node.type, node.properties, node.carg, node.lnk, node.surface, node.base))
        node_counter += 1

    dmrs_links = [d_dmrs.Link(new_node_ids[edge[0]], new_node_ids[edge[2]], edge[1], "") for edge in eds_rep.edges]
    return d_dmrs.DMRS(new_node_ids[eds_rep.top], new_node_ids[eds_rep.top], dmrs_nodes, dmrs_links, eds_rep.lnk, eds_rep.surface, eds_rep.identifier)
Exemple #6
0
def _mrs_to_nodes(m, id_to_nid):
    nodes = []
    for ep in m.rels:
        node_id = id_to_nid[ep.id]
        properties, type = None, None
        if not ep.is_quantifier():
            iv = ep.iv
            properties = m.properties(iv)
            type = variable.type(iv)
        nodes.append(
            dmrs.Node(node_id, ep.predicate, type, properties, ep.carg, ep.lnk,
                      ep.surface, ep.base))
    return nodes
Exemple #7
0
 def test_init(self):
     with pytest.raises(TypeError):
         dmrs.Node()
     with pytest.raises(TypeError):
         dmrs.Node(1)
     dmrs.Node(1, '_dog_n_1')
     dmrs.Node(1, '_dog_n_1', type='x')
     dmrs.Node(1, '_dog_n_1', type='x', properties={'NUM': 'sg'})
     dmrs.Node(1,
               '_dog_n_1',
               type='x',
               properties={'NUM': 'sg'},
               carg='Dog')
     dmrs.Node('1', '_dog_n_1')