Esempio n. 1
0
 def syntactic_parse(pos_list, grammar):
     parser = ViterbiParser(grammar)
     try:
         grammar.check_coverage(pos_list)
     except ValueError:
         return None
     for tree in parser.parse(pos_list):
         return tree
Esempio n. 2
0
    sentences = set()

    mod = 0

    for eq in fin:
        eq = eq.split("\t")[2]
        eq = eq.lower()
        eq = filter(lambda ch: ch in "()1234567890+-*/.;=x", eq)
        proc = ""
        for i in eq:
            proc += i
        past = False
        for sin in proc.split(";"):
            mod += 1
            if mod % 100 == 0:
                if parser.parse(sin):
                    reqReq = requests.post(url + "request/" + str(agentID) +
                                           "/",
                                           json={
                                               "state": {
                                                   "equation": {
                                                       "id": "eqn",
                                                       "value": sin,
                                                       "contentEditable": True
                                                   },
                                               },
                                           })
                    print("test input:", sin)
                    print("test output:", reqReq.json())
            if past:
                if parser.parse(past) and parser.parse(sin):
Esempio n. 3
0
                proc += i
            for sin in proc.split(";"):
                print(sin)
                sentences.add(sin)

    sents = [[c for c in s] for s in sentences]

    prob_inducer = pCFG_Grammar()

    prob_inducer.grammar = grammar

    parser = ViterbiParser(grammar)

    test = '(5-9x)-5+18=-2/7x'
    #test = '5+18=2/7x'
    for i in parser.parse([i for i in test]):
        print(i)

    print("INDUCING WEIGHTS:")

    prob_inducer.induce_weights(sentences)

    grammar = prob_inducer.grammar

    print("GRAMMAR:")
    print(grammar)

    total = 0
    gotten = 0

    parser = ViterbiParser(grammar)
Esempio n. 4
0

def tree_features(tree, path):
    ret = []
    node_str = ""
    for l in tree.leaves():
        node_str += l

    ret.append((('tree-label', path), tree.label()))
    ret.append((('value', path), node_str))

    print(len(tree))
    if len(tree) < 2:
        return ret

    left_rt = tree_features(tree[0], ('left-tree', path))
    right_rt = tree_features(tree[1], ('right-tree', path))

    return ret + left_rt + right_rt


if __name__ == "__main__":
    print(grammar)
    parser = ViterbiParser(grammar)

    sent = [c for c in "-7/2"]
    print(sent)
    for tree in parser.parse(sent):
        print(tree)
        print(tree_features(tree, 'some attribute'))