Пример #1
0
 def __call__(self, f):
     r = match(f,
               behave_(_, 'quote|引用', _, _), self.browse,
               behave_(_, 'perception|感知', _, _), lambda arg: 'perception',
               behave_(_, 'perception|感知', desc_('result|结果', _), _), lambda arg: arg.text,
               _, None
               )
     return r
Пример #2
0
def test_match_absent_part():
    f = build_anal_tree('Nós estudamos.', 'pt', 'stanza')
    f.draw()
    r = match(f, behave_(_, _1 << 'study', _2 << _,
                         _), lambda arg, v1, v2: [v1.text, v2.text],
              behave_(_, _1 << 'study', _, _), lambda arg, v1: [v1.text],
              behave_(_, _1 << 'learn', _2 << _, _),
              lambda arg, v1, v2: [v1.text, v2.text], _, None)
    assert ['estudamos'] == r
Пример #3
0
def test_match_embed_expr():
    f = build_anal_tree('We expect them to change their minds', 'en', 'stanza')
    f.draw()
    r = match(
        f,
        behave_(_, _1 << 'expect|期望', _, _,
                rel_('xcomp') == behave_(_, _2 << 'change|变', 'mind')),
        lambda arg, v1, v2: [v1.text, v2.text], _, None)
    assert ['expect', 'change'] == r
Пример #4
0
def test_match_expr():
    f = build_anal_tree('Note the output is a string', 'en', 'stanza')
    f.draw()

    r = match(f, behave_(_, _1 << 'perception|感知', _2 << _, _),
              lambda arg, v1, v2: [v1.text, v2.text], _, None)
    assert ['Note', 'string'] == r

    r = match(
        f,
        behave_(_, _1 << 'unknown', _2 << _, _),
        lambda *args: 'unknown',
        # behave_(_, 'perception|感知', _1 << desc_('result|结果', _), _),
        #       lambda arg, v1: [arg.behave.text, v1.target.text],
        behave_(_, _1 << 'perception|感知', desc_('result|结果', _), _),
        lambda arg, v1: [arg.behave.text, v1.text],
        behave_(_, _1 << 'unknown2', _2 << _, _),
        lambda *args: 'unknown2',
        _,
        None)
    assert ['Note', 'Note'] == r
    assert 0 == len(_1.reqs)
Пример #5
0
def test_match_expr():
    f = build_anal_tree('Note the output is a string', 'en', 'stanza')
    f.draw()
    r=match(f,
            behave_(_, 'perception|感知', _, _), lambda arg: 'perception',
            behave_(_, 'perception|感知', desc_('result|结果', _), _), lambda arg: arg.text,
            _, None
            )
    assert 'perception'==r

    r = match(f,
              behave_(_, 'unknown', _, _), lambda arg: 'unknown',
              # behave_(_, 'perception|感知', desc_('result|结果', _), _),
              #       lambda arg: [arg.behave.text],
              behave_(_, 'perception|感知', _1<<desc_('result|结果', _), _),
                    lambda arg, v1: [arg.behave.text, v1.target.text],
              _, None
              )
    assert ['Note', 'output'] == r
    # assert ['Note'] == r

    r = match(f/'ccomp'/'nsubj',
              'pos:noun', lambda arg: arg.text,
              _, None
              )
    assert 'output' == r

    r = match(f / 'ccomp' / 'nsubj',
              'pos:pron', lambda arg: arg.text,
              _, None
              )
    assert r is None

    r = match(f,
              behave_(_, 'perception|感知', _1<<_, _), lambda arg, v1: v1.text,
              _, None
              )
    assert 'string' == r

    r = match(f,
              behave_(_, _1<<'perception|感知', _2 << _, _), lambda arg, v1, v2: [v1.text, v2.text],
              _, None
              )
    assert ['Note', 'string'] == r
Пример #6
0
def _study(f, f_behave):
    return match(f,
                 behave_(_, _1 << 'study|学习', _2 << _, _), lambda arg, *v: wrap_behave(f_behave),
                 behave_(_, _1 << 'study|学习', _, _), lambda arg, *v: wrap_behave(f_behave),
                 _, None)