Exemplo n.º 1
0
            def parse_input(self, input):
                parses = Grammar.parse_input(self, input)
                consecutive, even, count = find_number_variables(input)

                for parse in parses:
                    if isinstance(parse.semantics, tuple):
                        parse.semantics = [parse.semantics]
                    parse.semantics.insert(0, ('numvars', count))
                    if consecutive:
                        parse.semantics.insert(0, ('consecutive', True))
                    if even == True or even == False:
                        parse.semantics.insert(0, ('even', even))
                return parses
Exemplo n.º 2
0
            def parse_input(self, input):
                parses = Grammar.parse_input(self, input)
                consecutive, even, count = find_number_variables(input)

                for parse in parses:
                    if isinstance(parse.semantics, tuple):
                        parse.semantics = [parse.semantics]
                    parse.semantics.insert(0, ('numvars', count))
                    if consecutive:
                        parse.semantics.insert(0, ('consecutive', True))
                    if even == True or even == False:
                        parse.semantics.insert(0, ('even', even))
                return parses
Exemplo n.º 3
0
    #Rule('$Person','$Loction $Person', lambda sems: (sems[1],"born("+sems[1]+") = " + sems[0])),
    Rule('$Person', '$Loction $Person', lambda sems: (sems[0], sems[1])),
    Rule('$Which', '哪个', '哪个'),
    Rule('$Person', '$Which $Person', lambda sems: sems[1]),
    Rule('$Relation', '$FwdRelation', lambda sems: (lambda arg:
                                                    (sems[0], arg))),
    Rule('$FwdRelation', '父亲', '父亲'),
    Rule('$FwdRelation', '儿子', '儿子'),
    Rule('$FwdRelation', '老公', '老公'),
    Rule('$FwdRelation', '歌曲', '歌曲'),
    Rule('$FwdRelation', '唱 的', '歌曲'),
    Rule('$De', '的', '的'),
    Rule('$Person', '谁', 'who'),
    Rule('$Equal', '是', 'Equal'),
    Rule('$Type', '$Type $Equal $Type', lambda sems:
         (sems[1], sems[0], sems[2])),
    #Rule('$Person','$Person $Relation', lambda sems: sems[1](sems[0]) )
    Rule('$Type', '$Type ?$De $Relation', lambda sems: sems[2](sems[0]))
]
grammar = Grammar(rules=rules)
query_list = [
    '谢霆锋 父亲 儿子 是 谁', '谁 是 谢霆锋 父亲 儿子', '歌唱祖国 是 谁 唱 的', '谢霆锋 父亲 儿子 是 谁',
    '谢霆锋 是 谁 的 儿子', '谁 是 谢霆锋 的 儿子', '哪个 香港 人 的 老公 是 谢贤 的 儿子', '歌唱祖国 谁 唱 的'
]
#parses = grammar.parse_input('谢霆锋 父亲 儿子 的 歌曲')
for query in query_list:
    parses = grammar.parse_input(query)

    print("###################################################")
    for parse in parses[:1]:
        print(query + " ==" + str(parse.semantics))