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
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'}
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'})
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') ] }
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)
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
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')