예제 #1
0
파일: main.py 프로젝트: pariafzali/penman
    def _process(t):
        """Encode tree *t* and return the string."""
        # tree transformations
        if normalize_options['make_variables']:
            t.reset_variables(normalize_options['make_variables'])
        if normalize_options['canonicalize_roles']:
            t = transform.canonicalize_roles(t, model)
        if normalize_options['rearrange'] == 'canonical':
            layout.rearrange(t, key=model.canonical_order)
        elif normalize_options['rearrange'] == 'random':
            layout.rearrange(t, key=model.random_order)

        g = layout.interpret(t, model)

        # graph transformations
        if normalize_options['reify_edges']:
            g = transform.reify_edges(g, model)
        if normalize_options['dereify_edges']:
            g = transform.dereify_edges(g, model)
        if normalize_options['reify_attributes']:
            g = transform.reify_attributes(g)
        if normalize_options['indicate_branches']:
            g = transform.indicate_branches(g, model)

        if triples:
            return codec.format_triples(g.triples,
                                        indent=bool(
                                            format_options.get('indent',
                                                               True)))
        else:
            return codec.encode(g, **format_options)
예제 #2
0
def test_canonicalize_roles_default_codec():
    parse = def_codec.parse
    norm = lambda t: canonicalize_roles(t, def_model)
    format = lambda t: def_codec.format(t, indent=None)

    t = norm(parse('(a / alpha :ARG1 (b / beta))'))
    assert format(t) == '(a / alpha :ARG1 (b / beta))'

    t = norm(parse('(a / alpha :ARG1-of-of (b / beta))'))
    assert format(t) == '(a / alpha :ARG1 (b / beta))'

    t = norm(parse('(a / alpha :mod-of (b / beta))'))
    assert format(t) == '(a / alpha :mod-of (b / beta))'
예제 #3
0
def test_canonicalize_roles_amr_codec():
    parse = amr_codec.parse
    norm = lambda t: canonicalize_roles(t, amr_model)
    format = lambda t: amr_codec.format(t, indent=None)

    t = norm(parse('(a / alpha :ARG1 (b / beta))'))
    assert format(t) == '(a / alpha :ARG1 (b / beta))'

    t = norm(parse('(a / alpha :ARG1-of-of (b / beta))'))
    assert format(t) == '(a / alpha :ARG1 (b / beta))'

    t = norm(parse('(a / alpha :mod-of (b / beta))'))
    assert format(t) == '(a / alpha :domain (b / beta))'

    t = norm(parse('(a / alpha :mod-of~1 (b / beta))'))
    assert format(t) == '(a / alpha :domain~1 (b / beta))'
예제 #4
0
def _process_in(t, model, normalize_options):
    """Encode tree *t* and return the string."""
    # tree transformations
    if normalize_options['canonicalize_roles']:
        t = transform.canonicalize_roles(t, model)

    g = layout.interpret(t, model)

    # graph transformations
    if normalize_options['reify_edges']:
        g = transform.reify_edges(g, model)
    if normalize_options['dereify_edges']:
        g = transform.dereify_edges(g, model)
    if normalize_options['reify_attributes']:
        g = transform.reify_attributes(g)
    if normalize_options['indicate_branches']:
        g = transform.indicate_branches(g, model)

    return g